結合python+unittest+HTMLTestRunner自動生成測試報告:html
開發構思:python
一、在測試方法相同時,測試多個不一樣參數的測試狀況;(unittest自動根據參數條數生成多個的方法)
json
二、可統計測試狀況;ide
三、測試狀況數據過濾;測試
四、日誌記錄失敗的測試方法;spa
測試報告預覽:日誌
resultHtml.py文件,自動測試指定目錄下的文件code
1 #coding=utf-8 2 from lib.HTMLTestRunner import HTMLTestRunner 3 import time 4 import unittest 5 import os 6 #from dataExcel import dataExcel 7 import time 8 #定義測試用例的目錄爲當前目錄 9 test_dir=os.path.dirname(os.path.realpath(__file__)) 10 test_dir1 = test_dir +'\\resultHtmlFile' 11 discover = unittest.defaultTestLoader.discover(test_dir,pattern = 'testExcelType*.py') 12 13 if __name__=="__main__": 14 15 #按照必定的格式獲取當前的時間 16 now = time.strftime("%Y-%m-%d %H-%M-%S") 17 18 #定義報告存放路徑 19 filename =test_dir1 + '/' + now + 'test_result.html' 20 21 fp = open(filename,"wb") 22 #以二進制格式打開一個文件只用於寫入。若是該文件已存在則將其覆蓋。若是該文件不存在,建立新文件。 23 #定義測試報告 24 runner = HTMLTestRunner(stream = fp, 25 title = u"接口測試報告", 26 description = u"測試用例執行狀況:") 27 #運行測試 28 runner.run(discover) 29 fp.close() #關閉報告文件
testExcelType.py文件,執行測試方法
1 import unittest 2 import time 3 import requests 4 from data.dataExcelType import dataExcelType 5 import os 6 # 導入自定義的logging配置 7 from logs.log import Logger 8 import time 9 import json 10 from common.login import Login 11 12 class TestDemo(unittest.TestCase): 13 cur_path=os.path.dirname(os.path.realpath(__file__)) 14 xlsxName = r'\inteData.xlsx' 15 16 dataExcelType = dataExcelType(cur_path,cur_path_json,xlsxName,0) 17 18 19 #爲批量生成測試用例提供數據 20 @parameterized.expand(dataExcelType) 21 22 def testcase(self,a): 23 u'''測試接口''' 24 25 logs = Logger().get_logger() 26 logs.info("開始執行用例:-------------- %s ,%s" % (a['params'],a['result'])) 27 28 time.sleep(0.5) 29 30 #要測試的操做代碼 31 #.... 32 33 if __name__ == "__main__": 34 35 unittest.main(verbosity=2)