前提:
1.全部的测试用例脚本均放在web_testcase文件夹下
2.生成测试报告的文件HTMLTestRunner_cn.py(转自GitHub - GoverSky/HTMLTestRunner_cn: HTMLTestRunner 汉化版,同时支持python 2和3,增加截图展示功能,失败重试)
具体代码如下:
# coding=utf-8
import unittest,os,time
import HTMLTestRunner_cn
import threading
import send_email
import sys
sys.path.append('..')
casepath = os.path.dirname(os.path.abspath('.'))+"/web_testcase"
if not os.path.exists(casepath):
print("测试用例需放到‘case’文件目录下")
os.mkdir(casepath)
reportpath = os.path.dirname(os.path.abspath('.'))+"/result/report"
if not os.path.exists(reportpath): os.mkdir(reportpath)
# 确定测试用例以及测试报告所在文件夹
def allcase():
discover = unittest.defaultTestLoader.discover(casepath,
pattern = "test*.py",
top_level_dir= None)
return discover
# 获取全部测试用例文件
def runcase(suite):
current_time = time.strftime("%Y-%m-%d-%H-%M")
report_name = current_time + "_Test_Result.html"
htmlreportpath = os.path.join(reportpath,report_name)
fp = open(htmlreportpath,"wb")
proclist=[]
s=0
for i in suite:
runner = HTMLTestRunner_cn.HTMLTestRunner(title="测试报告"+ str(s+1),
description = '并发执行测试用例:' ,
stream = fp,
verbosity=2,
retry=1,
save_last_try=True)
proc = threading.Thread(target=runner.run,args=(i,))
proclist.append(proc)
s=s+1
for proc in proclist:
proc.start()
for proc in proclist:
proc.join()
fp.close()
send_email.send_email(htmlreportpath)
if __name__ == "__main__":
runtmp = allcase()
runcase(runtmp)
上述代码,虽然能减少测试用例运行时间且成功的执行并生成测试报告,但是仍有不足之处:
1.生成的测试报告页面,每个测试用例文件均分开显示(如果可以将全部测试)
2.命令行仅打印出了某个测试用例文件中测试用例的执行结果,其他的均没有在cmd窗口显示测试结果(未知原因)
网友评论