No project description provided
Project description
UniTesTReportV1.0.9
备注:
-
开发者:柠檬班—木森
-
E-mail:musen_nmb@qq.com
-
大家在使用过程中发现bug,可以联系我,以便优化解决!
-
安装命令
pip install unittestreport
一、本模在unittest上扩展的几个功能的问题
-
功能一: unittest 生成多种风格的测试html报告
-
功能二: unittest 用例多线程执行机制
-
功能三: unittest 用例失败重运行机制(1.0.9版本新增)
-
后续会持续,更新请关注项目github: https://github.com/musen123/UnitTestReport
二、unittest生成测试HTML报告
-
关于测试报告
- 本模块可以生成3个风格的测试报告 (ps:一种自己编写的,另一种风格由的BeautifulReport的报告模板稍加修改而来)
- 另外为了方便大家使用,本模块还集成了HTMLTestRunnerNew这个生成报告的模块
- 模块自带报告截图
-
关于TestRunner类初始化,以及允许方法的参数说明
class TestRunner(): """unittest运行程序""" def __init__(self, suite: unittest.TestSuite, filename="report.html", report_dir=".", title='测试报告', tester='木森', desc="木森执行测试生产的报告", templates=1 ): """ 初始化用例运行程序 :param suites: 测试套件 :param filename: 报告文件名 :param report_dir:报告文件的路径 :param title:测试套件标题 :param templates: 可以通过参数值1或者2,指定报告的样式模板,目前只有两个模板 :param tester: """
-
使用案例
import unittest from unittestreport import TestRunner # 加载测试套件 suite1 = unittest.defaultTestLoader.discover(r"C:\project\musen\case_test") # 创建运行对象 runner = TestRunner(suite1, title='木森的测试报告', filename="musen02", templates=1) # 运行测试 runner.run()
三、关于多线程执行
- 因为考虑到测试用例执行的顺序问题,本模块提供了多线程执行用例的方法式
- TestRunner.run:可以通过参数来设置启动执行线程的数量,和线程中最小的用例执行单元, thread_count:线程数量,默认位1 exec_unit: case ro class case: 以测试用例为单位开启多线程运行,不能保证用例执行的顺序问题 class:以用例类为单位开启多线程运行,可以保证用例类中的用例执行的顺序问题
def run(self, thread_count=1, exec_unit="class"):
"""
支持多线程执行
注意点:如果多个测试类共用某一个全局变量,由于资源竞争可能回出现错误
:param thread_count:线程数量,默认位1
:param exec_unit: case ro class
case: 以测试用例为单位开启多线程运行,不能保证用例执行的顺序问题
class:以用例类为单位开启多线程运行,可以保证用例类中的用例执行的顺序问题
:return:
"""
四、unittest用例重运行
关于unittest重运行机制,unittestreport中提供了两种方式,第一种局部生效的,可以自己去标记失败需要重运行的测试用例,第二种是全局的,所有的测试用例,只要运行失败都会重运行。那么接下来一个一个给大家介绍。
1、单个用例重运行
-
如果像标记单个测试用例失败重运行,库用直接使用unittestreport中的rerun来标记测试用例,rerun接收两个参数count,和interval。
- count:用来指定用例失败重运行的次数
- interval:指定每次重运行的时间间隔
-
下面有三个测试用例,其中有一个test_case_01使用了rerun进行了标记,设置的失败重运行次数为4次,每次间隔的时间2秒。
import unittest
from unittestreport import rerun
class TestClass(unittest.TestCase):
@rerun(count=4, interval=2)
def test_case_01(self):
a = 100
b = 99
assert a == b
def test_case_02(self):
a = 100
b = 101
assert a == b
-
运行上述用例
import unittest from unittestreport import TestRunner from testcase import TestClass # 导入上面写的测试用例类 # 加载测试套件 suite = unittest.defaultTestLoader.loadTestsFromTestCase(TestClass) # 执行测试用例 runner = TestRunner(suite=suite) runner.run()
2、全部用例失败重跑机制
-
关于所有的测试用例失败重跑,unittestreport中提供了一个更为简单的使用入口,直接使用unittestreport中TestRunner对象的rerun_run方法即可实现所有的用例失败重运行,rerun_run同样有两个参数,count和interval。
- count:用来指定用例失败重运行的次数
- interval:指定每次重运行的时间间隔
-
测试用例如下:
import unittest from unittestreport import rerun class TestClass(unittest.TestCase): def test_case_01(self): a = 100 b = 99 assert a == b def test_case_02(self): a = 100 b = 101 assert a == b
-
使用unittestreport的重运行机制,运行上述用例
import unittest from unittestreport import TestRunner from testcase import TestClass # 导入测试用例类 # 测试套件 suite = unittest.defaultTestLoader.loadTestsFromTestCase(TestClass) # 创建执行对象 runner = TestRunner(suite=suite) # 执行测试用例,失败重运行设置为3次,间隔时间为2秒 runner.rerun_run(count=3, interval=2)
-
执行测试可以看到失败的用例,都重复运行了三次:
五、关于邮件发送:
为了方便执行完测试之后,将测试报告发送到相关人员邮箱,本模块还集成了邮件发送的功能,
六、数据驱动
为了方便大家只要unittest数据驱动,本模块还集成了数据驱动的模式,
能够方便大家根据用例数据快速的生成测试用例
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
unittestreport-1.1.0.tar.gz
(45.4 kB
view hashes)
Built Distribution
Close
Hashes for unittestreport-1.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bf178c9a0b232be0ccc69131c06e3bec944707bc71f032483b18aec1e8d6e902 |
|
MD5 | c149de4291e01f400629e3484c07608f |
|
BLAKE2b-256 | 09b97cdac3c02281610fc0f669d0a50b6936580d5f295f394151a5f94cbe8ea8 |