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