gpt4 book ai didi

python - 我可以在哪个 py.test 标注中找到 'item' 和 'report' 数据?

转载 作者:太空狗 更新时间:2023-10-29 22:27:29 24 4
gpt4 key购买 nike

pytest_runtest_makereport() 有两个参数,item 和 call。从 item 中,我可以找到我为这个测试创建的 funcarg,从 call 中,我可以找到异常信息(如果有的话):

def pytest_runtest_makereport (item, call):
my_funcarg = item.funcargs['name']
my_funcarg.excinfo = call.excinfo

不幸的是,excinfo 被填充用于失败和跳过。为了区分,我需要查看 pytest_report_teststatus() 的报告参数:

def pytest_report_teststatus (report):
if report.when == 'call':
if report.failed:
failed = True
elif report.skipped:
skipped = True
else:
passed = True

这是很好的信息,但我无法将它与我为测试创建的 funcarg 相关联。我查看了报告参数(一个 TestReport 报告),但找不到任何方法返回到传递给 pytest_runtest_makereport() 的项目或我创建的 funcarg。

我在哪里可以访问两者?

最佳答案

有一些未记录的、有点非官方的方法,钩子(Hook)实现可以使用它与其他钩子(Hook)实现交互,例如对它们的结果进行后处理。在您的具体情况下,您可能会执行以下操作:

@pytest.mark.tryfirst
def pytest_runtest_makereport(item, call, __multicall__):
rep = __multicall__.execute()
# your code follows and you can use rep.passed etc.
return rep

注意事项:

  • 一个钩子(Hook)调用通常会调用多个钩子(Hook)实现
  • “tryfirst”标记指示钩子(Hook)调用以尽早调用您的实现
  • multicall 参数表示正在进行的钩子(Hook)调用,可以用于调用剩余的钩子(Hook)实现,然后
    使用他们的结果进行进一步处理
  • 你需要在这里返回“rep”,因为你隐藏了“真实”的创作

multicall API 很少真正使用,我怀疑可能有不需要它的解决方案适合您的用例。

HTH,霍尔格

关于python - 我可以在哪个 py.test 标注中找到 'item' 和 'report' 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10754970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com