pytest+request+allure+excel接口自动化搭建 从0到1【五 钉钉/飞书通知】

本文介绍了如何通过Python脚本结合Jenkins获取测试报告,并利用钉钉和飞书群机器人将测试结果推送到工作群。首先,获取Jenkins的最新构建记录和Allure执行数据,然后创建钉钉和飞书群机器人进行通知。通过这种方式,团队成员可以实时了解测试状态,提高工作效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


通常情况下正规公司流程发送测试报告等事宜都是通过邮箱来走流程的,但是也有很多公司使用钉钉/飞书等办公软件。上班肯定是需要交流的嘛。那么直接将测试报告发送至钉钉/飞书群 岂不是大家都可以看到?毕竟邮件大家不会一直关注的。

获取Jenkins 报告记录

使用自动通知我们将会用到jenkins集成,我的其他文件有安装记录,可以自己翻阅一下
利用jenkins构建完成后会产生一条构建记录的,只需要将钉钉/飞书推送该记录即可。
在这里插入图片描述

代码开始之前需要安装jenkins依赖包
pip3 install jenkins

import jenkins
import time

# 定义一个构造函数 每次执行前先获取
def __init__(self):
    self.errorMsg = ""
    self.tile = time.strftime("%Y-%m-%d %H:%M:%S")
    try:
    """
    	捕获链接异常或读取异常信息
    """
        self.jenkins_url = con.jenkins_url  # jenkins地址 我这里是封装在配置文件当中
        self.server = jenkins.Jenkins(self.jenkins_url, username=con.jenkins_name, password=con.jenkins_passwd)	# 连接jenkins服务

        # 获取jenkins_url
        self.job_name = "job/autotest/"  # 拼接job名称
        self.job_url = self.jenkins_url + self.job_name  # job的url地址
        # 获取最后一次构建
        self.job_last_number = self.server.get_info(self.job_name)['lastBuild']['number']
        # #获取报告地址
        self.report_url = self.job_url + str(self.job_last_number) + '/allure'  # 报告地址
        log.debug("jenkins地址:%s" % self.report_url)
    except Exception as e:
        self.errorMsg = str(e)
        log.info("jenkins连接异常 %s" %e)

代码写完 记得模拟一下 是否可以正常获取最新的一次构建记录!

钉钉通知

记录构建好了 下面可以写推送通知
钉钉开放平台:钉钉开放平台

创建钉钉群机器人

群聊里面添加自定义机器人,设置机器人名称和自定义 关键词
在这里插入图片描述
设置完后 可以使用postman模拟一下推送通知!

url = 'hhttps://oapi.dingtalk.com/robot/send?access_token=xxx' # url = Webhook  直接复制

data = {
    "msgtype": "markdown",
    "markdown": {
        "title": "项目接口测试报告",
        "text": "<font color=\'#FFA500\'>[通知] </font>代码质量检测报告 \n\n --- \n\n <font color=\'#778899\' size=2>项目名称:测试 markdown 样式项目</font> \n\n <font color=\'#708090\' size=2>项目地址:[点击跳转详情](https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq)</font> \n\n <font color=\'#708090\' size=2>检测分支:master</font> \n\n <font color=\'#708090\' size=2>bug数量:</font><font color=\'#FF0000\' size=2>3</font> \n\n <font color=\'#708090\' size=2>相关人员:@13282148187</font> \n\n --- \n\n  **播报时间:2020-12-20 13:55:00**" # 使用H5 格式编写样式
    },
    "at": {
        "atMobiles": [
            "群里面某人手机号"
        ],
        "isAtAll": false
    }
}

在这里插入图片描述
在这里插入图片描述
如果群消息获取到该通知 那就说明可以了。

获取Allure执行数据

将接口获取到信息和通知信息整合一起就可以了

# 读取allure报告文件中"prometheusData.txt"文件,循环遍历获取需要的值。

    # 飞书通知函数
    def inform(self):
        url = "https://open.feishu.cn/open-apis/bot/v2/hook/" + token
        currenttime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

        # 异常数据才发送通知
        if int(self.status_failed) > 0 or int(self.status_broken) > 0:
            try:
                method = 'post'
                headers = {
                    'Content-Type': 'application/json'
                }
                payload = {
                    "msg_type": "interactive",
                    "card": {
                        "config": {
                            "wide_screen_mode": True,
                            "enable_forward": True
                        },
                        "elements": [
                            {"tag": "div",
                                "text": {"content": "项目名称:" + con.project_name +
                                           "\n""Jenkins第" + str(self.job_last_number) + "次构建" +
                                           "\n\n用例运行总数:" + " " + self.retries_run + " 条" +
                                           "\n接口通过数量:" + " " + self.status_passed + " " +
                                           "\n手动跳过数量:" + " " + self.status_skipped + " " +
                                           "\n接口异常数量:" + " " + self.status_broken + " " +
                                           "\n不通过数量:" + " " + self.status_failed + " " +
                                           "\n总持续时长:" + " " + self.sum_duration + " 毫秒" +
                                           "\n运行时间:" + currenttime,
                                "tag": "lark_md"
                            }},
                            {"tag": "div", "text": {
                                "content": "<at id=all></at>", # 艾特所有人 艾特某个人需要userid的key
                                "tag": "lark_md"
                            }},
                                {"actions": [{
                                "tag": "button",
                                "text": {
                                    "content": "查看详细报告",
                                    "tag": "lark_md"
                                },
                                "url": self.report_url,
                                "type": "default",
                                "value": {},
                                }],
                                    "tag": "action"
                                },
                        ],
                        "header": {
                            "title": {
                                "content": con.hookword,    # 关键字
                                "tag": "plain_text"
                            },
                        },
                    },

                }
                requests.request(method=method, url=url, headers=headers, json=payload)

            except Exception as e:
                self.errorMsg = str(e)
                log.error("接口请求异常 %s" % e)

飞书通知

记录构建好了 下面可以写推送通知
飞书开放平台:飞书开放平台

创建飞书群机器人

方法与钉钉大同小异
在这里插入图片描述
postman测试推送

    def inform(self):
        url = "https://open.feishu.cn/open-apis/bot/v2/hook/" + con.token
        currenttime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

        if int(self.status_failed) >= 0 or int(self.status_broken) >= 0:
            try:
                method = 'post'
                headers = {
                    'Content-Type': 'application/json'
                }
                payload = {
                    "msg_type": "interactive",
                    "card": {
                        "config": {
                            "wide_screen_mode": True,
                            "enable_forward": True
                        },
                        "elements": [{
                            "tag": "div",
                            "text": {
                                "content": "项目名称:" + con.project_name +
                                           "\n""Jenkins第" + str(self.job_last_number) + "次构建" +
                                           "\n\n运行总数:" + " " + self.retries_run + " " +
                                           "\n通过数量:" + " " + self.status_passed + " " +
                                           "\n跳过数量:" + " " + self.status_skipped + " " +
                                           "\n异常数量:" + " " + self.status_broken + " " +
                                           "\n不通过数量:" + " " + self.status_failed + " " +
                                           "\n总持续时长:" + " " + self.sum_duration + "毫秒" +
                                           "\n运行时间:" + currenttime,
                                "tag": "lark_md"
                            }}, {"actions": [{
                                "tag": "button",
                                "text": {
                                    "content": "查看详细报告",
                                    "tag": "lark_md"
                                },
                                "url": self.report_url,
                                "type": "default",
                                "value": {}
                            }], "tag": "action"}],
                        "header": {
                            "title": {
                                "content": con.hookword,
                                "tag": "plain_text"
                            }
                        }
                    }
                }
                rep = requests.request(method=method, url=url, headers=headers, json=payload)
                print(rep)

            except Exception as e:
                self.errorMsg = str(e)
                log.error("接口请求异常 %s" % e)

在这里插入图片描述

获取Allure执行数据

与钉钉类似…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Song_Lun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值