微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python-如何获取通过,失败和从pytest跳过的测试总数

如何在pytest中获取测试会话的统计信息?

我试图在conftest.py文件中定义pytest_sessionfinish,但是我只在那儿看到testsFailed和testscollected属性.

我还需要知道通过,跳过的测试数量以及花费的总时间.由于pytest在每个会话结束时都会打印该信息,因此我假设有一种编程的方式可以检索该信息.

解决方法:

使用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还不是public API的一部分,因此最好直接检查its code.

如果您需要访问另一个挂钩中的统计信息(例如pytest_sessionfinish),请使用插件管理器,例如:

def pytest_sessionfinish(session, exitstatus):
    reporter = session.config.pluginmanager.get_plugin('terminalreporter')
    print('passed amount:', len(reporter.stats['passed']))
    ...

但是,根据您所处的状态,您可能无法获得完整的统计信息/正确的持续时间,因此请注意.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐