標籤:int name 序列 方法 cas 繼承 執行個體 turn equal
對一個功能的驗證往往是需要很多多測試案例,可以把測試案例集合在一起執行,這就產生了測試套件TestSuite 的概念,它是用來組裝單個測試案例,規定用例的執行的順序,而且TestSuite也可以嵌套TestSuite。
可以通過addTest() 載入TestCase 到TestSuite 中,再返回一個TestSuite 執行個體。
樣本:將simple_test 中的用例裝載到測試套件中
suite=unittest.TestSuite() # 建立測試套件suite.addTest(simple_test(‘test_add‘)) # 添加測試案例suite.addTest(simple_test(‘test_divide‘)) # 向套件中添加用例
unittest.makeSuite根據檔案大量建立測試套件,如果一個檔案中有非常多測試案例,可以根據用例名稱的相似性建立測試套件。
unittest.makeSuite(testCaseClass, prefix)
testCaseClass <Class類型>為測試案例類的名稱
prefix <str類型>用例相似的部分名稱<str>
樣本:
suite = unittest.makeSuite(simple_test, ‘test‘) # 建立並批量載入測試用例
unittest.TestLoader()根據目錄大量建立測試套件,可以指定用例存放目錄,根據檔案名稱匹配測試案例。
注意:用例存放的子目錄中必須具備__init__.py 檔案,否則無法載入用例。
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) # 執行測試案例
unittest.TestSuite() 的常用方法
TestSuite.addTest 添加單個測試案例
suite.addTest(simple_test(‘test_add‘))
TestSuite.addTests通過序列添加測試案例
suite.addTests([simple_test(‘test_add‘),simple_test(‘test_divide‘)])
TestSuite.countTestCases() 統計測試套件中的用例個數
suite.countTestCases()
測試套件靈活運用
- 為測試案例檔案添加suite 方法,方便載入測試套件
樣本:
import unittest # 匯入unittest 包from unittest_doc.com.Calculator.Calculator import calculator # 引入需要測試的包# 所有用例需繼承TestCase類或者其子類class simple_test(unittest.TestCase): def setUp(self): print(‘@@@初始化[email protected]@@‘) 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(‘@@@結束[email protected]@@‘)def suite(): # 建立測試添加測試套件函數 suite = unittest.TestSuite() # 建立測試套件 suite.addTests([simple_test(‘test_add‘), simple_test(‘test_divide‘)])return suiteif __name__ == ‘__main__‘: runner = unittest.TextTestRunner(verbosity=2) runner.run(suite())
如上樣本:建立測試套件函數,使用時直接調用其函數,不用額外添加用例。
suite1 = unittest.TheTestSuite()suite2 = unittest.TheTestSuite()alltests = unittest.TestSuite((suite1, suite2))
Django單元測試簡單樣本