15

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

有没有办法我可以做到这一点?文档对此很安静(或者我找不到)。我会假设它会像

request.function.failed

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

这就是我想做的:

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

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

谢谢。

4

2 回答 2

12

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

于 2012-11-14T08:25:32.183 回答
7

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

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

可以通过使夹具成为功能级别的夹具来调整它以执行您想要的操作。

希望这可以帮助!

于 2017-04-07T01:14:44.257 回答