默认情况下,pytest 在 pytest 报告中使用测试函数名称或测试文件名称
有没有在报告中添加测试描述(长测试名称)的最佳方法,而无需使用 pytest 重命名文件或函数?
我们可以通过在运行时更新测试用例名称来做到这一点吗?
- 请求.节点.名称
request.node.name = "Very Very Very Very Very long long long long name name name name"
- 测试名称后的描述
def test_ok():
"""Very Very Very Very Very long long long long name name name name"""
print("ok")
使用pytest_runtest_makereport hook https://docs.pytest.org/en/latest/reference/reference.html#_pytest.hookspec.pytest_runtest_makereport,可以为每个测试调整报告的名称。 (请注意,挂钩必须放置在插件或conftest.py
)
# conftest.py
import pytest
@pytest.hookimpl(hookwrapper=True)
def pytest_runtest_makereport(item, call):
outcome = yield
report = outcome.get_result()
test_fn = item.obj
docstring = getattr(test_fn, '__doc__')
if docstring:
report.nodeid = docstring
# test_it.py
def test_ok():
"""Very Very Very Very Very long long long long name name name name"""
print("ok")
这将产生类似于以下内容的输出:
tests/test_stuff.py::test_ok
Very Very Very Very Very long long long long name name name name <- tests/test_stuff.py PASSED [100%]
See “hookwrapper:围绕其他钩子执行” https://docs.pytest.org/en/latest/how-to/writing_hook_functions.html?#hookwrapper-executing-around-other-hooks欲了解更多信息outcome = yield
and outcome.get_result()
商业。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)