python使用企业微信机器人发送测试报告
自从企业微信添加了群机器人功能,我们现在使用机器人发送测试报告,最开始使用的是文本类型,但是感觉没有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级标题,注意#与文字中间要有空格)
# 标题一 ## 标题二 ### 标题三 #### 标题四 ##### 标题五 ###### 标题六
2、加粗
**bold**
3、链接
[这是一个链接](http://work.weixin.qq.com/api/doc)
4、引用
> 引用文字
5、字体颜色(只支持3中内置颜色)
<font color="info">绿色</font> <font color="comment">灰色</font> <font color="warning">橙红色</font>
接下来我们使用python代码先实现markdown类型
1 import apiProject as ap 2 3 4 class WeChat: 5 6 def __init__(self): 7 self.conf = ap.HandleConf() 8 self.read = ap.HandleFiles() 9 ap.urllib3.disable_warnings() 10 11 @staticmethod 12 def message(project, end, total, passing, succeed, failing, skip, error, address): 13 """ 14 需要发送到企业微信的文案信息 15 :param project: 项目名称 16 :param end: 指定端[web、app、h5] 17 :param total: 总计 18 :param passing: 通过率 19 :param succeed: 通过数 20 :param failing: 失败数 21 :param skip: 跳过数 22 :param error: 错误数 23 :param address: 链接地址->放一个链接信息 24 :return: 返回data信息 25 """ 26 data = { 27 "msgtype": "markdown", # 消息类型,此时固定为markdown 28 "markdown": { 29 "content": "# **提醒!自动化测试反馈**\n#### **请相关同事注意,及时跟进!**\n" 30 "> 项目名称:<font color=\"info\">%s</font> \n" 31 "> 项目指定端:<font color=\"info\">%s</font> \n" 32 "> 测试用例总数:<font color=\"info\">%s条</font>;测试用例通过率:<font color=\"info\">%s</font>\n" 33 "> **--------------------运行详情--------------------**\n" 34 "> **成功数:**<font color=\"info\">%s</font>\n**失败数:**<font color=\"warning\">%s</font>\n" 35 "> **跳过数:**<font color=\"info\">%s</font>\n**错误数:**<font color=\"comment\">%s</font>\n" 36 "> ##### **报告链接:** [jenkins报告,请点击后进入查看](%s)" % ( 37 project, end, total, passing, succeed, failing, skip, error, address) 38 # 加粗:**需要加粗的字** 39 # 引用:> 需要引用的文字 40 # 字体颜色(只支持3种内置颜色) 41 # 标题 (支持1至6级标题,注意#与文字中间要有空格) 42 # 绿色:info、灰色:comment、橙红:warning 43 } 44 } 45 return data 46 47 def send_message(self, project, end, total, passing, succeed, failing, skip, error, address='', is_curl=False): 48 """ 49 发送文案信息 50 :param project: 项目名称 51 :param end: 指定端[web、app、h5] 52 :param total: 总计 53 :param passing: 通过率 54 :param succeed: 通过数 55 :param failing: 失败数 56 :param skip: 跳过数 57 :param error: 错误数 58 :param address: 链接地址->放一个链接信息 59 :param is_curl: 判断是测试还是线上 60 :return: 61 """ 62 jenkins_address = self.jenkins_data() 63 data = self.message(project, end, total, passing, succeed, failing, skip, error, address=jenkins_address) 64 # 获取企业微信群机器人的url, 使用的python第三方库requests库发送的请求 65 if is_curl: 66 url = self.conf.get_value('WeChat', 'pro_curl') 67 res = ap.requests.post(url=url, json=data, verify=False) 68 else: 69 url = self.conf.get_value('WeChat', 'test_curl') 70 res = ap.requests.post(url=url, json=data, verify=False) 71 return res.text 72 73 def jenkins_data(self): 74 75 # 登录jenkins,从jenkins获取报告信息 76 account = self.read.read_yaml('jenkins_data', 'pro') 77 server = ap.jenkins.Jenkins(account['jenkins_url'], username=account['user_name'], password=account['password']) 78 jenkins_data = tuple(i['url'] for i in server.get_views()) 79 for i in jenkins_data: 80 u = ap.urlparse(i) 81 v_scheme, v_netloc, v_path = u.scheme, u.netloc, u.path 82 if '9first_api_all' in v_path: 83 return i 84 else: 85 return v_scheme + '://' + v_netloc + '/'
运行成功后,就会自动往指定企业微信群发送一个消息内容
然后我们再来使用python代码实现文本类型( text ),就是把发送的格式修改成文本类型,所以我也就只改了这个静态方法
1 @staticmethod 2 def message(project, end, total, passing, succeed, failing, skip, error, address): 3 """ 4 需要发送到企业微信的文案信息 5 :param project: 项目名称 6 :param end: 指定端[web、app、h5] 7 :param total: 总计 8 :param passing: 通过率 9 :param succeed: 通过数 10 :param failing: 失败数 11 :param skip: 跳过数 12 :param error: 错误数 13 :param address: 链接地址->放一个链接信息 14 :return: 返回data信息 15 """ 16 data = { 17 "msgtype": "text", # 消息类型,此时固定为text 18 "text": { 19 "content": "提醒!自动化测试反馈\n请相关同事注意,及时跟进!\n" 20 "项目名称:%s\n" 21 "项目指定端:%s\n" 22 "测试用例总数:%s条;测试用例通过率:%s\n" 23 "--------------------运行详情--------------------\n" 24 "成功数:%s\n失败数:%s\n" 25 "跳过数:%s\n错误数:%s\n" 26 "报告链接:%s" % ( 27 project, end, total, passing, succeed, failing, skip, error, address) 28 } 29 } 30 return data
运行成功后,也会发送一个信息到指定企业微信群中
两种发送信息对比下,没有markdown的好看,因为mark的可以字体加粗、加颜色、增连接等......所以瞬间就决定更换成了markdown类型,以上代码为接口自动化实操代码,如有代码臃肿之处还望给出建议。
小小总结可能会解决你的问题,也可能解决不了你的问题,但还是希望对您有所帮助,感谢阅读,如有疑义,欢迎来扰!未完待续…
一直都在努力变好中,希望您也是,加油!
转载请附带原文链接,否则追究法律责任,谢谢!