unittest_生成測試報告
測試報告為測試結果的統計即展示,是自動化測試不可或缺的一部分,利用unittest 可以生成測試報告
方式一、使用第三方 HTMLTestRunner 執行測試用例集,生成網頁版測試報告(推薦)
HTMLTestRunner是Python標准庫的unittest模塊的一個擴展,在使用該模塊之前 要下載HTMLTestRunner.py文件,並將該文件保存在python安裝路徑下的lib文件夾或者 是項目的子包中,在python代碼中通過 import HTMLTestRunner導入,即可使用。
HTMLTestRunner常用參數介紹:
stream: 配置測試報告要保存的文件路徑
title:測試報告標題
description: 測試報告的描述信
代碼示例:
# 使用discover()來實現添加執行整個目錄下所有的測試用例 import os import unittest import HTMLTestRunner import time # 獲取當前路徑 curren_path = os.path.dirname(__file__) # 獲取測試用例目錄的路徑 case_path = os.path.join(curren_path,"all_case") # 從當前路徑回到上一層路徑 # case_path = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) # 匹配測試用例路徑下的所有的測試方法 discover = unittest.defaultTestLoader.discover(start_dir=case_path, # 用例路徑 pattern="*_case*.py", top_level_dir=None) # 文件類型 # 創建主套件 main_suite = unittest.TestSuite() # 把測試用例路徑添加到主套件中 main_suite.addTest(discover) # 執行主套件里的測試用例;如果要生成測試報告,則不通過unittest.main()方法執行 # unittest.main(defaultTest="main_suite",verbosity=2) # 執行並生成測試報告 # 加個時間戳 now = time.strftime("%y-%m_%d_%H_%M_%S_",time.localtime(time.time())) # 創建html類型測試報告對象,將執行的過程寫入到file_obj中 file_obj = open("D:/pythonProject/P7_P8_Requests/" "unittest框架/test_report/" "{}test_report.html".format(now),"w+",encoding="utf-8") # 創建配置html測試報告的相關信息的對象 runner = HTMLTestRunner.HTMLTestRunner(stream=file_obj, title="第一次的測試報告", description="我是測試報告的描述信息") # 生成html測試報告;如果要生成測試報告,則不通過unittest.main()方法執行 runner.run(main_suite)
查看執行結果
配置詳細的html測試報告
在測試用例中加上注釋信息,即可在html報告中體現,能更好的展示每個用例的信息;
一、通過添加 3對雙引號:"""內容"""
通過在類的下面添加 3對雙引號 """測試類01的詳細信息""";在測試方法下面添加 3對雙引號 """test_aaa方法的詳細信息""";如下圖:
在生成的測試報告中可更好的展示每條用例的作用
二、只在測試方法中添加
self._testMethodName=設置測試用例名稱,
self._testMethodDoc=設置測試用例詳情
注意:上方下划線只有一個,不要搞錯!
在測試用例方法中添加注釋信息;如下圖
查看生成的測試報告
方式二、通過TextTestRunner()方法生成text類型的測試報告
代碼示例:
# 使用discover()來實現添加執行整個目錄下所有的測試用例 import os import unittest import HTMLTestRunner import time # 獲取當前路徑 curren_path = os.path.dirname(__file__) # 獲取測試用例目錄的路徑 case_path = os.path.join(curren_path,"all_case") # 從當前路徑回到上一層路徑 # case_path = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) # 匹配測試用例路徑下的所有的測試方法 discover = unittest.defaultTestLoader.discover(start_dir=case_path, # 用例路徑 pattern="*_case*.py", top_level_dir=None) # 文件類型 # 創建主套件 main_suite = unittest.TestSuite() # 把測試用例路徑添加到主套件中 main_suite.addTest(discover) # 執行主套件里的測試用例;如果要生成測試報告,則不通過unittest.main()方法執行 # unittest.main(defaultTest="main_suite",verbosity=2) # 生成text類型的測試報告 with open('./report/test_result.txt','w',encoding='utf-8') as file: test_runner = unittest.TextTestRunner(stream=file,descriptions="執行用例的測試報告", verbosity=2) test_runner.run(main_suite)
查看執行結果