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

本贴最后更新于 1240 天前,其中的信息可能已经时过境迁

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 操作
mslemonban 在 2020-11-30 15:38:42 更新了该帖
mslemonban 在 2020-11-30 15:37:26 更新了该帖
mslemonban 在 2020-11-30 15:35:47 更新了该帖
mslemonban 在 2020-11-30 15:34:19 更新了该帖 mslemonban 在 2020-11-30 15:23:56 更新了该帖
1 回帖
请输入回帖内容 ...
  • wanglei327

    image.png

    为什么一直报错了,说是找不到模板,这个框架还可以使用吗