Используйте крючок pytest_terminal_summary
.Статистика предоставляется объектом terminalreporter
.Пример:
# conftest.py
def pytest_terminal_summary(terminalreporter, exitstatus, config):
print('passed amount:', len(terminalreporter.stats['passed']))
print('failed amount:', len(terminalreporter.stats['failed']))
print('xfailed amount:', len(terminalreporter.stats['xfailed']))
print('skipped amount:', len(terminalreporter.stats['skipped']))
duration = time.time() - terminalreporter._sessionstarttime
print('duration:', duration, 'seconds')
К сожалению, _pytest.terminal.TerminalReporter
пока не является частью открытого API , поэтому лучше проверить его код напрямую.
Если вам нужен доступ к статистике в другом хуке, например pytest_sessionfinish
, используйте менеджер плагинов, например:
def pytest_sessionfinish(session, exitstatus):
reporter = session.config.pluginmanager.get_plugin('terminalreporter')
print('passed amount:', len(reporter.stats['passed']))
...
Однако, в зависимости от того, в каком хуке вы находитесь, вы не можетеполучить полную статистику / правильную продолжительность, поэтому рекомендуется соблюдать осторожность.