Как иметь различную тестовую документацию для подклассов в 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
использовать это вместо этого, но это приносит свои проблемы. Есть ли лучший способ обойти это?