通过查看py.test
挂钩here或here的文档,我不清楚hookwrapper=True
在挂钩的定义中是什么意思,例如:
import pytest
@pytest.hookimpl(hookwrapper=True)
def pytest_pyfunc_call(pyfuncitem):
do_something_before_next_hook_executes()
outcome = yield
# outcome.excinfo may be None or a (cls, val, tb) tuple
res = outcome.get_result() # will raise if outcome was exception
post_process_result(res)
outcome.force_result(new_res) # to override the return value to the plugin system
用hookwrapper=False
定义它是什么意思?
我在conftest.py
中为钩子pytest_report_teststatus
创建了一个钩子时遇到了这个问题,只有当我用hookwrapper=False
定义钩子时,该钩子才起作用:
@pytest.hookimpl(hookwrapper=False)
def pytest_report_teststatus(report):
return report.outcome, "letter", report.outcome.upper()
像这样使用时,成功测试的点('。')不会写入标准输出。
它与发电机有关吗?
我试图重新定义相同的钩子,如下所示:
@pytest.hookimpl(tryfirst=True, hookwrapper=True)
def pytest_report_teststatus(report):
yield report.outcome, "", report.outcome.upper()
使用hookwrapper=True
,但它并没有改变测试的结果(即仍然打印了点“。”)。那么hookwrapper
是什么意思?
奖励:为什么钩子pytest_report_teststatus
的第二种实现不起作用?