我已经看过这个问题和这个问题,但仍然对 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)
...
然后将后两个类添加到 aTestSuite
并使用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)"
这似乎是一个可怕的 hack,并且不能保证在 pyunit 的未来版本上工作。我可以使用所需的文档字符串和子类定义另一个局部变量TextTestRunner
来使用它,但这会带来自己的问题。有没有更好的方法来解决这个问题?