python使用企业微信机器人发送测试报告

python 专栏收录该内容
27 篇文章 0 订阅

自从企业微信添加了群机器人功能,我们现在使用机器人发送测试报告,最开始使用的是文本类型,但是感觉没有markdown的显示好看,索性就更换成了markdown类型的

官网上介绍的还可以发送图片和图文等类型,但是还没实操过,所以不多介绍,只介绍文本(text)和markdown类型

鼠标点击此处进入企业微信帮助文档页面

消息类型及数据格式 》文本类型

{
    "msgtype": "text",
    "text": {
        "content": "广州今日天气:29度,大部分多云,降雨概率:60%",
        "mentioned_list":["wangqing","@all"],
        "mentioned_mobile_list":["13800001111","@all"]
    }
}

在这里插入图片描述
消息类型及数据格式 》markdown类型

{
    "msgtype": "markdown",
    "markdown": {
        "content": "实时新增用户反馈<font color=\"warning\">132</font>,请相关同事注意。\n
         >类型:<font color=\"comment\">用户反馈</font> \n
         >普通用户反馈:<font color=\"comment\">117</font> \n
         >VIP用户反馈:<font color=\"comment\">15例</font>"
    }
}

在这里插入图片描述
目前支持的markdown语法是如下的子集:

  1. 标题 (支持1至6级标题,注意#与文字中间要有空格)
# 标题一
## 标题二
### 标题三
#### 标题四
##### 标题五
###### 标题六
  1. 加粗
**bold**
  1. 链接
[这是一个链接](http://work.weixin.qq.com/api/doc)
  1. 引用
> 引用文字
  1. 字体颜色(只支持3种内置颜色)
<font color="info">绿色</font>
<font color="comment">灰色</font>
<font color="warning">橙红色</font>

接下来我们使用python代码先实现markdown类型

import apiProject as ap


class WeChat:

    def __init__(self):
        self.conf = ap.HandleConf()
        self.read = ap.HandleFiles()
        ap.urllib3.disable_warnings()

    @staticmethod
    def message(project, end, total, passing, succeed, failing, skip, error, address):
        """
        需要发送到企业微信的文案信息
        :param project:         项目名称
        :param end:             指定端[web、app、h5]
        :param total:           总计
        :param passing:         通过率
        :param succeed:         通过数
        :param failing:         失败数
        :param skip:            跳过数
        :param error:           错误数
        :param address:         链接地址->放一个链接信息
        :return:                返回data信息
        """
        data = {
            "msgtype": "markdown",  # 消息类型,此时固定为markdown
            "markdown": {
                "content": "# **提醒!自动化测试反馈**\n#### **请相关同事注意,及时跟进!**\n"
                           "> 项目名称:<font color=\"info\">%s</font> \n"
                           "> 项目指定端:<font color=\"info\">%s</font> \n"
                           "> 测试用例总数:<font color=\"info\">%s条</font>;测试用例通过率:<font color=\"info\">%s</font>\n"
                           "> **--------------------运行详情--------------------**\n"
                           "> **成功数:**<font color=\"info\">%s</font>\n**失败数:**<font color=\"warning\">%s</font>\n"
                           "> **跳过数:**<font color=\"info\">%s</font>\n**错误数:**<font color=\"comment\">%s</font>\n"
                           "> ##### **报告链接:** [jenkins报告,请点击后进入查看](%s)" % (
                           project, end, total, passing, succeed, failing, skip, error, address)
                # 加粗:**需要加粗的字**
                # 引用:> 需要引用的文字
                # 字体颜色(只支持3种内置颜色)
                # 标题 (支持1至6级标题,注意#与文字中间要有空格)
                # 绿色:info、灰色:comment、橙红:warning
            }
        }
        return data

    def send_message(self, project, end, total, passing, succeed, failing, skip, error, address='', is_curl=False):
        """
        发送文案信息
        :param project:         项目名称
        :param end:             指定端[web、app、h5]
        :param total:           总计
        :param passing:         通过率
        :param succeed:         通过数
        :param failing:         失败数
        :param skip:            跳过数
        :param error:           错误数
        :param address:         链接地址->放一个链接信息
        :param is_curl:         判断是测试还是线上
        :return:
        """
        jenkins_address = self.jenkins_data()
        data = self.message(project, end, total, passing, succeed, failing, skip, error, address=jenkins_address)
        # 获取企业微信群机器人的url, 使用的python第三方库requests库发送的请求
        if is_curl:
            url = self.conf.get_value('WeChat', 'pro_curl')
            res = ap.requests.post(url=url, json=data, verify=False)
        else:
            url = self.conf.get_value('WeChat', 'test_curl')
            res = ap.requests.post(url=url, json=data, verify=False)
        return res.text

    def jenkins_data(self):
		
		# 登录jenkins,从jenkins获取报告信息
        account = self.read.read_yaml('jenkins_data', 'pro')
        server = ap.jenkins.Jenkins(account['jenkins_url'], username=account['user_name'], password=account['password'])
        jenkins_data = tuple(i['url'] for i in server.get_views())
        for i in jenkins_data:
            u = ap.urlparse(i)
            v_scheme, v_netloc, v_path = u.scheme, u.netloc, u.path
            if '9first_api_all' in v_path:
                return i
            else:
                return v_scheme + '://' + v_netloc + '/'

运行成功后,就会自动往指定企业微信群发送一个消息内容​
在这里插入图片描述
然后我们再来使用python代码实现文本类型( text ),就是把发送的格式修改成文本类型,所以我也就只改了这个静态方法

    @staticmethod
    def message(project, end, total, passing, succeed, failing, skip, error, address):
        """
        需要发送到企业微信的文案信息
        :param project:         项目名称
        :param end:             指定端[web、app、h5]
        :param total:           总计
        :param passing:         通过率
        :param succeed:         通过数
        :param failing:         失败数
        :param skip:            跳过数
        :param error:           错误数
        :param address:         链接地址->放一个链接信息
        :return:                返回data信息
        """
        data = {
            "msgtype": "text",  # 消息类型,此时固定为text
            "text": {
                "content": "提醒!自动化测试反馈\n请相关同事注意,及时跟进!\n"
                           "项目名称:%s\n"
                           "项目指定端:%s\n"
                           "测试用例总数:%s条;测试用例通过率:%s\n"
                           "--------------------运行详情--------------------\n"
                           "成功数:%s\n失败数:%s\n"
                           "跳过数:%s\n错误数:%s\n"
                           "报告链接:%s" % (
                           project, end, total, passing, succeed, failing, skip, error, address)
            }
        }
        return data

运行成功后,也会发送一个信息到指定企业微信群中,如下
在这里插入图片描述
两种发送信息对比下,没有markdown的好看,因为mark的可以字体加粗、加颜色、增连接等…所以瞬间就决定更换成了markdown类型,以上代码为接口自动化实操代码,如有代码臃肿之处还望给出建议。


小小总结可能会解决你的问题,也可能解决不了你的问题,但还是希望对您有所帮助,感谢阅读,如有疑义,欢迎来扰!未完待续…

一直都在努力变好中,希望您也是,加油!

在这里插入图片描述

  • 1
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值