我在使用 python setUpClass 时遇到了一些问题。
例如考虑以下情况
class MyTest(unittest.case.TestCase):
@classmethod
def setUpClass(cls):
print "Test setup"
try:
1/0
except:
raise
@classmethod
def tearDownClass(cls):
print "Test teardown"
几个问题
上面的代码是处理测试 setUpClass 异常的正确方法吗(通过引发它以便 python unittest 可以处理它),有 fail()、skip() 方法,但这些只能是由测试实例而不是测试类使用。
当setUpClass出现异常时,如何保证tearDownClass运行(unittest不运行,是否需要手动调用)。
最佳答案
你可以调用 tearDownClass
作为 Jeff 指出的异常,但你也可以实现 __del__(cls)
方法:
import unittest
class MyTest(unittest.case.TestCase):
@classmethod
def setUpClass(cls):
print "Test setup"
try:
1/0
except:
raise
@classmethod
def __del__(cls):
print "Test teardown"
def test_hello(cls):
print "Hello"
if __name__ == '__main__':
unittest.main()
将有以下输出:
Test setup
E
======================================================================
ERROR: setUpClass (__main__.MyTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "my_test.py", line 8, in setUpClass
1/0
ZeroDivisionError: integer division or modulo by zero
----------------------------------------------------------------------
Ran 0 tests in 0.000s
FAILED (errors=1)
Test teardown
注意:您应该知道 __del__
方法将在程序执行结束时被调用,如果您有更多,这可能不是您想要的不止一个测试类。
希望对你有帮助
关于python - 如果 setUpClass 抛出异常,如何使 python 单元测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11976914/