對一個功能的驗證每每是須要不少多測試用例,能夠把測試用例集合在一塊兒執行,這就產生了測試套件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))