重复执行用例插件pytest-repeat的详细使用【pytest系列 11】

本文介绍了如何使用pytest-repeat插件在Python测试中重复执行测试用例,以帮助定位偶发性bug。通过命令行参数`--count`可以指定用例重复次数,结合`-x`选项可验证偶发问题。此外,还展示了如何通过`@pytest.mark.repeat`装饰器以及`--repeat-scope`参数控制重复执行的范围,如函数、类或模块级别。对于不兼容unittest.TestCase的情况也进行了说明。

1、前言

  • 平常在做功能测试的时候,经常会遇到某个模块不稳定,偶尔会出现一些bug,对于这种问题我们可以针对此用例反复执行多次,最终复现出问题来
  • 自动化运行用例的时候,也会出现偶然的bug,可以针对单个用例,或者针对某个模块的用例重复执行多次

2、环境要求

  • Python2.7、3.4+或PyPy
  • pytest2.8 或者更高版本

3、安装插件

pip install pytest-repeat -i https://pypi.tuna.tsinghua.edu.cn/simple

4、使用场景

场景一:重复执行

重复执行用例2次,使用命令:pytest test_01.py -s --count 2 或者 pytest test_01.py -s --count=2

场景二:重复执行直到失败

  • 如果需要验证偶现问题,可以将pytest的-xpytest-repeat结合,以强制运行程序在第一次失败时停止
    pytest --count 1000 -x test_01.py
    
  • 代码
    def test_01():
        import random
        flag = random.choice([False, True, True, True])
        print(flag)
        assert flag
    
  • 执行命令:pytest --count 100 -x test_01.py -s
  • 结果
    =========================================================================== test session starts ============================================================================
    collected 100 items                                                                                                                                                       
    
    test_01.py True
    .True
    .True
    .True
    .True
    .False
    F
    
    ================================================================================= FAILURES =================================================================================
    _____________________________________________________________________________ test_01[6-1000] ______________________________________________________________________________
    
        def test_01():
            import random
            flag = random.choice([False, True, True, True])
            print(flag)
    >       assert flag
    E       assert False
    
    test_01.py:15: AssertionError
    ====================================================
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值