前言
前段开发出来unittestreport的第一个版本,解决unittest多线程运行用例,以及unittest生成HTML测试报告这两个功能。小伙伴们如果想使用unittest生成测试报告,以及多线程去执行unittest的测试用例可以参考之前发布的关于unittestreport使用的文章。
-
unittestreport的安装:pip install unittestreport
-
unittestreport生成HTML测试报告: http://testingpai.com/article/1595507317340
-
unittestreport多线程执行测试用例:
最近这几天又优化了unittestreport的一个版本,实现了unittest用例失败重运行的机制,那么接下来就给大家介绍一下如何使用,以及实现的原理
一、unittest用例重运行
关于unittest重运行机制,unittestreport中提供了两种方式,第一种局部生效的,可以自己去标记失败需要重运行的测试用例,第二种是全局的,所有的测试用例,只要运行失败都会重运行。那么接下来一个一个给大家介绍。
单个用例重运行
-
如果像标记单个测试用例失败重运行,库用直接使用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 = 100 assert a == b def test_case_03(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()
-
生成测试报告如下图,库用看到第一条测试用例运行了三次:
全部用例失败重跑机制
-
关于所有的测试用例失败重跑,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 = 100 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)
-
执行测试报告如下图,可以看到两个失败的用例,都重复运行了三次: