unittest.TestCase的setUp方法是否知道当前的测试用例?

时间:2015-06-01 09:00:13

标签: python unit-testing

unittest.TestCase中的setUp方法是否知道将要执行的下一个测试用例是什么?例如:

import unittest

class Tests(unittest.TestCase):
    def setUp(self):
        print "The next test will be: " + self.next_test_name()

    def test_01(self):
        pass

    def test_02(self):
        pass

if __name__ == '__main__':
    unittest.main()

此类代码应在执行时生成:

The next test will be: test_01
The next test will be: test_02

2 个答案:

答案 0 :(得分:4)

不,unittest不保证测试执行的顺序。

此外,您应该构建单元测试,而不是依赖于任何特定的顺序。如果他们需要从另一种测试方法进行某种状态设置,那么根据定义,您不再具有单元测试。

将执行的当前测试方法名称位于self._testMethodName,但使用它需要您自担风险(访问_private属性会受到破坏而不会发出警告)。不要使用它来根据特定的测试方法自定义setUp,更喜欢将需要不同设置的测试拆分为单独的测试类。

答案 1 :(得分:2)

class Tests(unittest.TestCase):
    def setUp(self):
        print "The next test will be: " + self.id()

    def test_01(self):
        pass

    def test_02(self):
        pass

if __name__ == '__main__':
    unittest.main()

将产生:

The next test will be: __main__.Tests.test_01
The next test will be: __main__.Tests.test_02