自动化执行 - 钉钉机器人通知
Posted jwentest
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化执行 - 钉钉机器人通知相关的知识,希望对你有一定的参考价值。
背景
公司内部用钉钉来办公,钉钉支持机器人提醒,有各种各样的机器人提供选择,可以根据需求来定制机器人,达到提醒功能,如提醒某人请下午茶,233
思路
1. 添加机器人到群组中,这次将的是“自定义”机器人;
2. 添加后会发现有一个webhook的链接,可以点击“设置说明”查看详情
3. 可以通过post请求网这个webhook发送信息,机器人就可以在群里展示信息,文档里有定义不同的请求body;
文档地址:https://open-doc.dingtalk.com/docs/doc.htm?spm=a219a.7629140.0.0.karFPe&treeId=257&articleId=105735&docType=1
这里需要吐槽的一点,目前只发现text类型支持换行
4. 关键就是post请求里面的信息的填充,如果想到用python来处理;
5. 编写python脚本:大致思路就是解析自动化result文件,组装post请求
实际代码如下:
import requests import time import json import sys import hashlib import xml.dom.minidom HEADERS = {\'ua\': \'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/44.0.2403.125 Safari/537.36\'} DINGDING_URL= \'https://oapi.dingtalk.com/robot/send?access_token=your_access_token\' RESULT_FILE= \'/var/lib/jenkins/workspace/wm-api-autotest/target/surefire-reports/testng-results.xml\' REPORT_URL_FILE= \'/var/lib/jenkins/workspace/wm-api-autotest/target/allure-results/executor.json\' class Message(): def __init__(self): self.total=0; self.passed=0; self.failed=0; self.skipped=0; self.reportUrl=""; #解析文件获取结果数据 def analyze(self): #打开xml文档 dom = xml.dom.minidom.parse(RESULT_FILE) #得到文档元素对象 root = dom.documentElement self.total = root.getAttribute(\'total\') self.passed = root.getAttribute(\'passed\') self.failed = root.getAttribute(\'failed\') self.skipped = root.getAttribute(\'skipped\') #构建的次数统计在json文件中 file = open(REPORT_URL_FILE,\'r\') self.reportUrl=json.load(file)[\'reportUrl\'] #发送报告 def send_message_to_robot(self): url= DINGDING_URL message=\'wm-api自动化执行结果:\\n本次执行了{}条用例;\\n成功了{}条;\\n失败了{}条;\\n跳过了{}条;\\n查看详情请点击=> {}\'.format(self.total,self.passed,self.failed,self.skipped,self.reportUrl) data={"msgtype":"text","text":{"content":message,"title":"wm-api自动化结果通知"}} try: resp = requests.post(url,headers=HEADERS,json=data,timeout=(3,60)) except: print ("Send Message is fail!"); if __name__ == \'__main__\': message = Message() message.analyze(); message.send_message_to_robot();
6. jenkins设置,需要新增一个插件“Post build task”,用于构建后执行shell命令
7. 实际结果展示:
小结
1. 之前用邮件提醒,但邮件这东西容易被忽略,可以借助其他工具,如钉钉提醒;
2. 多接触/尝试新的东西没错;
以上是关于自动化执行 - 钉钉机器人通知的主要内容,如果未能解决你的问题,请参考以下文章