深圳专业做网站建网站价格,那个建设网站好,wordpress后台自定义面版上传,做一个商城网站需要什么流程简介#xff1a;在软件测试中#xff0c;我们经常需要重复执行测试用例#xff0c;以确保代码的稳定性和可靠性。在本文中#xff0c;我们将介绍四种方法来实现重复执行测试用例#xff0c;并显示当前迭代次数和剩余执行次数。这些方法将帮助你更好地追踪测试执行过程在软件测试中我们经常需要重复执行测试用例以确保代码的稳定性和可靠性。在本文中我们将介绍四种方法来实现重复执行测试用例并显示当前迭代次数和剩余执行次数。这些方法将帮助你更好地追踪测试执行过程提升测试效率。
历史攻略
pytest常用命令行参数解析
pytest-cov好用的统计代码测试覆盖率插件
Pytest用例自定义 - 重复、并行、串行
Python封装logging模块和引用
四种实现方法解析
方法1使用自定义装饰器
方法2使用 pytest 的参数化
方法3在测试方法内部使用循环
方法4使用类参数方法1使用自定义装饰器
# -*- coding: utf-8 -*-
# time: 2024/5/12 17:47
# file: test_demo1.py
# 公众号: 玩转测试开发
import pytest
import datetime
from 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 wrapperreturn decoratorclass TestDemo1(object):count 3repeat(count)def test_01(self):log.info(f迭代时间: {datetime.datetime.now()}:{self.count})pytest.assume(3 2)方法2使用 pytest 的参数化
# -*- coding: utf-8 -*-
# time: 2024/5/12 17:47
# file: test_demo2.py
# 公众号: 玩转测试开发
import pytest
import datetime
from logger import logclass TestDemo2(object):count 3pytest.mark.parametrize(iteration, range(count))def test_02(self, iteration):remaining self.count - iteration - 1log.info(f当前迭代次数: {iteration 1}, 剩余次数: {remaining})pytest.assume(3 2)方法3在测试方法内部使用循环
# -*- coding: utf-8 -*-
# time: 2024/5/12 17:47
# file: test_demo3.py
# 公众号: 玩转测试开发
import pytest
import datetime
from logger import logclass TestDemo3(object):count 3def test_03(self):for i in range(self.count):remaining self.count - i - 1log.info(f当前迭代次数: {i 1}, 剩余次数: {remaining})pytest.assume(3 2)方法4使用类参数
# -*- coding: utf-8 -*-
# time: 2024/5/12 17:47
# file: test_demo4.py
# 公众号: 玩转测试开发
import pytest
import datetime
from logger import logclass TestDemo4(object):count 3current_count 0pytest.mark.repeat(count)def test_04(self):TestDemo4.current_count 1log.info(f当前迭代次数: {TestDemo4.current_count}, 剩余次数: {self.count - TestDemo4.current_count})pytest.assume(3 2)程序入口main.py
# -*- coding: utf-8 -*-
# time: 2024/5/12 17:46
# file: main.py
# 公众号: 玩转测试开发
import os
import time
import pytestif __name__ __main__:-s: 输出调试信息包括 print 打印的信息。这通常在调试时使用因为它会显示测试用例中的所有 print 输出。-v: 显示更详细的信息.-nnum: 启用多线程或分布式运行测试用例。这需要安装 pytest-xdist 插件模块。允许并行运行的测试用例数量。-kvalue: 只执行用例的 nodeid 包含指定值的用例。这可以用于根据表达式匹配并运行特定的测试用例。-m标签名: 执行被 pytest.mark.标签名 标记的用例。这允许你根据定义的标签来过滤和运行测试用例。-x: 一旦有任何一个用例执行失败就停止当前线程的测试执行。--maxfailnum: 与 -x 功能相似但允许指定失败用例的最大数量后停止执行。--rerunsnum: 失败用例重跑指定次数。这需要安装 pytest-rerunfailures 插件模块。now time.strftime(%Y_%m_%d_%H_%M_%S)pytest.main([-s, ./tests, --alluredir, f./report/xml_{now}])cmd rfallure generate ./report/xml_{now} -o ./report/report_{now} --cleanprint(f{cmd})os.system(cmd)运行结果 Allure 注意事项
1、避免全局变量冲突在方法四中我们使用了类变量来追踪迭代次数。如果有多个测试类同时运行可能会导致变量冲突。建议在每个测试类中使用不同的变量名称。
2、性能考虑在大量重复执行的情况下打印日志或控制台输出可能会影响性能。可以根据需要调整输出频率或记录方式。
3、测试独立性确保每次迭代的测试用例是独立的不会相互影响。可以在每次迭代前重置测试环境。
总结在本文中我们介绍了四种实现重复执行测试用例的方法并显示当前迭代次数和剩余执行次数。这些方法各有优缺点可以根据具体需求选择最适合的方法。希望这些方法能帮助你更好地进行测试管理提高测试效率和代码稳定性。个人推荐采用第四种类参数的方式。