使用python3和unnittest库,是否有适用于完整测试运行的设置和拆卸机制?我看到一个用于模块和类,但没有一个用于整个测试套件的运行设置和拆卸。
答案 0 :(得分:0)
我的解决方案是创建一个父类并将测试装置放入其中。其他测试类可以继承该父类。
例如
init_test.py
:
import unittest
class InitTest(unittest.TestCase):
def setUp(self):
self.user = {'id': '1'}
def tearDown(self):
self.user = None
test_a.py
:
from init_test import InitTest
class TestA(InitTest):
def test_foo(self):
self.assertEqual(self.user, {'id': '1'})
test_b.py
:
from init_test import InitTest
class TestB(InitTest):
def test_bar(self):
self.assertEqual(self.user, {'id': '1'})
test_suites.py
:
import unittest
from test_a import TestA
from test_b import TestB
if __name__ == '__main__':
test_loader = unittest.TestLoader()
test_classes = [TestA, TestB]
suites = []
for test_class in test_classes:
suite = test_loader.loadTestsFromTestCase(test_class)
suites.append(suite)
big_suite = unittest.TestSuite(suites)
unittest.TextTestRunner().run(big_suite)
单元测试结果:
..
----------------------------------------------------------------------
Ran 2 tests in 0.001s
OK
Name Stmts Miss Cover Missing
-------------------------------------------------------------------------
src/stackoverflow/54365191/init_test.py 6 0 100%
src/stackoverflow/54365191/test_a.py 4 0 100%
src/stackoverflow/54365191/test_b.py 4 0 100%
src/stackoverflow/54365191/test_suites.py 12 0 100%
-------------------------------------------------------------------------
TOTAL 26 0 100%
源代码:https://github.com/mrdulin/python-codelab/tree/master/src/stackoverflow/54365191