pytest之pytest_terminal_summary(terminalreporter, exitstatus, config)
1、pytest官方文档介绍,附图
def pytest_terminal_summary(terminalreporter, exitstatus, config): """Add a section to terminal summary reporting. :param _pytest.terminal.TerminalReporter terminalreporter: the internal terminal reporter object :param int exitstatus: the exit status that will be reported back to the OS :param _pytest.config.Config config: pytest config object .. versionadded:: 4.2 The ``config`` parameter. """ 翻译版本: def pytest_terminal_summary(terminalreporter, exitstatus, config): """ 执行完所有的测试用例后调用此hook函数,可以拿到所有的执行结果(pass, xfail, skip, xpass) :param terminalreporter: 内部使用的终端测试报告对象, _pytest.terminal.TerminalReporter :param exitstatus: 返回给操作系统的返回码 :param config: pytest的配置对象 :return: """
2、此hook函数作用在所有测试用例执行完(与会话相关的报告挂钩)
terminalreporter是一个TerminalReporter对象,收集了所有测试用例执行结果展示(pass, xfail, skip, xpass等)
主要用一个属性stats字典类型存放了用例的执行结果。键是测试用例执行的结果状态(warnings,deselected,error,skipped,xfailed,xpassed), 值是由TestReport对象(_pytest.report.py.TestReport)组成的列表
内部使用_numcollected变量存放了测试用例的数量
3、实战截图
def pytest_terminal_summary(terminalreporter, exitstatus, config): """ 执行完所有的测试用例后调用此hook函数,可以拿到所有的执行结果(pass, xfail, skip, xpass) :param terminalreporter: 内部使用的终端测试报告对象, _pytest.terminal.TerminalReporter :param exitstatus: 返回给操作系统的返回码 :param config: pytest的配置对象 :return: None """ print("terminalreporter:", terminalreporter) # 测试用例的数量 print(terminalreporter._numcollected) print(terminalreporter.stats) print("pass的用例数量:", len(terminalreporter.stats.get("passed", []))) print(type(terminalreporter.stats["passed"][1]))
4、执行结果
4 {'': [<TestReport 'testcase/test_getRegionCountry/test_GetRegionCountry.py::test_getRightrequest' when='setup' outcome='passed'>, <TestReport 'testcase/test_getRegionCountry/test_GetRegionCountry.py::test_getRightrequest' when='teardown' outcome='passed'>, <TestReport 'testcase/test_getRegionCountry/test_GetRegionCountry.py::test_postRightrequest' when='setup' outcome='passed'>, <TestReport 'testcase/test_getRegionCountry/test_GetRegionCountry.py::test_postRightrequest' when='teardown' outcome='passed'>, <TestReport 'testcase/test_getRegionCountry/test_GetRegionCountry.py::test_soap11Rightrequest' when='teardown' outcome='passed'>, <TestReport 'testcase/test_getRegionCountry/test_GetRegionCountry.py::test_adc' when='setup' outcome='passed'>, <TestReport 'testcase/test_getRegionCountry/test_GetRegionCountry.py::test_adc' when='teardown' outcome='passed'>], 'passed': [<TestReport 'testcase/test_getRegionCountry/test_GetRegionCountry.py::test_getRightrequest' when='call' outcome='passed'>, <TestReport 'testcase/test_getRegionCountry/test_GetRegionCountry.py::test_postRightrequest' when='call' outcome='passed'>], 'skipped': [<TestReport 'testcase/test_getRegionCountry/test_GetRegionCountry.py::test_soap11Rightrequest' when='setup' outcome='skipped'>], 'xpassed': [<TestReport 'testcase/test_getRegionCountry/test_GetRegionCountry.py::test_adc' when='call' outcome='passed'>]} pass的用例数量: 2 <class '_pytest.reports.TestReport'>
浙公网安备 33010602011771号