如何构建包装器 pytest 插件?
How to build a wrapper pytest plugin?
我想用以下方式包装 pytest-html 插件:
- 添加选项 X
- 给定选项 X,从报告中删除数据
我能够通过实现 pytest_addoption(parser)
函数来添加选项,但在第二件事上卡住了...
我能做的是:实现一个 hook frmo pytest-html。但是,我必须访问我的选项 X,才能执行该操作。问题是,pytest-html 的钩子没有将 "request" 对象作为参数,所以我无法访问选项值...
我可以为钩子添加额外的参数吗?或者类似的东西?
您可以将其他数据附加到报表对象,例如通过围绕 pytest_runtest_makereport
挂钩的自定义包装器:
@pytest.hookimpl(hookwrapper=True)
def pytest_runtest_makereport(item, call):
outcome = yield
report = outcome.get_result()
report.config = item.config
现在 config
对象可以通过 report.config
在所有报告挂钩中访问,包括 pytest-html
:
def pytest_html_report_title(report):
""" Called before adding the title to the report """
assert report.config is not None
我想用以下方式包装 pytest-html 插件:
- 添加选项 X
- 给定选项 X,从报告中删除数据
我能够通过实现 pytest_addoption(parser)
函数来添加选项,但在第二件事上卡住了...
我能做的是:实现一个 hook frmo pytest-html。但是,我必须访问我的选项 X,才能执行该操作。问题是,pytest-html 的钩子没有将 "request" 对象作为参数,所以我无法访问选项值...
我可以为钩子添加额外的参数吗?或者类似的东西?
您可以将其他数据附加到报表对象,例如通过围绕 pytest_runtest_makereport
挂钩的自定义包装器:
@pytest.hookimpl(hookwrapper=True)
def pytest_runtest_makereport(item, call):
outcome = yield
report = outcome.get_result()
report.config = item.config
现在 config
对象可以通过 report.config
在所有报告挂钩中访问,包括 pytest-html
:
def pytest_html_report_title(report):
""" Called before adding the title to the report """
assert report.config is not None