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
答案 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