如何在pyunit中为子类提供不同的测试文档?

时间:2011-08-20 20:20:50

标签: python unit-testing python-unittest

我见过this questionthis one,但我仍然很好奇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上工作。我可以使用所需的docstring和子类TextTestRunner定义另一个局部变量来代替使用它,但这带来了自己的问题。有更好的解决方法吗?

0 个答案:

没有答案