一、目标
目标:自动化测试报告,通过钉钉机器人实现自动消息推送,并点击消息推送链接查看报告
二、准备工作
1、Linux服务器上已部署Tomcat,生成报告文件report.html(本文基于报告已生成得情况下,此处不赘述),测试文件如:
2022-11-17_18_34_55_result.html
2、将报告文件上传至服务器Tomcat目录下指定位置:/tomcat/webapps/testreport/(专门建了testreport项目用于存放报告文件)
说明:python库用paramiko库,进行服务器连接,并通过sftp进行文件上传(上传sftp.put(local_path,remote_path),下载用 sftp.get()),具体文件路径根据实际项目调整。
注意:本地和远程均需是带文件名的完整路径。
import paramiko #创建SSHClient实例对象 ssh = paramiko.SSHClient() #调用方法,表示没有存储远程机器的公钥,允许访问 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy) #远程连接机器,地址,端口,用户名,密码 ssh.connect(服务器IP, 22, 'root', 密码) # 创建传输 sftp = ssh.open_sftp() # 文件本地路径 local_path = './report/{}'.format('2022-11-17_18_34_55_result.html') # 上传服务器得 remote_path = remote_path = '/opt/tomcat/tomcat/webapps/testreport/{}'.format('2022-11-17_18_34_55_result.html') # 执行上传 sftp.put(local_path, remote_path) sftp.close() #最后关闭连接 ssh.close()
上传成功:
浏览器访问tomcat服务地址:
3、创建钉钉机器人并通过python脚本对接钉钉消息推送接口
① 查看钉钉官方开发文档,自定义机器人接入部分:https://open.dingtalk.com/document/group/custom-robot-access
② 按照文档要求,创建钉钉群聊机器人,并在最后复制出机器人的Webhook地址,格式如:https://oapi.dingtalk.com/robot/send?access_token=XXXXXX
③ 通过python编写脚本请求消息发送,用到requests库的POST请求,注:官方提供了多种不同的模板,此处采用的是LINK格式的模板
import requests ding_url=此处为复制出来的webhook header = { 'Content-Type': 'application/json' } # 文本消息 # data = { # "msgtype": "text", # "text": {"content": "测试报告,我就是我, 是不一样的烟火"} # } # 链接消息,messgaeUrl为测试报告在服务器的访问地址 data = { "msgtype": "link", "link": { "text": "测试报告", "title": "测试已完成!", "picUrl": "", "messageUrl": "http://服务器IP/testreport/2022-11-17_18_25_47_result.html" } } r = requests.post(ding_url, headers=header, json=data) print(r.json())
④ 执行脚本,调用接口,效果如下,且点击可跳转链接打开服务器上的报告:
参考文件:
钉钉开放平台·自定义机器人接入:https://open.dingtalk.com/document/group/custom-robot-access