unittest.TestCase:通過繼承TestCase類,我們可以創建一個test,或者一組tests
unittest.TestSuite() 測試套件,使用時要將test case裝載到測試套件里
test fixtures:setup + test case + teardown,每個test case執行的時候都會運行setUp→test_case→tearDown,因此setUp和tearDown 可以用來做環境的初始化,例如:一個有關數據操作的類,setUp放鏈接數據庫,tearDown放關閉數據庫鏈接
unittest.main():使用它可以方便的將一個單元測試模塊變為可直接運行的測試腳本,main()方法使用TestLoader類來搜索所有包含在該模塊中以“test”命名開頭的測試方法,并自動執行他們。執行方法的默認順序是:根據ASCII碼的順序加載測試用例,數字與字母的順序為:0-9,A-Z,a-z。所以以A開頭的測試用例方法會優先執行,以a開頭會后執行。
TestLoader 測試用例加載器,其包括多個加載測試用例的方法。返回一個測試套件
unittest.defaultTestLoader(): 通過該類下面的discover()方法可自動根據測試目錄start_dir匹配查找測試用例文件(test*.py),并將查找到的測試用例組裝到測試套件,因此可以直接通過run()方法執行discover。用法如下:
discover=unittest.defaultTestLoader.discover(test_dir, pattern='test_*.py')
- addTest():方法是將測試用例添加到測試套件中,如下方,是將test_baidu模塊下的BaiduTest類下的test_baidu測試用例添加到測試套件。
suite = unittest.TestSuite()
suite.addTest(test_baidu.BaiduTest('test_baidu'))
加載測試套件
loadTestsFromModule(self, module) 根據給定的模塊實例來獲取測試用例套件
loadTestsFromName(self, name, module=None) 根據給定的字符串來獲取測試用例套件,字符串可以是模塊名,測試類名,測試類中的測試方法名,或者一個可調用的是實例對象
這個實例對象返回一個測試用例或一個測試套件loadTestsFromNames(self, names, module=None) 和上面功能相同,只不過接受的是字符串列表
loadTestsFromTestCase(self, testCaseClass) 根據給定的測試類,獲取其中的所有測試方法,并返回一個測試套件
運行
- run():方法是運行測試套件的測試用例,入參為suite測試套件。
runner = unittest.TextTestRunner()
runner.run(suite)
- 所有的test case 都要以 test開頭
實例:
創建測試報告
#定義一個測試套件
s=unittest.TestSuite()
#將test_api 模塊放在測試套件s中
ul=unittest.TestLoader()
s.addTest(ul.loadTestsFromModule(test_api))
#測試報告
now = time.strftime('%Y_%m_%d_%H_%M_%S')
html_report_path = '/Users/xiaolongxia/PycharmProjects/api_test/HtmlTestReport' + '/' + now + '.html'
# wb:以二進制格式打開一個文件只用于寫入。如果該文件已存在則打開文件,并從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。
fp = open(html_report_path,'wb')
runner = HTMLTestRunner(fp,title='API 測試報告')
runner.run(s)