Как получить общее количество пройденных, неудачных и пропущенных тестов из pytest - PullRequest
0 голосов
/ 11 февраля 2019

Как мне получить статистическую информацию о тестовом сеансе в pytest?

Я пытался определить pytest_sessionfinish в файле conftest.py, но вижу только testsfailed и testscollected Атрибуты там.

Мне также нужно знать количество пройденных тестов, пропущенных и общее время, которое это заняло.Поскольку pytest печатает эту информацию в конце каждого сеанса, я предполагаю, что есть программный способ ее получения.

1 Ответ

0 голосов
/ 12 февраля 2019

Используйте крючок 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']))
    ...

Однако, в зависимости от того, в каком хуке вы находитесь, вы не можетеполучить полную статистику / правильную продолжительность, поэтому рекомендуется соблюдать осторожность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...