Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从pytest获取通过、失败和跳过的测试总数_Python_Unit Testing_Pytest - Fatal编程技术网

Python 如何从pytest获取通过、失败和跳过的测试总数

Python 如何从pytest获取通过、失败和跳过的测试总数,python,unit-testing,pytest,Python,Unit Testing,Pytest,如何在pytest中获取测试会话的统计信息 我试图在conftest.py文件中定义pytest\u sessionfinish,但我在那里只看到testsfailed和testscollected属性 我还需要知道通过、跳过的测试数量以及所花的总时间。由于pytest会在每次会话结束时打印这些信息,因此我假设有一种编程方式来检索这些信息。使用钩子。统计信息由terminalreporter对象提供。例如: # conftest.py def pytest_terminal_summary(t

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

我试图在
conftest.py
文件中定义
pytest\u sessionfinish
,但我在那里只看到
testsfailed
testscollected
属性

我还需要知道通过、跳过的测试数量以及所花的总时间。由于pytest会在每次会话结束时打印这些信息,因此我假设有一种编程方式来检索这些信息。

使用钩子。统计信息由
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')
不幸的是,
\u pytest.terminal.TerminalReporter
还不属于这个项目,所以最好直接检查


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

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

但是,根据您所处的钩子,您可能无法获得完整的统计信息/正确的持续时间,因此建议谨慎。

您应该查看请求夹具。它具有所有会话方法,其中包含有关测试执行状态的信息。更多信息请点击这里:谢谢,这非常有效。我确实在TerminalReporter中找到了stats字典,但不知道如何从
pytest\u sessionfinish
访问它。我也不知道
xfailed
xpassed
测试。