1

我已经看过这个问题这个问题,但仍然对 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来使用它,但这会带来自己的问题。有没有更好的方法来解决这个问题?

4

0 回答 0