В каком вызове py.test я могу найти данные «item» и «report»?

pytest_runtest_makereport () получает два аргумента, элемент и вызов. По пункту я могу найти funcarg, который я создал для этого теста, а по вызову я могу найти информацию об исключении (если есть):

def pytest_runtest_makereport (item, call):
    my_funcarg = item.funcargs['name']
    my_funcarg.excinfo = call.excinfo

К сожалению, excinfo заполняется как для сбоев, так и для пропусков. Чтобы различить, мне нужно взглянуть на аргумент отчета для pytest_report_teststatus ():

def pytest_report_teststatus (report):
    if report.when == 'call':
        if report.failed:
            failed = True
        elif report.skipped:
            skipped = True
        else:
            passed = True

Это отличная информация, но я не могу соотнести ее с funcarg, который я создал для теста. Я посмотрел на аргумент отчета (отчет TestReport) и не могу найти какой-либо способ вернуться к элементу, переданному в pytest_runtest_makereport (), или к funcarg, который я создал.

Где я могу получить доступ к обоим?

Ответы на вопрос(2)

Ваш ответ на вопрос