Pytest框架之 - Hooks函数统计测试结果

  • 作者:lwj
  • 分类:Pytest
  • 发表日期:2021-01-24 20:13:33
  • 阅读(627)
  • 评论(0)

用例执行完成后我们希望能获取到执行结果,这样方便我们快速统计用例的执行情况
也可以把获取到的结果当成总结报告,发邮件或者钉钉群通知的时候可以先统计测试结果,再加上allure报告。这样子测试结果就很直观

pytest_terminal_summary

关于TerminalReporter类可以在_pytest.terminal中查看到

from _pytest import terminal
pytest_terminal_summary(terminalreporter, exitstatus, config)
最后的结果汇总,可以拿到所有的执行结果
参数:
- terminalreporter (_pytest.terminal.TerminalReporter) – 内部使用的终端测试报告对象
- exitstatus (int) – 返回给操作系统的返回码
- config(_pytest.config.Config) - pytest config对象

所有测试执行完毕之后,返回exit status之前的阶段。会调用pytest_terminal_summaryterminal打印一些summary信息,比如pass、fail、error数量之类的总结信息

conftest.py中写个pytest_terminal_summary函数收集测试结果

#!/usr/bin/python3
# coding=utf-8
# Author: 文

def pytest_terminal_summary(terminalreporter, exitstatus, config):
    """统计次数结果"""
    case_dict = {}
    case_dict["case_pass"] = len(terminalreporter.stats.get('passed', []))          # 通过
    case_dict["case_fail"] = len(terminalreporter.stats.get('failed', []))          # 失败
    case_dict["case_error"] = len(terminalreporter.stats.get('error', []))          # 错误
    case_dict["case_skip"] = len(terminalreporter.stats.get('skipped', []))         # 跳过
    case_dict["case_xfail"] = len(terminalreporter.stats.get('xfailed', []))        # 标记失败-执行失败
    case_dict["case_xpass"] = len(terminalreporter.stats.get('xpassed', []))        # 标记失败-执行成功
    case_dict["case_rerun"] = len(terminalreporter.stats.get('rerun', []))          # 失败重跑总次数
    case_dict["case_time"] = round(time() - terminalreporter._sessionstarttime, 2)  # 测试用时,保留两位
    print(case_dict)

执行结果如下:

{'case_pass': 67, 'case_fail': 8, 'case_error': 0, 'case_skip': 2, 'case_xfail': 1, 'case_xpass': 1, 'case_rerun': 26, 'case_time': 25.95}
=============================================== short test summary info ===============================================
pytest_assume.plugin.FailedAssumption:
====================== 8 failed, 67 passed, 2 skipped, 1 xfailed, 1 xpassed, 26 rerun in 25.97s =======================

注:在通过pytest-xdist多进程执行测试用例时,会执行进程数+1次;即子进程数+最后合计的

觉得不错,支持一下!

提交评论

您尚未登录,登录之后方可评论~ 登录 or 注册

评论列表

暂无评论
返回顶部

建议反馈

1. 可在博文底部留言评论

2. 发邮件到i_suichuan@163.com