对一个功能的验证每每是须要不少多测试用例,能够把测试用例集合在一块儿执行,这就产生了测试套件TestSuite 的概念,它是用来组装单个测试用例,规定用例的执行的顺序,并且TestSuite也能够嵌套TestSuite。python
能够经过addTest() 加载TestCase 到TestSuite 中,再返回一个TestSuite 实例。ide
示例:将simple_test 中的用例装载到测试套件中函数
suite=unittest.TestSuite() # 建立测试套件 suite.addTest(simple_test('test_add')) # 添加测试用例 suite.addTest(simple_test('test_divide')) # 向套件中添加用例
unittest.makeSuite根据文件批量建立测试套件,若是一个文件中有很是多测试用例,能够根据用例名称的类似性建立测试套件。测试
unittest.makeSuite(testCaseClass, prefix)ui
testCaseClass <Class类型>为测试用例类的名称spa
prefix <str类型>用例类似的部分名称<str>code
示例:继承
suite = unittest.makeSuite(simple_test, 'test') # 建立并批量加载测试用例
unittest.TestLoader()根据目录批量建立测试套件,能够指定用例存放目录,根据文件名称匹配测试用例。it
注意:用例存放的子目录中必须具有__init__.py 文件,不然没法加载用例。class
unittest.TestLoader().discover(start_dir, pattern='test*.py', top_level_dir=None)
start_dir 要测试的模块名或测试用例目录。
pattern='test*.py' 表示用例文件名的匹配原则。星号“*”表示任意多个字符。
top_level_dir=None 测试模块的顶层目录。None <=> 测试用例不是放在多级目录中
示例:
suites=unittest.defaultTestLoader.discover('./testDirectory, pattern='*_test.py')
或
suites=unittest.TestLoader().discover('./testDirectory, pattern='*_test.py')
建立测试套件后,执行测试用例使用unittest.TextTestRunner().run(TestSuite)
示例:执行加载simple_test用例的测试套件
runner = unittest.TextTestRunner() runner.run(suite) # 执行测试用例
TestSuite.addTest 添加单个测试用例
suite.addTest(simple_test('test_add'))
TestSuite.addTests经过序列添加测试用例
suite.addTests([simple_test('test_add'),simple_test('test_divide')])
TestSuite.countTestCases() 统计测试套件中的用例个数
suite.countTestCases()
示例:
import unittest # 导入unittest 包 from unittest_doc.com.Calculator.Calculator import calculator # 引入须要测试的包 # 全部用例需继承TestCase类或者其子类 class simple_test(unittest.TestCase): def setUp(self): print('@@@初始化test_simple@@@') self.a = calculator(1, 2) def test_add(self): print('---测试用例test_simple add---') self.assertEqual(self.a.minus(), -1, '两值不相等') self.assertEqual(self.a.add(), 3, '两值不相等') self.assertNotEqual(self.a.divide(), 1, '两值不相等') def test_divide(self): print('---测试用例test_simple divide---') self.assertEqual(self.a.divide(), 0.5) def tearDown(self): print('@@@结束test_simple@@@') def suite(): # 建立测试添加测试套件函数 suite = unittest.TestSuite() # 创建测试套件 suite.addTests([simple_test('test_add'), simple_test('test_divide')]) return suite if __name__ == '__main__': runner = unittest.TextTestRunner(verbosity=2) runner.run(suite())
如上示例:建立测试套件函数,使用时直接调用其函数,不用额外添加用例。
suite1 = unittest.TheTestSuite() suite2 = unittest.TheTestSuite() alltests = unittest.TestSuite((suite1, suite2))