@pytest.hookimpl(tryfirst=True, hookwrapper=True) def pytest_runtest_makereport(item, call): outcome = yield rep = outcome.get_result() print('标识数据',rep) 失败用例没有打印rep
时间: 2024-02-14 15:30:16 浏览: 254
如果你的钩子函数中的 `print('标识数据', rep)` 没有打印出 `rep` 数据,可能是因为 `rep` 数据的类型不支持直接打印。在 Pytest 的 `pytest_runtest_makereport` 钩子函数中,`rep` 是一个 `TestReport` 类型的对象,它包含有关测试用例执行结果的信息。
要获取有关失败用例的详细信息,你可以尝试使用以下代码:
```python
import allure
import pytest
from _pytest.runner import TestReport
@pytest.hookimpl(tryfirst=True, hookwrapper=True)
def pytest_runtest_makereport(item, call):
outcome = yield
rep = outcome.get_result()
# 判断测试用例是否失败
if rep.when == "call" and rep.failed:
try:
# 获取失败用例的详细信息
if isinstance(rep, TestReport):
# 打印失败用例的节点 ID
print('节点 ID:', rep.nodeid)
# 打印失败用例的长描述
print('长描述:', rep.longreprtext)
# 打印失败用例的源码位置
print('源码位置:', rep.location)
# 打印失败用例的标签信息
print('标签:', rep.keywords)
except Exception as e:
print("获取失败用例信息失败:", e)
```
在上述示例代码中,我们使用了 `isinstance(rep, TestReport)` 来检查 `rep` 对象是否为 `TestReport` 类型,然后打印了一些可能有用的失败用例信息,如节点 ID、长描述、源码位置和标签信息。
请注意,`TestReport` 类型的对象具有许多其他属性,你可以根据需要自行查阅 Pytest 的文档(https://docs.pytest.org/en/latest/)来获取更多有关 `TestReport` 对象的信息。
如果问题仍然存在,请提供更多代码细节以便进一步排查。
阅读全文