gpt4 book ai didi

python - Pytest 仅运行具有特定标记属性的测试

转载 作者:行者123 更新时间:2023-12-04 16:45:08 25 4
gpt4 key购买 nike

我正在使用 @pytest.mark唯一标识特定测试,因此我创建了我的自定义标记。

@pytest.mark.key
我正在使用它:
@pytest.mark.key("test-001")
def test_simple(self):
self.passing_step()
self.passing_step()
self.passing_step()
self.passing_step()
assert True
现在从控制台我想用标记的键“test-001”运行所有测试。我怎样才能做到这一点?
我正在寻找的是这样的:
pypi.org/project/pytest-jira/0.3.6
其中测试可以映射到 Jira 键。我查看了链接的源代码,但我不确定如何实现它以便我运行特定的测试。假设我只想使用 key “test-001”运行测试。

最佳答案

Pytest 不提供开箱即用的功能。您可以使用 -m 按标记名称过滤选项,但不是通过标记属性。
但是,您可以添加自己的选项以按键过滤。下面是一个例子:
conftest.py

def pytest_configure(config):
# register your new marker to avoid warnings
config.addinivalue_line(
"markers",
"key: specify a test key"
)


def pytest_addoption(parser):
# add your new filter option (you can name it whatever you want)
parser.addoption('--key', action='store')


def pytest_collection_modifyitems(config, items):
# check if you got an option like --key=test-001
filter = config.getoption("--key")
if filter:
new_items = []
for item in items:
mark = item.get_closest_marker("key")
if mark and mark.args and mark.args[0] == filter:
# collect all items that have a key marker with that value
new_items.append(item)
items[:] = new_items
现在你运行类似
pytest --key=test-001
仅运行具有该标记属性的测试。
请注意,这仍将显示收集的测试总数,但仅运行过滤的测试。下面是一个例子:
测试 key .py
import pytest

@pytest.mark.key("test-001")
def test_simple1():
pass

@pytest.mark.key("test-002")
def test_simple2():
pass


@pytest.mark.key("test-001")
def test_simple3():
pass

def test_simple4():
pass

$ python -m pytest -v --key=test-001 test_key.py

...
collected 4 items

test_key.py::test_simple1 PASSED
test_key.py::test_simple3 PASSED
================================================== 2 passed in 0.26s ==================================================

关于python - Pytest 仅运行具有特定标记属性的测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67200501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com