1、HTMLTestRunner介紹
HTMLTestRunner是一個基於unittest單元測試框架生成HTML報告的第三庫。
2、HTMLTestRunner的使用
- 將下載好的HTMLTestRunner解壓,把
HTMLTestRunner.py
放入Python安裝目錄的Lib
檔案下,
如:F:\DevInstall\envs\python\python377\Lib
(推薦)
或者F:\DevInstall\envs\python\python377\Lib\site-packages
都可以。
(注:如果你有自己封裝的測試框架,也可以放在框架中,當作工具類應引入也行。) - 將HTMLTestRunner模組用
import
匯入測試指令碼檔案中。 - 通過
open()
方法以二進位制寫模式'wb'
開啟當前目錄下的測試報告.html
,如果沒有,則自動建立。 - 呼叫HTMLTestRunner模組下的HTMLTestRunner類,引數說明如下:
stream
:指定測試報告檔案title
:定義測試報告的標題description
:定義測試報告的副標題verbosity
:報告的詳細程度,只有0、1、2
,2
為最詳細。
- 通過HTMLTestRunner的
run()
方法來執行測試套件中的測試用例.
3、測試報告示例
"""
run_case.py
1.將需要執行的測試用例,新增到測試套件中
2.將用例執行結果生成HTML格式的測試報告
HTMLTestRunner.py檔案放置在python安裝目錄中的Lib目錄中
備註:
執行結果三種:
ok 表示用例執行通過
F 表示用例執行失敗
E 表示程式碼錯誤
"""
import os
import unittest
import HTMLTestRunner
import time
# 1.確定測試用例存放路徑
case_path = "./testcase"
# 2.將測試資料夾中的測試用例新增到測試套件中
discover = unittest.defaultTestLoader.discover(case_path, pattern="test*.py")
# 3.執行測試用例並生成測試報告
# 3.1 確定測試報告存放路徑
report_path = "./report"
# 3.2 確定測試報告名稱
now = time.strftime("%Y_%m_%d %H-%M-%S")
# 測試報告檔名
report_file = report_path + "/" + now + "report.html"
# 開啟檔案並寫入資料
with open(report_file, "wb") as fp:
# 例項化
"""
title:報告的標題
description:報告的描述
stream:執行結果全部解除安裝該檔案縱
verbosity:報告的詳細程度,0.1.2 ,2為最詳細
retry:重試,這個功能是壞的,不能用。
"""
runner = HTMLTestRunner.HTMLTestRunner(
title="ECShop專案web自動化測試報告",
description="ECShop登入功能",
verbosity=2,
stream=fp
)
runner.run(discover)
4、封裝成模組
# coding=utf-8
import time
import os
import unittest
import HTMLTestRunner
# 定位測試用例目錄(可以再封裝)
project_dir = os.path.abspath(os.path.dirname(os.path.abspath(__file__)) + '\..')
testcase_dir = project_dir + r"\testcase"
def creatsuite():
'''獲取測試集'''
# 搜尋測試用例
testcases = unittest.defaultTestLoader.discover(testcase_dir, pattern="test*.py", top_level_dir=None)
return testcases
def run(title=u'自動化測試報告', description=u'環境配置等資訊'):
"""執行測試並生成報告"""
# 如果沒有測試報告目錄自動建立
for filename in os.listdir(project_dir):
if filename == "reports":
break
else:
os.mkdir(project_dir + r'\reports')
# 執行測試用例並生成測試報告
# 1 確定測試報告存放路徑
report_path = project_dir + r'\reports'
print(report_path)
# 2 確定測試報告名稱
now = time.strftime("%Y_%m_%d_%H-%M-%S")
report_file = report_path + "\\" + now + "report.html" # 測試報告檔名
# 開啟檔案並寫入
with open(report_file, "wb") as fp:
# 例項化
"""
title:報告的標題
description:報告的描述
stream:執行結果全部解除安裝該檔案縱
verbosity:報告的詳細程度,0.1.2 ,2為最詳細
retry:重試,這個是壞的,不能用
"""
runner = HTMLTestRunner.HTMLTestRunner(
title=title,
description=description,
verbosity=2,
stream=fp
)
runner.run(creatsuite())
if __name__ == '__main__':
run()
"""
封裝成目錄,如果需要生成報告的測試,
直接呼叫該模組中的run()方法即可。
例如:
# 引入模組
from util import TestRunnerReport
# 執行測試用例
TestRunnerReport.run(title='ewr',description='123131')
注意:這裡只是提供一種封裝的思路,僅供參考,
可以根據自己的情況按需封裝。
"""