Я использую pytest в сочетании с плагином pytest-html , который генерирует отчет в формате HTML после запуска теста.
Я использую автоматическое проводное крепление сеанса для автоматического открытиясгенерированный отчет HTML в браузере:
@pytest.fixture(scope="session", autouse=True)
def session_wrapper(request):
print('Session wrapper init...')
yield
# open report in browser on Mac or Windows, skip headless boxes
if platform.system() in ['Darwin', 'Windows']:
html_report_path = os.path.join(request.config.invocation_dir.strpath, request.config.option.htmlpath)
open_url_in_browser("file://%s" %html_report_path)
Приведенный выше код работает, но не согласованно, поскольку иногда браузер пытается загрузить файл до его создания, что приводит к ошибке "файл не найден" и требуетручное обновление браузера для отображения отчета.
Насколько я понимаю, scope="session"
является самой широкой доступной областью действия, и я предполагал, что pytest-html должен завершить генерацию отчета до концасеанс, но, видимо, это не так.
Вопрос в том, как правильно подключить код автозапуска отчета браузера?Может ли быть так, что pytest-html
также подключается к области видимости финализатора сеанса?В таком случае, как убедиться, что файл HTML открыт в браузере только после того, как файл создан?