t.me/atinfo_chat Telegram группа по автоматизации тестирования

Как настроить фиктуру, в базовом классе от которого наследуюсь. Что бы если при запуске через Pytest после падения теста, драйвер делал скриншот?

Теги: #<Tag:0x00007f9b026a4ab0> #<Tag:0x00007f9b026a49c0> #<Tag:0x00007f9b026a48d0> #<Tag:0x00007f9b026a47b8>

Как настроить фиктуру, в базовом классе от которого наследуюсь. Что бы если при запуске через Pytest после падения теста, драйвер делал скриншот?

Вот пример для pytest + allure, может поможет:

@pytest.mark.tryfirst
def pytest_runtest_makereport(item, call, __multicall__):
    rep = __multicall__.execute()
    setattr(item, "rep_" + rep.when, rep)
    return rep

@pytest.fixture(scope="function")
def screenshot_on_failure(request):
    def fin():
        driver = SeleniumWrapper().driver
        attach = driver.get_screenshot_as_png()
        if request.node.rep_setup.failed:
            allure.attach(request.function.__name__, attach, allure.attach_type.PNG)
        elif request.node.rep_setup.passed:
            if request.node.rep_call.failed:
                allure.attach(request.function.__name__, attach, allure.attach_type.PNG)
    request.addfinalizer(fin)

Для использования нужно маркать тест на использование фикстуры screenshot_on_failure