Как переименовать заголовок HTML-отчета, сгенерированного плагином pytest-html?

Я создаю отчет в формате html, используя плагин pytest-html. Я запускаю файл pytest, указав "pytest --html=report.html" в командной строке. Итак, имя и заголовок сгенерированного html-отчета — report.html. Я хочу изменить название сгенерированного отчета. Пожалуйста, дайте мне знать, как это сделать?


person Anusha    schedule 03.01.2020    source источник


Ответы (3)


создайте файл conftest.py в той же папке, что и тест. этот файл используется для настройки pytest. поместите этот фрагмент внутрь


def pytest_html_results_summary(prefix, summary, postfix):
    prefix.extend([html.h1("A GOOD TITLE")])

если вам нужно изменить имя файла отчета html, вы можете попробовать что-то вроде этого

# @pytest.hookimpl(tryfirst=True)
def pytest_configure(config):
    # to remove environment section
    config._metadata = None

    if not os.path.exists('reports'):
        os.makedirs('reports')

    config.option.htmlpath = 'reports/' + datetime.now().strftime("%d-%m-%Y %H-%M-%S") + ".html"

мой пример поместит файл report.html в папку с именем reports с датой вместо статического имени

person Andrea Bisello    schedule 03.01.2020
comment
Большое спасибо. Если мы добавим в conftest. py, он выполняется до моего тестового запуска? Если я хочу отобразить номер версии в заголовке, я получу номер версии из одного из тестовых примеров. Итак, если я хочу переименовать заголовок после выполнения тестовых случаев, что мне нужно сделать. - person Anusha; 04.01.2020
comment
Я хочу изменить имя html-отчета после выполнения теста. Является ли это возможным? - person Anusha; 05.01.2020
comment
У меня есть одна глобальная переменная pytest.versionnumber. Я установлю эту переменную в одном из моих тестовых случаев (например: Read_version_info). После этого мне нужно обновить имя и заголовок отчета. В имени и заголовке отчета мне нужно добавить эту переменную pytest.versionnumber. Он выдает ошибку (у pytest нет переменной versionnumber) при добавлении этой переменной к имени отчета, когда я пытался, как указано выше. Что-то не так с объявлением глобальной переменной. Я могу использовать эту переменную в других функциях в файле conftest.py. - person Anusha; 16.01.2020

Из того, что я вижу в коде, пока нет возможности изменить только заголовок отчета, на данный момент он жестко запрограммирован как

html.h1(os.path.basename(self.logfile))

Таким образом, заголовок отчета всегда будет именем файла отчета. Я только что отправил в проект запрос на слияние, чтобы добавить новый хук, позволяющий изменить заголовок без изменения имени файла, посмотрим, будет ли он принят.

person Werdeil    schedule 26.02.2020

Начиная с версии 2.1.0, этот подключаемый модуль предоставляет ловушку вызывается перед добавлением заголовка в отчет. Вы можете добавить это в conftest.py:

def pytest_html_report_title(report):
   report.title = 'your title!'

Это также объясняется в Руководстве пользователя подключаемого модуля.

person dmertins    schedule 16.12.2020