赞
踩
1、背景:因为被测试服务器有很多限制,一秒内单页面请求只有3个/s,访问同一个页面,经常要等待4s才能保证访问不异常(异常是503,nginx配置的)
2、按一个用例文件一个报告文件,输出如下截图,最后一个是合并的报告文件
333.jpg
思路其实很简单。HTMLTestRunner.run()会返回一个result对象,报告生成用到的数据,都在result里面。我们只要把多文件跑的result集中起来,像小厨师一样,去掉头和尾,就可以下锅了。
1、Html 无法展开子项,样式问题已经解决。(展开行、展开下属行,点击概览部分)
2、问题,case的print内容错乱,尝试了几种方法还是如此(原因是HTMLTestRunner 获取当前标准输入输出作为case的output,而多线程时候print本来就不是有序的。)
3、如果忽视print内容的话,直接看case error也能分析问题的话,还是可以用的。
MergeResult运行的方法思路
1、init_rows方法 > 遍历所有result。填充html>hr数据行,run_times 变化是为了能展开当前case的tr td数据。返回slef.rows数据
2、rows_to_report方法,给case 产生的tr行(存储在slef.rows),添加表头等数据
3、组装完整html文件,写入文件
1、主要运行入口
# -*- coding: utf-8 -*-
# @Time : 2020/7/8 16:34
# @Author : gh
# @Software: PyCharm
import platform
from M_site_selenium.HTMLTestRunner import *
import sys
import os
import threadpool
import time
# 解决bat执行的路径问题
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
print(rootPath)
sys.path.append(rootPath)
current_path = os.getcwd()
current_path = r"绝对路径"
allcase = r"用例绝对路径"
if platform.platform().startswith("Linux"):
current_path = "M_site_selenium"
allcase = "M_site_selenium/case"
def create_suite():
# 不要太多其他的
discover = unittest.defaultTestLoader.discover(allcase, pattern='test*.py', top_level_dir=None)
return discover
# 所有case 结果result,存入list
all_result = []
def run_case(all_case, report_path, nth=0):
"""执行所有的用例, 并把结果写入测试报告"""
retry_count = 2
fp_temp = open(report_path, "wb")
runner = HTMLTestRunner(stream=fp_temp, verbosity=3, retry=retry_count, title=u'XX站点UI', description=u'测试用例结果' + report_path)
# 调用add_case函数返回值
res = runner.run(all_case)
# 每个结果result 存在集合中,完事时候,集中输出html
all_result.append(res)
fp_temp.close()
if __name__ == "__main__":
# 按目录获取到的cases
allcasenames = create_suite()
# 保存的.html 结果目录
if not os.path.isdir(current_path + "/report/rp2"):
os.mkdir(current_path + "/report/rp2")
time_stamp = int(time.time())
count = 0
start_time = datetime.datetime.now()
# 3线程数
task_pool = threadpool.ThreadPool(3)
lst = []
for i, j in zip(allcasenames, range(len(list(allcasenames)))):
file_path = current_path + '/report/rp2/index' + str(time_stamp) + str(count) + ".html"
count += 1
# 禁止文件路转义
file_path = file_path.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。