使用pytest,多条用例整体循环跑

我现在有3条测试用例:
testcase1.py,testcase2.py,testcase3.py
都有日期这个参数,我现在希望
20230310执行testcase1.py,testcase2.py,testcase3.py
然后参数变成20230311再执行一遍testcase1.py,testcase2.py,testcase3.py
这个可以实现吗?有没有指导一下

可以再写一个脚本,按照你的要求循环调用,并且对其进行测试。

可以实现,多写一个shell脚本就行了,参考一下

#!/bin/bash

# 第一次执行,日期为20230310
python3 testcase1.py --date 20230310
python3 testcase2.py --date 20230310
python3 testcase3.py --date 20230310

# 第二次执行,日期为20230311
python3 testcase1.py --date 20230311
python3 testcase2.py --date 20230311
python3 testcase3.py --date 20230311


第一次执行时,执行testcase1.py、testcase2.py、testcase3.py三个测试用例,日期参数为20230310。第二次执行时,执行相同的三个测试用例,日期参数为20230311。你可以将脚本保存为run_testcases.sh,然后在终端中执行./run_testcases.sh来执行脚本。

考虑 @pytest.mark.parametrize参数化,也就是数据驱动来执行用例

有帮助的话,请点采纳该答案~

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

可以使用pytest提供的fixture来实现参数化循环执行多条测试用例。
首先,需要在conftest.py中定义一个fixture,用于传递日期参数。如下所示:

import pytest
def pytest_addoption(parser):
    parser.addoption("--date", action="store", default="20230310", help="test date")
@pytest.fixture(scope="session")
def date(request):
    return request.config.getoption("--date")

这里定义了一个名为date的fixture,通过pytest_addoption函数添加了一个名为--date的命令行参数,用于传递日期参数。默认日期为20230310,可以在命令行中使用--date参数来指定日期。
然后,在每个测试用例中,需要使用date fixture来获取日期参数。例如:

def test_case_1(date):
    print(f"test_case_1, date={date}")
    # TODO: add test code here
def test_case_2(date):
    print(f"test_case_2, date={date}")
    # TODO: add test code here
def test_case_3(date):
    print(f"test_case_3, date={date}")
    # TODO: add test code here

这里的date参数就是从fixture中获取的日期参数。
最后,在命令行中执行pytest,加上--date参数,即可实现多条用例循环执行。例如:

pytest --date=20230310

这样就会执行所有测试用例,并传递日期参数为20230310。执行完毕后,再执行:

pytest --date=20230311

这样就会再次执行所有测试用例,并传递日期参数为20230311。

——来源于AI EDU