前言
Selenium+Python+Unittest+HTMLTestRunner,可以生成测试报告,但多线程则会生成多分测试报告,多线程生成一个测试报告可以使用BeautifulReport。
环境必备:
· python3.6 : BeautifulReport不支持2.7
· BeautifulReport : github下载后放到/Lib/site-packages/目录下
BeautifulReport下载地址:
https://github.com/TesterlifeRaymond/BeautifulReport
使用方法:
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
__author__ = 'YinJia'
import os,sys
from multiprocessing.pool import ThreadPool
from BeautifulReport import BeautifulReport
sys.path.append(os.path.dirname(__file__))
from config import setting
import unittest,time
# 测试报告存放文件夹,如不存在,则自动创建一个report目录
if not os.path.exists(setting.TEST_REPORT):os.makedirs(setting.TEST_REPORT + '/' + "screenshot")
def add_case(test_path=setting.TEST_DIR):
"""加载所有的测试用例"""
discover = unittest.defaultTestLoader.discover(test_path, pattern='*_staA.py')
# discover = unittest.defaultTestLoader.discover(test_path, pattern='Db_jg_company_fbs_lc_sta.py')
# discover 方法筛选出来的用例,循环添加到测试套件中---多少个脚本多少个套件
return discover
def get_case_list(testunits):
return [testunit for testunit in testunits]
#BeautifulReport生成测试报告---并发会生成一个测试报告,log_path---报告存放的地址
def run(test_suit):
result = BeautifulReport(test_suit)
result.report(filename='report.html', description='2.0UI自动化测试报告', log_path= setting.TEST_REPORT)
if __name__ =="__main__":
cases = add_case()
# run_case(cases)
# 设置并发数量
threadNum = 3
# 设置多进程执行
pool = ThreadPool(threadNum)
pool.map(run, get_case_list(cases))
pool.close()
pool.join()
生成的报告:
缺点:当多线程同时运行多个.py文件的用例时,测试报告中,报告汇总和饼状图区域的统计数据不准确。
解决方式如下:
报告汇总:修改文件\python3.6\Lib\site-packages\BeautifulReport\template\template
增加修改标红部分,重新附上正确的值
如果能在template返回的resultData数据进行校正应该更好----对js不熟悉,暂未做改动,大家可以试下这种方式。
修改后可正常显示