pytest для доступа к длительности - PullRequest
1 голос
/ 06 мая 2020

Когда я запускаю свои тесты с xdist и длительностью pytest -n 3 --durations=10, pytest дает мне консольный вывод, например:

=========================== slowest 10 test durations ===========================
409.46s setup    test/cases/test_one.py::TestOne::test_one
189.82s call     test/cases/test_two.py::TestTwo::test_two   
...
...

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

Вопрос : Есть ли способ получить доступ к этой информации через обработчик pytest?

1 Ответ

1 голос
/ 07 мая 2020

Время хранится в поле duration объекта TestReport, поэтому оно доступно для всех обработчиков отчетов. Примеры:

def pytest_report_teststatus(report, config):
    if report.when == "call":
        print("duration reported immediately after test execution:", report.duration)

def pytest_terminal_summary(terminalreporter, exitstatus, config):
    for reps in terminalreporter.stats.values():
        for rep in reps:
            if rep.when == "call":
                print("duration reported after all tests passed:", rep.nodeid, rep.duration)
...