我现在有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