博客
关于我
pytest:4种方法实现 - 重复执行用例 - 展示迭代次数
阅读量:799 次
发布时间:2023-03-05

本文共 2285 字,大约阅读时间需要 7 分钟。

重复执行测试用例是确保代码稳定性和可靠性的重要手段。本文将介绍四种实现重复执行测试用例的方法,并展示当前迭代次数和剩余执行次数,帮助开发者更好地追踪测试执行过程,提升测试效率。

四种实现方法解析

方法一:使用自定义装饰器

通过创建自定义装饰器,可以轻松实现测试用例的重复执行。这种方法适用于需要在函数级别控制迭代次数的场景。

import pytestimport datetimefrom logger import logdef repeat(count):    def decorator(func):        def wrapper(*args, **kwargs):            for i in range(count):                log.info(f"当前迭代次数: {i + 1}, 剩余次数: {count - i - 1}")                func(*args, **kwargs)        return wrapper    return decoratorclass TestDemo1(object):    count = 3    @repeat(count)    def test_01(self):        log.info(f"迭代时间: {datetime.datetime.now()}:{self.count}")        pytest.assume(3 > 2)

方法二:使用 pytest 的参数化

Pytest 提供了 @pytest.mark.parametrize 装饰器,适用于将测试用例参数化处理。

import pytestimport datetimefrom logger import logclass TestDemo2(object):    count = 3    @pytest.mark.parametrize("iteration", range(count))    def test_02(self, iteration):        remaining = self.count - iteration - 1        log.info(f"当前迭代次数: {iteration + 1}, 剩余次数: {remaining}")        pytest.assume(3 > 2)

方法三:在测试方法内部使用循环

直接在测试方法内部使用循环来控制迭代次数,无需依赖外部装饰器。

import pytestimport datetimefrom logger import logclass TestDemo3(object):    count = 3    def test_03(self):        for i in range(self.count):            remaining = self.count - i - 1            log.info(f"当前迭代次数: {i + 1}, 剩余次数: {remaining}")            pytest.assume(3 > 2)

方法四:使用类参数

通过类参数来控制迭代次数,可以在测试类中统一管理重复执行的次数。

import pytestimport datetimefrom logger import logclass TestDemo4(object):    count = 3    current_count = 0    @pytest.mark.repeat(count)    def test_04(self):        TestDemo4.current_count += 1        log.info(f"当前迭代次数: {TestDemo4.current_count}, 剩余次数: {self.count - TestDemo4.current_count}")        pytest.assume(3 > 2)

程序入口:main.py

import osimport timeimport pytestif __name__ == "__main__":    now = time.strftime("%Y_%m_%d_%H_%M_%S")    pytest.main(["-s", "./tests", '--alluredir', f'./report/xml_{now}'])    cmd = rf'allure generate ./report/xml_{now} -o ./report/report_{now} --clean'    print(f"{cmd}")    os.system(cmd)

注意事项

  • 避免全局变量冲突:在方法四中使用类变量时,建议为每个测试类定义独特的变量名称,以防止多个测试类的变量相互干扰。
  • 性能考虑:在大量重复执行的情况下,频繁的日志输出可能会影响性能。可以根据实际需求调整日志记录频率。
  • 测试独立性:确保每次迭代都是独立的,避免相互影响。可以在迭代前的每次执行中重置测试环境。
  • 总结

    以上四种方法各有优劣,选择哪种方法取决于具体需求。个人推荐采用方法四(使用类参数),因为它提供了更直观的控制和管理方式。希望这些方法能帮助开发者更好地管理测试流程,提升代码稳定性和测试效率。

    转载地址:http://hnafk.baihongyu.com/

    你可能感兴趣的文章
    Python -- 算法实现
    查看>>
    python --- 元组(tuple)
    查看>>
    python --- 列表(list)
    查看>>
    python --- 协程
    查看>>
    python --- 字符串 str
    查看>>
    python ----元组方法以及修改细节
    查看>>
    python ----字典dict
    查看>>
    python / 解决 pyinstaller 打包后运行时提示找不到模块的问题
    查看>>
    Python 10 个习惯用法,短平快第一期
    查看>>
    python 29day--异常处理及socket简介
    查看>>
    Python 3 中未定义名称“xrange“
    查看>>
    python进阶(5):魔术方法篇(1)
    查看>>
    Python 3 范围与 Python 2 范围
    查看>>
    Python 3 读取ini文件
    查看>>
    Python 3.0 使用 turtle.onclick
    查看>>
    Python 3.10 明年发布,看看都有哪些新特性?
    查看>>
    python 3.10上安装pyqt5
    查看>>
    Python 3.12 正式发布了!
    查看>>
    Python 3.2 中的蛮力脚本
    查看>>
    Python 3.4 多处理递归 Pool.map()
    查看>>