ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

改造BeautifulReport适用于unittest单、多线程执行,输出测试报告

2021-12-08 13:31:54  阅读:182  来源: 互联网

标签:__ 测试报告 unittest 用例 path 多线程 os self


BeautifulReport是某大神在github分享的框架,这里借花献佛了,更多使用方法参考地址:https://github.com/TesterlifeRaymond/BeautifulReport

BeautifulReport生成出的报告,一来是感觉美观,二来也基本满足项目要求,不过它自身无法满足多线程执行并输出完整的测试报告,所以也就它稍作个性化的改造了

参考某大佬的多线程执行方式

 

 

 

 

2.单个测试脚本test_a.py参考

# coding:utf-8

import unittest
from selenium import webdriver
import time

class Testaa(unittest.TestCase):
u'''测试用例a的集合'''
@classmethod
def setUpClass(cls):
cls.driver = webdriver.Firefox()

def setUp(self):
self.driver.get("https://www.cnblogs.com/yoyoketang/")


def test_01(self):
u'''用例1:用例1的操作步骤'''
t = self.driver.title
print(t)
self.assertIn("悠悠", t)


def test_02(self):
u'''用例2:用例2的操作步骤'''
t = self.driver.title
print(t)
self.assertIn("悠悠", t)

def test_03(self):
u'''用例3:用例3的操作步骤'''
t = self.driver.title
print(t)
self.assertIn("悠悠", t)

@classmethod
def tearDownClass(cls):
cls.driver.quit()

if __name__ == "__main__":
unittest.main()

 

3.run_all代码

# coding=utf-8
import unittest
from BeautifulReport import BeautifulReport
import os
from tomorrow import threads


# 获取路径
curpath = os.path.dirname(os.path.realpath(__file__))
casepath = os.path.join(curpath, "case")
if not os.path.exists(casepath):
print("测试用例需放到‘case’文件目录下")
os.mkdir(casepath)
reportpath = os.path.join(curpath, "report")
if not os.path.exists(reportpath): os.mkdir(reportpath)


def add_case(case_path=casepath, rule="test*.py"):
'''加载所有的测试用例'''
discover = unittest.defaultTestLoader.discover(case_path,
pattern=rule,
top_level_dir=None)
return discover

@threads(3)
def run(test_suit):
result = BeautifulReport(test_suit)
result.report(filename='report.html', description='测试deafult报告', log_path='report')

if __name__ == "__main__":
# 用例集合
cases = add_case()

print(cases)
for i in cases:
print(i)
run(i)


4.报告效果图

 

 

 


可以看到上面汇总报告的数据并不正确

它获取数据的是最后一次执行的测试类信息

对 BeautifulReport底层文件改一改,使它满足于整个测试集数据要求

找到ReportTestResult类,添加全局变量用来接收每次执行的测试类所有的用例数量

testcaseAll = 0
testFailall = 0

 

找到stopTestRun方法
将FIELDS['testPass'] = self.success_counter改为+=
# 保存多线程执行的用例条数
len(self.result_list)是每次执行测试类得到的用例集长度,所以想要得到多线程的数量,需要全局变量来获取每次执行的数量和
ReportTestResult.testcaseAll += len(self.result_list)

# 保存多线程执行的失败用例条数
ReportTestResult.testFailall += self.failure_count

 

 

将原先获取方式,覆盖为修改后的

 

最后,再去多线程执行,得到个报告结果,数量上就一致了

 

 

 

下篇,怎么修改BeautifulReport的测试类名,方法名

 

标签:__,测试报告,unittest,用例,path,多线程,os,self
来源: https://www.cnblogs.com/zrcccxzy/p/15660979.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有