Django單元測試簡單示例

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

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('@@@初始化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))
相關文章
相關標籤/搜索