“ hookwrapper”对“ py.test”钩子意味着什么?

时间:2018-09-27 14:17:29

标签: python pytest

通过查看py.test挂钩herehere的文档,我不清楚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的第二种实现不起作用?

0 个答案:

没有答案