我有以下测试:
@pytest.mark.hardware
@pytest.mark.feature1
@pytest.mark.feature2
def test_device1():
pass
@pytest.mark.hardware
@pytest.mark.feature1
def test_device2():
pass
@pytest.mark.hardware
@pytest.mark.feature2
def test_device3():
pass
目标:如果我在命令行参数上指定: pytest --device device1
,我希望只运行带有标记 feature1、feature2、hardware 的测试。类似地:参数 device2 只会调用带有标记 hardware 和 feature1 等的测试。如果没有参数,将运行没有标记的测试。
在 conftest.py 我有:
def pytest_addoption(parser):
group = parser.getgroup("filter")
group.addoption(
"--device",
action="store",
help="specify the device",
)
我发现这pytest_collection_modifyitems
可能会有所帮助,但我不知道如何根据命令行参数的值选择要运行的标记列表。提前感谢您的帮助。
我试过了,但没有奏效:
def pytest_collection_modifyitems(config, items):
if config.getoption("--device") == 'device2':
for item in items:
item.add_marker(pytest.mark.hardware)
item.add_marker(pytest.mark.feature1)