В pytest, как я могу выяснить, не прошел тест? (из "запроса" )

Я использую Selenium с PYTEST для тестирования сайта. Я бы хотел сделать снимок экрана на странице всякий раз, когда тест завершился неудачно (и только когда он не прошел).

Есть ли способ, которым я могу это сделать? Документы тихие, когда дело доходит до этого (или я не могу найти его). Я бы предположил, что это будет что-то вроде

request.function.failed

и он вернет логическое значение или что-то еще.

Это то, что я хотел сделать:

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

Это будет добавлено в финализатор, конечно. Это можно сделать? Использование pytest 2.3.3

Спасибо.

Ответ 2

Мне приходилось делать что-то подобное на уровне каждого модуля. Изучив существующие решения, я был немного удивлен их сложностью. Вот подход, который я придумал для решения этой проблемы:

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

Он может быть изменен, чтобы сделать то, что вы хотите, сделав прибор одним из функций уровня.

Надеюсь, это поможет!