测试用例分层
引入测试用例集,将测试用例与测试集合分开
- 首先可以先在一个文件中写好测试用例模块,然后在另一个文件中导入这个模块,再使用
unittest.TestSuite类创建测试套件,然后使用这个类的addTest() 方法将需要被测试的测试用例添加到测试套件中,最后使用unittest.TextTestRunner类中的run()方法来运行suite所组装的测试用例;
- 测试用例模块
from unittest import TestCasefrom unittest import skipfrom unittest import main as main_methodclass MyTestCase(TestCase):@classmethoddef setUpClass(cls):print('setUpClass')@classmethoddef tearDownClass(cls):print('tearDownClass')def test_print1(self):print('第一个测试用例')self.assertEqual(200, 200, '测试失败')def test_print2(self):print('第一个测试用例')@skip('do not need test_print3')def test_print3(self):print('第一个测试用例')if __name__ == '__main__':main_method()
- 测试集模块
from test1 import MyTestCasefrom unittest import TestSuite, TextTestRunnersuite = TestSuite()# 在测试用例集中添加测试用例, 只添加两个测试的方法suite.addTest(MyTestCase('test_print1'))suite.addTest(MyTestCase('test_print3'))if __name__ == '__main__':# 创建测试runner,执行测试用例集runner = TextTestRunner()runner.run(suite)=========输出=============setUpClass第一个测试用例tearDownClass
我们运行这段代码,只有第一个测试用例输出,因为我们只将第一个和第三个测试用例加入到测试集中,所有第二个测试用例不会执行,而我们在第三个测试用例前面机上了skip装饰器会跳过此测试用例,所有第三个也不会执行啦。
将待测试函数、测试用例、测试用例集分开
- 将待测试函数、测试用例、测试用例集分别放在不同的文件中,先在测试用例中导入待测试函数,然后使用断言判断函数是否正确,接着在测试用例集中创健测试套件,且将测试用例加入套件里面,最后运行;
- 测试函数
def add(x, y):return x + ydef sub(x, y):return x - y
- 测试用例
from unittest import TestCasefrom unittest import skipfrom unittest import main as main_methodfrom add_sub import add, subclass MyTestCase(TestCase):@classmethoddef setUpClass(cls):print('setUpClass')@classmethoddef tearDownClass(cls):print('tearDownClass')def test_print1(self):ret = 1 + 2result = add(1, 2)self.assertEqual(result, ret, 'test_print1测试失败')def test_print2(self):print('第二个测试用例')@skip('do not need test_print3')def test_print3(self):print('第三个测试用例')if __name__ == '__main__':main_method()
- 测试用例集
from test import MyTestCasefrom unittest import TestSuite, TextTestRunnersuite = TestSuite()# 在测试用例集中添加测试用例suite.addTest(MyTestCase('test_print1'))suite.addTest(MyTestCase('test_print2'))suite.addTest(MyTestCase('test_print3'))if __name__ == '__main__':# 创建测试runner,执行测试用例集runner = TextTestRunner()runner.run(suite)========输出=========setUpClass第一个测试用例第二个测试用例tearDownClass
浙公网安备 33010602011771号