pytest-html добавить пользовательские результаты испытаний в отчет

Я использую pytest0html для создания моего отчета HTML. моя тестовая запись протестировала значения, и мне нужно показать таблицу этих значений с довольно стабильными значениями в случае успеха. Я думаю, что мне нужно реализовать этот хук:

@pytest.mark.optionalhook
def pytest_html_results_table_html(report, data):
    if report.passed:
        del data[:]
        data.append(my_pretty_table_string)
        # or data.append(report.extra.text)

Но как передать my_pretty_table_string в функцию hook или как отредактировать report.extra.text из моей тестовой функции? Спасибо за помощь

2 ответа

Спасибо @alexper за ваш ответ. my_pretty_table_string генерируется с помощью моей тестовой функции следующим образом:

def test_score():
    # load csv of one column
    x = PrettyTable()
    x.field_names = ['old','new']
    for val in column:
         new_val = some_func(val)
         x.add_row([val, new_val])
         assert val == new_val
   my_pretty_table = x.get_string() # i want to print this in report

Где твое my_pretty_table_string хранится и генерируется?

Пожалуйста, дайте больше деталей на ваш вопрос, чтобы мы могли помочь:)

pytest_html_results_table_html получает report объект из pytest_runtest_makereport крюк. Так что вам нужно реализовать pytest_runtest_makereport добавить свои данные в результат на шаге вызова.

@pytest.mark.hookwrapper
def pytest_runtest_makereport(item, call):
   outcome = yield # get makereport outcome
   if call.when == 'call':
      outcome.result.my_data = <your data object goes here>

тогда вы можете получить доступ report.my_data в pytest_html_results_table_html крюк.

Alex

Другие вопросы по тегам