博客
关于我
pytest:4种方法实现 - 重复执行用例 - 展示迭代次数
阅读量:797 次
发布时间: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/

    你可能感兴趣的文章
    pyautogui的基本介绍和使用
    查看>>
    PyCharm - 社区版是否能够突出显示 css/javascript?
    查看>>
    PyCharm 2018.3.5 RC 发布,原生 SSH 支持
    查看>>
    PyCharm 3.1 在索引期间永远挂起并且无法使用
    查看>>
    Pycharm Pro 2018.2 汉化专业激活破解
    查看>>
    PyCharm vs VSCode,是时候改变你的 IDE 了!
    查看>>
    PyCharm 中,“新建”(New)和“新建项目”(New Project)-ChatGPT4o作答
    查看>>
    PyCharm 代码编辑与调试运行详解
    查看>>
    Pycharm 出现 instantitaing tests 以及test session starts 的解决方法
    查看>>
    pytorch 固定随机种子
    查看>>
    Pycharm 对容器中的 Python 程序断点远程调试
    查看>>
    Pycharm 常用快捷键大全【快查字典版】
    查看>>
    Pycharm 常用快捷键大全,全网最全!
    查看>>
    PyCharm 常用的技巧完全指南
    查看>>
    PyCharm 快捷键与效率编码详解
    查看>>
    pycharm 怎么添加python依赖的包, requirements.txt文件如何导入python库
    查看>>
    PyCharm 插件工具使用
    查看>>
    PyCharm 搜索与导航栏详解
    查看>>
    PyCharm 搭建 Selenium + Python 的自动化测试环境
    查看>>
    PyCharm 数据库操作详解
    查看>>