1承璃、HTMLTestRunner介紹
HTMLTestRunner是一個(gè)基于unittest單元測試HTML報(bào)告的第三庫狸页。
2拱镐、HTMLTestRunner的使用
-
將下載好的HTMLTestRunner解壓荒适,把HTMLTestRunner.py放入Python安裝目錄的Lib文件下慢显,
如:
F:\DevInstall\envs\python\python377\Lib
(推薦)或者
F:\DevInstall\envs\python\python377\Lib\site-packages
都可以爪模。(注:如果你有自己封裝的測試框架,也可以放在框架中荚藻,當(dāng)作工具類應(yīng)引入也行屋灌。)
將HTMLTestRunner模塊用import導(dǎo)入測試腳本文件中。
通過
open()
方法以二進(jìn)制寫模式'wb'
打開當(dāng)前目錄下的測試報(bào)告.html
应狱,如果沒有共郭,則自動創(chuàng)建。-
調(diào)用HTMLTestRunner模塊下的HTMLTestRunner類疾呻,參數(shù)說明如下:
-
stream
:指定測試報(bào)告文件 -
title
:定義測試報(bào)告的標(biāo)題 -
description
:定義測試報(bào)告的副標(biāo)題 -
verbosity
:報(bào)告的詳細(xì)程度除嘹,只有0、1岸蜗、2
尉咕,2為最詳細(xì)。
-
通過HTMLTestRunner的
run()
方法來運(yùn)行測試套件中的測試用例.
3璃岳、測試報(bào)告示例
"""
run_case.py
1.將需要執(zhí)行的測試用例,添加到測試套件中
2.將用例執(zhí)行結(jié)果生成HTML格式的測試報(bào)告
HTMLTestRunner.py文件放置在python安裝目錄中的Lib目錄中
備注:
運(yùn)行結(jié)果三種:
ok 表示用例執(zhí)行通過
F 表示用例執(zhí)行失敗
E 表示代碼錯(cuò)誤
"""
import os
import unittest
import HTMLTestRunner
import time
# 1.確定測試用例存放路徑
case_path = "./testcase"
# 2.將測試文件夾中的測試用例添加到測試套件中
discover = unittest.defaultTestLoader.discover(case_path, pattern="test*.py")
# 3.執(zhí)行測試用例并生成測試報(bào)告
# 3.1 確定測試報(bào)告存放路徑
report_path = "./report"
# 3.2 確定測試報(bào)告名稱
now = time.strftime("%Y_%m_%d %H-%M-%S")
# 測試報(bào)告文件名
report_file = report_path + "/" + now + "report.html"
# 打開文件并寫入數(shù)據(jù)
with open(report_file, "wb") as fp:
# 實(shí)例化
"""
title:報(bào)告的標(biāo)題
description:報(bào)告的描述
stream:執(zhí)行結(jié)果全部卸載該文件縱
verbosity:報(bào)告的詳細(xì)程度年缎,0.1.2 ,2為最詳細(xì)
retry:重試铃慷,這個(gè)功能是壞的单芜,不能用。
"""
runner = HTMLTestRunner.HTMLTestRunner(
title="ECShop項(xiàng)目web自動化測試報(bào)告",
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'自動化測試報(bào)告', description=u'環(huán)境配置等信息'):
"""執(zhí)行測試并生成報(bào)告"""
# 如果沒有測試報(bào)告目錄自動創(chuàng)建
for filename in os.listdir(project_dir):
if filename == "reports":
break
else:
os.mkdir(project_dir + r'\reports')
# 執(zhí)行測試用例并生成測試報(bào)告
# 1 確定測試報(bào)告存放路徑
report_path = project_dir + r'\reports'
print(report_path)
# 2 確定測試報(bào)告名稱
now = time.strftime("%Y_%m_%d_%H-%M-%S")
report_file = report_path + "\\" + now + "report.html" # 測試報(bào)告文件名
# 打開文件并寫入
with open(report_file, "wb") as fp:
# 實(shí)例化
"""
title:報(bào)告的標(biāo)題
description:報(bào)告的描述
stream:執(zhí)行結(jié)果全部卸載該文件縱
verbosity:報(bào)告的詳細(xì)程度洲鸠,0.1.2 ,2為最詳細(xì)
retry:重試馋缅,這個(gè)是壞的扒腕,不能用
"""
runner = HTMLTestRunner.HTMLTestRunner(
title=title,
description=description,
verbosity=2,
stream=fp
)
runner.run(creatsuite())
if __name__ == '__main__':
run()
"""
封裝成目錄绢淀,如果需要生成報(bào)告的測試,
直接調(diào)用該模塊中的run()方法即可袜匿。
例如:
# 引入模塊
from util import TestRunnerReport
# 執(zhí)行測試用例
TestRunnerReport.run(title='ewr',description='123131')
注意:這里只是提供一種封裝的思路更啄,僅供參考,
可以根據(jù)自己的情況按需封裝居灯。
"""