官方文檔地址:https://docs.python.org/zh-cn/3.7/library/unittest.html#class-and-module-fixtureshtml
Test fixture 官方文檔把這個詞翻譯成「測試腳手架」,我的理解,是啓動測試前的準備工做,根據使用API的不一樣,實如今每一個用例執行前/後、類執行前/後、模塊啓動前/後的動做。python
測試用例 檢查特定輸入的數據時的響應。併發
Test suite測試套件 用例執行的順序框架
Test runner 執行和輸出測試結果的組件less
TestEx繼承測試基類TestCase,test告訴測試運行者這個方法表示測試。不符合此命名規則的方法,執行測試時不會運行。__init__方法會執行三次,而且都是在測試用例執行前。測試
後面再補充ui
用例執行前/後須要執行的指令。spa
1.setUp()命令行
每一個用例執行前都會執行,若是此方法有問題,將會被測試框架視爲這個測試失敗,用例方法和tearDown不會被執行。若是setUp成功運行,無論用例方法結果如何,tearDown()都會被執行。線程
2.tearDown()
用例執行結束後運行。
3.setUpClass()
當測試套件遇到來自新類的測試時,將調用前一個類的tearDownClass()(若是有),而後調用這個新類的setupClass()。
若是在setUpClass期間引起異常,則不會運行該類中的測試,也不會運行tearDownClass。跳過的類將不會運行setUpClass或tearDownClass。若是該異常是SkipTest異常,則該類將被報告爲已跳過而不是錯誤。
4.tearDownClass()
運行完全部測試後
下面例子沒有執行setUpClass(),爲啥
5.setupModules()
與前面相似,不過這裏指的是模塊。若是setUpModule中引起了異常,則模塊中的任何測試都不會運行,而tearDownModule也不會運行。若是該異常是SkipTest異常,則該模塊將被報告爲已跳過而不是錯誤。
6.tearDownModules
運行完全部的測試後
1.無條件跳過@unittest.skip(reason) 無條件跳過用例或者測試類,並輸出緣由
2.@unittest.skipIf(condition, reason) condition爲真時跳過,輸出緣由
2.@unittest.skipUnless(condition, reason) condition爲假時跳過,輸出緣由
3.@unittest.expectedFailure 把測試標記爲失敗,若是測試不經過,會被認爲測試成功,反之失敗。
4.exception unittest.skipTest(reason) 引起此異常以跳過一個測試。存疑~
1.test_suit.addTest()實現執行順序
test_suit=unittest.TestSuit()
tests=[TestClass(‘testcase1),...]
test_suit.addTests(tests) # 添加case列表,或者addTest(TestClass(‘testcase1))逐個添加。非test開頭的方法也可添加進來做爲測試用例使用。
runner=unittest.TextTestRunner()
runner.run(test_suit)
2.unittest.TestLoader() 暫未展開
suit.addTests(unittest.TestLoader().loadTestsFromCase(TestClass)) 加載testCase,測試方法按照test_後面的字母順序執行
# 測試套件
suite = unittest.TestSuite()
# 測試用例加載器
loader = unittest.TestLoader()
# 把測試用例加載到測試套件中
suite.addTests(loader.loadTestsFromTestCase(TestStringMethods))
# 測試用例執行器
runner = HTMLReport.TestRunner(report_file_name='test', # 報告文件名,若是未賦值,將採用「test+時間戳」
output_path='report', # 保存文件夾名,默認「report」
title='測試報告', # 報告標題,默認「測試報告」
description='無測試描述', # 報告描述,默認「測試描述」
thread_count=1, # 併發線程數量(無序執行測試),默認數量 1
thread_start_wait=3, # 各線程啓動延遲,默認 0 s
sequential_execution=False, # 是否按照套件添加(addTests)順序執行,
# 會等待一個addTests執行完成,再執行下一個,默認 False
# 若是用例中存在 tearDownClass ,建議設置爲True,
# 不然 tearDownClass 將會在全部用例線程執行完後纔會執行。
# lang='en'
lang='cn' # 支持中文與英文,默認中文
)
# 執行測試用例套件
runner.run(suite)
未完待續