pytest:在报告中添加长测试说明的最佳方法



默认情况下,pytest 在 pytest 报告中使用测试函数名称或测试文件名

是否有任何最佳方法可以在报告中添加测试描述(长测试名称(,而无需使用 pytest 重命名文件或函数?

我们可以通过在运行时更新测试用例名称来做到这一点吗?

  1. request.node.name
request.node.name = "Very Very Very Very Very long long long long name name name name"
  1. 测试名称后的描述
def test_ok():
"""Very Very Very Very Very long long long long name name name name"""
print("ok")

使用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%]

请参阅"钩子包装器:围绕其他钩子执行",了解有关outcome = yieldoutcome.get_result()业务的更多信息。

最新更新