Ответ 1
Вы можете вызвать tearDownClass
для исключения, как указывает Джефф, но вы также можете реализовать метод __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__
будет вызываться в конце выполнения программы, что, возможно, не то, что вы хотите, если у вас более одного тестового класса.
Надеюсь, что это поможет