gpt4 book ai didi

python - 希望在 pytest 输出中查看取消选择的测试列表及其节点 ID

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

是否有一个选项可以在 cli 输出中列出取消选择的测试以及触发取消选择的标记?

我知道在有很多测试的套件中,默认情况下这不是很好,但在测试可能更受限制的 api 测试中会是一个有用的选项。

数字总结

collected 21 items / 16 deselected / 5 selected 

在尝试组织标记和查看 ci 构建中发生的情况时很有帮助,但还不够。

最佳答案

pytest 有一个 hookspec pytest_deselected用于访问取消选择的测试。示例:将此代码添加到测试根目录中的 conftest.py:

def pytest_deselected(items):
if not items:
return
config = items[0].session.config
reporter = config.pluginmanager.getplugin("terminalreporter")
reporter.ensure_newline()
for item in items:
reporter.line(f"deselected: {item.nodeid}", yellow=True, bold=True)

现在运行测试会给你一个类似这样的输出:

$ pytest -vv
...
plugins: cov-2.8.1, asyncio-0.10.0
collecting ...
deselected: test_spam.py::test_spam
deselected: test_spam.py::test_bacon
deselected: test_spam.py::test_ham
collected 4 items / 3 deselected / 1 selected
...

如果您想要其他格式的报告,只需将取消选择的项目存储在配置中,并将它们用于其他地方所需的输出,例如pytest_terminal_summary:

# conftest.py

import os

def pytest_deselected(items):
if not items:
return
config = items[0].session.config
config.deselected = items


def pytest_terminal_summary(terminalreporter, exitstatus, config):
reports = terminalreporter.getreports('')
content = os.linesep.join(text for report in reports for secname, text in report.sections)
deselected = getattr(config, "deselected", [])
if deselected:
terminalreporter.ensure_newline()
terminalreporter.section('Deselected tests', sep='-', yellow=True, bold=True)
content = os.linesep.join(item.nodeid for item in deselected)
terminalreporter.line(content)

给出输出:

$ pytest -vv
...
plugins: cov-2.8.1, asyncio-0.10.0
collected 4 items / 3 deselected / 1 selected

...

---------------------------------------- Deselected tests -----------------------------------------
test_spam.py::test_spam
test_spam.py::test_bacon
test_spam.py::test_ham
================================= 1 passed, 3 deselected in 0.01s =================================

关于python - 希望在 pytest 输出中查看取消选择的测试列表及其节点 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61022267/

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