问题 在pytest中,我如何判断测试是否失败? (来自“请求”)


我正在使用Selenium和PYTEST测试网站。我想在测试失败时(并且仅在失败时)截取页面的屏幕截图。

有没有办法可以做到这一点?对于这个(或者我找不到),文档很安静。我会假设它会是这样的

request.function.failed

它会返回一个布尔值或其他东西。

这就是我想要做的:

@pytest.fixture()
def something(request):
    if request.function.failed:
        print "I failed"

当然,这将被添加到终结器中。可以吗?使用pytest 2.3.3

谢谢。


6772
2017-11-13 16:43


起源



答案:


它可以完成,但不能直接完成。我刚才补充道 在文档中添加了一个示例。默认情况下使这更容易,即不需要使用conftest.py钩子可能是有意义的。如果您同意,请 提出问题


7
2017-11-14 08:25



提起它。不确定我是否提供了足够的信息(分配给您)。 - Nacht
NB问题现在在 bitbucket.org/pytest-dev/pytest/issue/230/... (回购被移动) - pfctdayelise


答案:


它可以完成,但不能直接完成。我刚才补充道 在文档中添加了一个示例。默认情况下使这更容易,即不需要使用conftest.py钩子可能是有意义的。如果您同意,请 提出问题


7
2017-11-14 08:25



提起它。不确定我是否提供了足够的信息(分配给您)。 - Nacht
NB问题现在在 bitbucket.org/pytest-dev/pytest/issue/230/... (回购被移动) - pfctdayelise


我必须在每个模块级别上做类似的事情。在检查现有解决方案后,我对它们的复杂性感到有些惊讶。以下是我提出的解决此问题的方法:

import pytest


@pytest.fixture(scope="module", autouse=True)
def failure_tracking_fixture(request):
    tests_failed_before_module = request.session.testsfailed
    yield
    tests_failed_during_module = request.session.testsfailed - tests_failed_before_module

它可以通过使夹具成为功能级别来调整以实现您想要的功能。

希望这可以帮助!


3
2018-04-07 01:14