【pytest】重复执行用例(pytest-repeat)

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

  • 1、环境搭建

    • pip install pytest-repeat
  • 2、使用

    • 2.1:添加参数 --count=num
      • 代码参考
import pytest,sys

class Test_class:
    def test_001(self):
        a = 'hello'
        b = 'hello world'
        assert a != b
        print('测试用例--001')

    def test_002(self):
        a = 1
        b = 2
        assert a+b == 3
        print('测试用例--002')

def test_003():
    a = 'hello'
    b = 'hello world'
    assert a in b
    print('测试用例--003')
  • 重复执行两次:pytest case/demo/test_demo.py --count=2 -s
    • 从运行的用例结果看,是先重复2次test_001,再重复2次test_002,test_003。有时候我们希望执行的顺序是test_01,test_02按这样顺序重复2次,再执行test_003
    • 接下来就用到一个参数--repeat-scope
  • --repeat-scope
    • --repeat-scope类似于pytest fixture的scope参数,--repeat-scope也可以设置参数: session , module,class或者function(默认值)
    • function(默认)范围针对每个用例重复执行,再执行下一个用例
    • class 以class为用例集合单位,重复执行class里面的用例,再执行下一个
    • module 以模块为单位,重复执行模块里面的用例,再执行下一个
    • session 重复整个测试会话,即所有收集的测试执行一次,然后所有这些测试再次执行等等
    • 运行结果可知:以class为用例集合单位,重复执行class里面的用例,再执行下一个。

-:2.2:在需要重复执行的用例上使用装饰器 @pytest.mark.repeat(num)
- 类与函数都可以使用该装饰器
-

  • 2.3:重复测试直到失败(重要)
    • 测试过程中有些偶发性故障,需要一遍又一遍地运行相同的测试直到失败。您可以将pytest的-x选项与pytest-repeat结合使用,以强制测试运行器在第一次失败时停止。例如:pytest case/demo/test_demo.py::test_003 -s --count=100 -x
    • 这将尝试运行test_file.py 100次,但一旦发生故障就会停止
posted @ 2022-08-13 23:11  Tony_xiao  阅读(554)  评论(0编辑  收藏  举报