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

86 篇文章 8 订阅
14 篇文章 1 订阅

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 发送请求更实在。

  • 案例一

    由于我这边创建的钉钉群机器人,安全设置只添加一个【自动化】的关键字,消息的文本内容中只要有这几个字就可以通过校验。发送消息的代码如下

    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 初始化参数介绍

    1606375292970.png

     

  • 案例

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 这个方法还有更多的配置参数,大家可以在使用的时候可以根据需求来选择。

    1606376156467.png

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



 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值