运行测试后,在pytest中有一个概述:

============= 7在1.11秒内通过=============

我喜欢在pytest末尾访问时间(此处为1.11)。

我已经在这里找到一些有用的信息:

How can I access the overall test result of a pytest test run during runtime?

但与整体测试运行时间不匹配。

我试图使用def pytest_sessionfinish(session,exitstatus)

我没有找到那里的整体时间。

值似乎在RunResult对象内部。
https://docs.pytest.org/en/latest/_modules/_pytest/pytester.html#RunResult

如何进入?

最佳答案

您可以在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)

关于python - 如何在pytest中访问整体运行时?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56271207/

10-13 23:04