unittestreport 实用功能之钉钉群推送测试结果
unittestreport 帮你搞定发送自动化测试结果到钉钉
前言
前段时间有小伙伴反馈,公司执行完自动化之后,需要把测试结果发送到钉钉群里面,应该怎么实现。其实往钉钉群里面发送测试结果很简单,获取到钉钉的 webhook 地址后,直接发送请求即可。但是也有小伙伴表示不知道从何下手,那么今天小编就来给大家讲讲如何去做。
1、钉钉群机器人创建
要往钉钉群中发送消息,那么首先咱们得自定义一个钉钉群机器人,群机器人的定义非常简单,钉钉开放平台(https://ding-doc.dingtalk.com/)中有详细的教程,大家可以按这个文档教程去创建一个群机器人,创建群机器人的时候有三种安全设置,关键字校验,有签名校验,有 ip 地址校验,大家根据需求去选择即可。
-
钉钉开放平台配置图
机器人创建好了之后会有一个 webhook 的地址,这个地址大家一定要保存下来,咱们后续往钉钉群发通知,直接这个 webhook 的地址发送即可。webhook 的格式如下:
https://oapi.dingtalk.com/robot/send?access_token=XXXXXX
2、案例演示
通过上面创建好群机器人之后,那么接下来就可以通过 webhook 地址发送消息了。关于消息发送钉钉也提供了 SDK,钉钉官方文档上面也有案例介绍。因为小编用的是 python 语言,于是就把钉钉提供的 python 版本的 sdk 下载下来看了一下,发现钉钉官方提供的 python 版 SDK 提供给用户使用的接口真的不太友好【一看就不是专业写 py 的人写出来的,里面的 py 代码写的真是烂的可以,居然还有很多分号(;), 小小的吐槽一下 】,既然钉钉官方提供的 SDK 不太优化,那么就直接抛弃不用,直接用 requests 发送请求更实在。
-
案例一
由于我这边创建的钉钉群机器人,安全设置只添加一个【自动化】的关键字,消息的文本内容中只要有这几个字就可以通过校验。发送消息的代码如下
import requests # webhook地址 url = "https://oapi.dingtalk.com/robot/send?access_token=6e2a63c2b9d870ee878335b5ce6d5d102323232" # 发送的消息 data = { "msgtype": "text", "text": { "content": "自动化测试,测试一下,请忽略" }, "at": { "atMobiles": [], "isAtAll": False } } 发送请求获取结果 res = requests.post(url=url, json=data) print(res.text)
运行上述代码,钉钉群中就可以收到咱们发送的消息。当然如果安全设置里面设置了签名的咱们在发送请求的时候,要把签名加上。至于如何生成签名钉钉开放平台里面也提供了参考代码。SDK 里面也做了封装,只有配置一下签名校验的秘钥即可,因为我这边没使用官方提供的 SDK,关于添加秘钥这些操作,小编自己封装了一个模块用来代替官方的 SDK。因为考虑到要发送测试结果,这边把封装好的模块集成到了 unittestreport 中。下面给大家介绍如何使用 unittestreport 来发送钉钉群消息。
3、unittestreport 发送钉钉消息
unittestreport 是柠檬班木森老师基于 unittest 框架开发的一个扩展库,没有用过 unittestreport 的可以去看看详细的使用文档( unittestreport 详细功能使用文档(V1.1.1) ),接下来给大家介绍一下如何使用 unittestreport 来发送钉钉群消息。
unittestreport 模块中实现了一个 DingTalk 的类,可以用来发送钉钉群消息,对与签名验证也做了封装,需要进行签名验证的话,在实例化 DingTalk 对象的时候,通过 secret 参数传入秘钥即可。
-
DingTalk 初始化参数介绍
-
案例
from unittestreport.core.dingtalk import DingTalk data = { "msgtype": "text", "text": { "content": "自动化测试,测试一下,请忽略" }, "at": { "atMobiles": [], "isAtAll": False } } url = 'webhook地址' ding = DingTalk(url=url, data=data, secret='秘钥') dins.send_info()
4、发送测试结果到钉钉
通过上述案例的方式,我们可以根据需求发送消息到钉钉群,大家根据钉钉开放平台上的消息类型去发送即可。关于把测试结果发送到钉钉群,那么 unittestreport 里面还做了更好的封装。具体我们先来看案例代码
-
案例代码:
```python import unittest from unittestreport import TestRunner # 收集用例到套件 suite = unittest.defaultTestLoader.discover(CASE_DIR) runner = TestRunner(suite) # 执行用例 runner.run() url = "https://oapi.dingtalk.com/robot/send?access_token=6e2a63c2b9d870ee878335b5ce6d5d10bb1218b8e64a4e2b55f96a6d116aaf50" # 发送钉钉通知 runner.dingtalk_notice(url=url, key='钉钉安全设置的关键字',secret='钉钉安全设置签名的秘钥') # 备注:关键字和秘钥,根据创建钉钉机器人时设置的去添加,没有设置就不需要传这个参数。
通过上面方式执行完测试用例,我们就可以再钉钉群收到测试执行的结果。
-
dingtalk_notice 方法更多参数介绍
关于 dingtalk_notice 这个方法还有更多的配置参数,大家可以在使用的时候可以根据需求来选择。
关于使用 unittestreport 发送测试结果到钉钉群,就给大家到这里啦。
本文地址:https://blog.csdn.net/ningmengban/article/details/110930968
上一篇: MDL