Вы можете получить доступ к отметке времени начала выполнения в экземпляре плагина TerminalReporter
, а затем просто самостоятельно рассчитать время выполнения (это также то, что делает сама pytest
). Пример:
# conftest.py
import time
def pytest_sessionfinish(session, exitstatus):
reporter = session.config.pluginmanager.get_plugin('terminalreporter')
duration = time.time() - reporter._sessionstarttime
reporter.write_sep('=', 'duration: {} seconds'.format(duration), yellow=True, bold=True)
Обновление
Как отмечено looki в комментариях, это не будет возвращать общее время выполнения при выполнении тестов, распределенных с pytest-xdist
, поскольку каждый процесс становится своим собственным экземпляром сеанса. Переключитесь на хук pytest_unconfigure
(реализация почти такая же):
def pytest_unconfigure(config):
reporter = config.pluginmanager.get_plugin('terminalreporter')
duration = time.time() - reporter._sessionstarttime
reporter.write_sep('=', 'duration: {} seconds'.format(duration), yellow=True, bold=True)