整个测试套件的Python3单元测试设置和拆除

时间:2019-01-25 12:17:00

标签: python python-3.x python-unittest

使用python3和unnittest库,是否有适用于完整测试运行的设置和拆卸机制?我看到一个用于模块和类,但没有一个用于整个测试套件的运行设置和拆卸。

1 个答案:

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