Как мне включить скриншот в отчете Python HTML - PullRequest
0 голосов
/ 25 мая 2018

Когда я нажимаю указанную ниже ссылку в браузере "https://192.168.xx.xxx/Test/ScreenCapture", я получаю скриншот тестируемого экрана устройства в браузере.

Как добавить снимок экрана в свой отчет по тестированию pytest htmlВ настоящее время я использую приведенный ниже код, который делает снимок экрана в указанном каталоге тестов.

url = 'https://192.168.xx.xxx/Test/ScreenCapture'
driver.get(url)    driver.save_screenshot('/home/tests/screen.png')

Я запускаю свой pytest с помощью следующей команды: py.test --html = report.html --self -ден-html screentest.py

Ответы [ 2 ]

0 голосов
/ 22 августа 2019

Я нашел того, кто нашел решение сам (@ Vic152), вот оригинальное сообщение: https://github.com/pytest-dev/pytest-html/issues/186 Ключ должен позвонить item.funcargs['request'], чтобы получить текущий контекст запроса на тестирование.

Примечание: если вы используете Pytest 3.0+, как я, замените getfuncargvalue() на getfixturevalue()

Я скопирую код здесь:

@pytest.mark.hookwrapper
def pytest_runtest_makereport(item, call):

    timestamp = datetime.now().strftime('%H-%M-%S')

    pytest_html = item.config.pluginmanager.getplugin('html')
    outcome = yield
    report = outcome.get_result()
    extra = getattr(report, 'extra', [])
    if report.when == 'call':

        feature_request = item.funcargs['request']

        driver = feature_request.getfuncargvalue('browser')
        driver.save_screenshot('D:/report/scr'+timestamp+'.png')

        extra.append(pytest_html.extras.image('D:/report/scr'+timestamp+'.png'))

        # always add url to report
        extra.append(pytest_html.extras.url('http://www.example.com/'))
        xfail = hasattr(report, 'wasxfail')
        if (report.skipped and xfail) or (report.failed and not xfail):
            # only add additional html on failure
            extra.append(pytest_html.extras.image('D:/report/scr.png'))
            extra.append(pytest_html.extras.html('<div>Additional HTML</div>'))
        report.extra = extra
0 голосов
/ 25 мая 2018

Из документации https://pypi.org/project/pytest-html/: Вы можете добавить детали к отчетам HTML, создав «дополнительный»

extra.image(image, mime_type='image/gif', extension='gif')

. Вам нужно сделать хук.Снова из документа:

import pytest
@pytest.mark.hookwrapper
def pytest_runtest_makereport(item, call):
    pytest_html = item.config.pluginmanager.getplugin('html')
    outcome = yield
    report = outcome.get_result()
    extra = getattr(report, 'extra', [])
    if report.when == 'call':
        # always add url to report
        extra.append(pytest_html.extras.url('http://www.example.com/'))
        xfail = hasattr(report, 'wasxfail')
        if (report.skipped and xfail) or (report.failed and not xfail):
            # only add additional html on failure
            extra.append(pytest_html.extras.html('<div>Additional HTML</div>'))
        report.extra = extra
...