Как иметь различную тестовую документацию для подклассов в pyunit?

Я видел этот вопрос и этот, но мне все еще интересно, как pyunit должен работать для моего варианта использования.

Я хочу проверить один и тот же метод для нескольких входов. Для этого я создал класс с несколькими методами тестирования и двумя подклассами, которые имеют разные setUp методы.

Что-то вроде этого:

class Test_Foo(unittest.TestCase):
    # abstract class, do not actually add this to the test suite!
    def test_01_preserves(self):
        """Foo preserves bazness correctly"""
        self.assertTrue(is_preserved(self.foo.baz))
        ....
    ...

class Test_Foo_simple(Test_Foo):
    """test Foo for some simple input"""
    def setUp(self):
        self.input = ""
        self.params = {}
        self.foo = Foo(self.input, self.params)

class Test_Foo_complex(Test_Foo):
    """test Foo for some complex input"""
    def setUp(self):
        self.input = "complicated stuff"
        self.params = {"bar" : 3}
        self.foo = Foo(self.input, self.params)

...

с последующим добавлением вторых двух классов к TestSuite и запустить это с TextTestRunner,

Теперь вывод будет:

Foo preserves bazness correctly ... ok
...
Foo preserves bazness correctly ... ok
...

без очевидного способа отслеживать, какой тестовый пример выполняется в какой момент.

Как это исправить?

На данный момент я делаю добавление __init__ метод для каждого подкласса, который выглядит следующим образом:

super(Test_Foo_simple, self).__init__(self, *args, **kwds)
self._testMethodDoc = self._testMethodDoc + "(simple)"

который выглядит как ужасный взлом, и не гарантированно работать на будущих версиях pyunit. Я мог бы определить другую локальную переменную с желаемой строкой документации и подклассом TextTestRunner использовать это вместо этого, но это приносит свои проблемы. Есть ли лучший способ обойти это?

0 ответов

Другие вопросы по тегам