pytest中pytest_terminal_summary统计测试执行的情况并生成总结描述

示例场景

在测试执行结束时生成汇总报告。

from lib.util.sendWhat import send_msg
import time
from colorama import Fore, Style, init
from _pytest.terminal import TerminalReporter

# 初始化 colorama
init(autoreset=True)


class CustomSummaryReporter:
    def __init__(self, terminalreporter: TerminalReporter):
        self.terminalreporter = terminalreporter

    def generate_summary(self):
        stats = self.terminalreporter.stats
        total = self.terminalreporter._numcollected
        passed = len(stats.get('passed', []))
        failed = len(stats.get('failed', []))
        error = len(stats.get('error', []))
        skipped = len(stats.get('skipped', []))
        xfailed = len(stats.get('xfailed', []))
        xpassed = len(stats.get('xpassed', []))  # 预期失败但实际通过的用例
        start_time = self.terminalreporter._sessionstarttime
        duration = time.time() - start_time
        duration_str = time.strftime("%H:%M:%S", time.gmtime(duration))
        desc = f"""
            本次执行情况如下:
            总用例数为:{total}
            通过用例数:{passed}
            失败用例数: {failed}
            错误用例数:{error}
            预期失败的用例:{xfailed}
            预期失败但实际通过的用例:{xpassed}
            跳过用例数:{skipped} 
            执行时长:{duration_str}
            测试报告地址:[http://192.168.220.1:60000/index.html](http://192.168.220.1:60000/index.html)
        """
        # 使用 colorama 设置颜色和样式,拼接分隔符
        summary_title = f"{Fore.YELLOW}{Style.BRIGHT}{'-' * 20} Execution Summary {'-' * 20}{Style.RESET_ALL}"

        # 在终端中打印结果
        self.terminalreporter.write(summary_title + '\n')  # 打印带颜色和分隔符的标题
        self.terminalreporter.write(f"{Fore.GREEN}{desc}{Style.RESET_ALL}\n")  # 将描述内容设置为绿色

        # 发送描述信息到企业微信
        send_msg(desc)


def pytest_terminal_summary(terminalreporter: TerminalReporter):
    reporter = CustomSummaryReporter(terminalreporter)
    reporter.generate_summary()

终端控制台输出:
在这里插入图片描述

发送到企业微信的结果:
在这里插入图片描述

解释:

1.CustomSummaryReporter 类:

init 方法:接收 TerminalReporter 实例并存储在实例变量中。
generate_summary 方法:生成测试结果的总结,包括计算统计信息、格式化输出和发送到企业微信。

2.pytest_terminal_summary 函数:

创建 CustomSummaryReporter 实例,并调用 generate_summary 方法以打印总结和发送通知。
这种方式将逻辑封装在 CustomSummaryReporter 类中,使得代码更具模块性和可维护性,并且在 pytest_terminal_summary 函数中使用了这个类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值