unittestreport 之 unittest 用例失败重运行机制

前言

很多小伙伴一直在诟病 unittest,说 unittest 相对 pytest 来说太鸡肋了,pytest 中提供了很多高级功能 unittest 中都没有。

在这里还是想为 unittest 打抱不平一下,unittest 是由 python 官方维护的官方库,官方库都是比较轻量级的,本身只实现核心的一些功能,肯定不会像 pytest 这些第三库一样根据需求,去开发一些定制的功能。

其实 unittest 也有自己的优势,学习成本低,使用起来简单也易上手。目前还是有很多测试的小伙伴在使用的,于是前段时间小编想了想,决定在 unittest 的基础上扩展开发第三方库 unittestreport,为 unittest 开发一些常用的扩展功能,来弥补 unittest 的不足。

目前准备实现的功能有:多种风格 HTML 测试报告生成、多线程运行、用例失败重跑、数据驱动、命令行启动执行测试等功能(ps:大家可以留言提需求哦)

  • unittestreport 的安装:pip install unittestreport

前段时间实现了第一个版本,unittest 生成 HTML 测试报告,以及 unittest 用例多线程运行机制,最近这几天又优化了 unittestreport 的一个版本(1.0.9 版本),实现了 unittest 用例失败重运行的机制,那么接下来就给大家介绍一下如何使用 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)

  • 执行测试报告如下图,可以看到两个失败的用例,都重复运行了三次:

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取 【100%免费无套路】 

å¨è¿éæå¥å¾çæè¿°

 全套资料获取方式:点击下方小卡片自行领取即可

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值