unittestreport 实用功能之钉钉群推送测试结果

unittestreport 帮你搞定发送自动化测试结果到钉钉

前言

前段时间有小伙伴反馈,公司执行完自动化之后,需要把测试结果发送到钉钉群里面,应该怎么实现。其实往钉钉群里面发送测试结果很简单,获取到钉钉的 webhook 地址后,直接发送请求即可。但是也有小伙伴表示不知道从何下手,那么今天小编就来给大家讲讲如何去做。

1、钉钉群机器人创建

要往钉钉群中发送消息,那么首先咱们得自定义一个钉钉群机器人,群机器人的定义非常简单,钉钉开放平台(https://ding-doc.dingtalk.com/)中有详细的教程,大家可以按这个文档教程去创建一个群机器人,创建群机器人的时候有三种安全设置,关键字校验,有签名校验,有 ip 地址校验,大家根据需求去选择即可。

1606371214050.png

机器人创建好了之后会有一个 webhook 的地址,这个地址大家一定要保存下来,咱们后续往钉钉群发通知,直接这个 webhook 的地址发送即可。webhook 的格式如下:

https://oapi.dingtalk.com/robot/send?access_token=XXXXXX

2、案例演示

通过上面创建好群机器人之后,那么接下来就可以通过 webhook 地址发送消息了。关于消息发送钉钉也提供了 SDK,钉钉官方文档上面也有案例介绍。因为小编用的是 python 语言,于是就把钉钉提供的 python 版本的 sdk 下载下来看了一下,发现钉钉官方提供的 python 版 SDK 提供给用户使用的接口真的不太友好【一看就不是专业写 py 的人写出来的,里面的 py 代码写的真是烂的可以,居然还有很多分号(;), 小小的吐槽一下 】,既然钉钉官方提供的 SDK 不太优化,那么就直接抛弃不用,直接用 requests 发送请求更实在。

运行上述代码,钉钉群中就可以收到咱们发送的消息。当然如果安全设置里面设置了签名的咱们在发送请求的时候,要把签名加上。至于如何生成签名钉钉开放平台里面也提供了参考代码。SDK 里面也做了封装,只有配置一下签名校验的秘钥即可,因为我这边没使用官方提供的 SDK,关于添加秘钥这些操作,小编自己封装了一个模块用来代替官方的 SDK。因为考虑到要发送测试结果,这边把封装好的模块集成到了 unittestreport 中。下面给大家介绍如何使用 unittestreport 来发送钉钉群消息。

3、unittestreport 发送钉钉消息

unittestreport 是柠檬班木森老师基于 unittest 框架开发的一个扩展库,没有用过 unittestreport 的可以去看看详细的使用文档( unittestreport 详细功能使用文档(V1.1.1) ),接下来给大家介绍一下如何使用 unittestreport 来发送钉钉群消息。

unittestreport 模块中实现了一个 DingTalk 的类,可以用来发送钉钉群消息,对与签名验证也做了封装,需要进行签名验证的话,在实例化 DingTalk 对象的时候,通过 secret 参数传入秘钥即可。

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='钉钉安全设置签名的秘钥')
# 备注:关键字和秘钥,根据创建钉钉机器人时设置的去添加,没有设置就不需要传这个参数。

通过上面方式执行完测试用例,我们就可以再钉钉群收到测试执行的结果。

关于使用 unittestreport 发送测试结果到钉钉群,就给大家到这里啦。

5 操作
nmb_musen 在 2020-11-30 15:38:42 更新了该帖
nmb_musen 在 2020-11-30 15:37:26 更新了该帖
nmb_musen 在 2020-11-30 15:35:47 更新了该帖
nmb_musen 在 2020-11-30 15:34:19 更新了该帖 nmb_musen 在 2020-11-30 15:23:56 更新了该帖
回帖
请输入回帖内容 ...