赞
踩
简介:在软件测试中,我们经常需要重复执行测试用例,以确保代码的稳定性和可靠性。在本文中,我们将介绍四种方法来实现重复执行测试用例,并显示当前迭代次数和剩余执行次数。这些方法将帮助你更好地追踪测试执行过程,提升测试效率。
四种实现方法解析:
方法1:使用自定义装饰器
方法2:使用 pytest 的参数化
方法3:在测试方法内部使用循环
方法4:使用类参数
方法1:使用自定义装饰器
import pytest import datetime from logger import log def 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 decorator class TestDemo1(object): count = 3 @repeat(count) def test_01(self): log.info(f"迭代时间: {datetime.datetime.now()}:{self.count}") pytest.assume(3 > 2)
方法2:使用 pytest 的参数化
import pytest
import datetime
from logger import log
class 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)
方法3:在测试方法内部使用循环
import pytest
import datetime
from logger import log
class 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)
方法4:使用类参数
import pytest
import datetime
from logger import log
class 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 os import time import pytest if __name__ == "__main__": """ "-s": 输出调试信息,包括 print 打印的信息。这通常在调试时使用,因为它会显示测试用例中的所有 print 输出。 "-v": 显示更详细的信息. "-n=num": 启用多线程或分布式运行测试用例。这需要安装 pytest-xdist 插件模块。允许并行运行的测试用例数量。 "-k=value": 只执行用例的 nodeid 包含指定值的用例。这可以用于根据表达式匹配并运行特定的测试用例。 "-m"=标签名: 执行被 @pytest.mark.标签名 标记的用例。这允许你根据定义的标签来过滤和运行测试用例。 "-x": 一旦有任何一个用例执行失败,就停止当前线程的测试执行。 "--maxfail=num": 与 -x 功能相似,但允许指定失败用例的最大数量后停止执行。 "--reruns=num": 失败用例重跑指定次数。这需要安装 pytest-rerunfailures 插件模块。 """ 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)
运行结果:
Allure:
注意事项:
1、避免全局变量冲突: 在方法四中,我们使用了类变量来追踪迭代次数。如果有多个测试类同时运行,可能会导致变量冲突。建议在每个测试类中使用不同的变量名称。
2、性能考虑: 在大量重复执行的情况下,打印日志或控制台输出可能会影响性能。可以根据需要调整输出频率或记录方式。
3、测试独立性: 确保每次迭代的测试用例是独立的,不会相互影响。可以在每次迭代前重置测试环境。
总结: 在本文中,我们介绍了四种实现重复执行测试用例的方法,并显示当前迭代次数和剩余执行次数。这些方法各有优缺点,可以根据具体需求选择最适合的方法。希望这些方法能帮助你更好地进行测试管理,提高测试效率和代码稳定性。个人推荐采用第四种类参数的方式。
最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取 【保证100%免费】
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。