Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

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

screenshot
pytest
execution
python
Теги: #<Tag:0x00007f7b691e5d98> #<Tag:0x00007f7b691e56e0> #<Tag:0x00007f7b691e5410> #<Tag:0x00007f7b691e5208>

(Влад Зойло) #1

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


(rmerkushin) #2

Вот пример для 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