gpt4 book ai didi

python - 在测试套件结束时运行缓慢的 Pytest 命令

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

假设我有以下 pytest 脚本:

import pytest

def test_one():
pass

def test_two():
pass

@pytest.mark.slow
def test_three():
pass

是否有一个命令可以用来运行所有带有 slow 标记的测试?我知道我可以使用两个 pytest 命令来执行此操作,但使用单个命令来执行此操作会很棒:

pytest -v -m "not slow"
# test_markers.py::test_one PASSED
# test_markers.py::test_two PASSED

pytest -v -m slow
# test_markers.py::test_three PASSED

最佳答案

您可以为收集的测试添加自定义排序,并将带有 slow 标记的项目放在最后。将以下代码放入项目或测试根目录中的文件 conftest.py 中:

from _pytest.mark import Mark


empty_mark = Mark('', [], {})


def by_slow_marker(item):
return item.get_closest_marker('slow', default=empty_mark)


def pytest_collection_modifyitems(items):
items.sort(key=by_slow_marker, reverse=False)

这会将带有 slow 标记的项目放在收集的测试序列的末尾。如果要打开和关闭此功能,请添加自定义命令行标志:

def pytest_addoption(parser):
parser.addoption('--slow-last', action='store_true', default=False)


def pytest_collection_modifyitems(items, config):
if config.getoption('--slow-last'):
items.sort(key=by_slow_marker, reverse=True)

运行 pytest --slow-last 现在将重新排序这些项目。

关于python - 在测试套件结束时运行缓慢的 Pytest 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61533694/

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