Selenium+Python+Unittest多线程生成报告---BeautifulReport优化

前言       

       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()

生成的报告:

Selenium+Python+Unittest多线程生成报告---BeautifulReport优化_第1张图片

缺点:当多线程同时运行多个.py文件的用例时,测试报告中,报告汇总和饼状图区域的统计数据不准确。

解决方式如下:

报告汇总:修改文件\python3.6\Lib\site-packages\BeautifulReport\template\template

增加修改标红部分,重新附上正确的值

Selenium+Python+Unittest多线程生成报告---BeautifulReport优化_第2张图片

Selenium+Python+Unittest多线程生成报告---BeautifulReport优化_第3张图片

Selenium+Python+Unittest多线程生成报告---BeautifulReport优化_第4张图片

如果能在template返回的resultData数据进行校正应该更好----对js不熟悉,暂未做改动,大家可以试下这种方式。

修改后可正常显示

Selenium+Python+Unittest多线程生成报告---BeautifulReport优化_第5张图片

你可能感兴趣的:(python)