如果只是想实现将jenkins的构建结果发送到企业微信进行通知,最简便的方式是安装Qy Wechat Notification Plugin插件,网上教程很多就不重复写了,可参考:https://www.cnblogs.com/jianxuanbing/archive/2019/09/04/11459972.html

实现的效果如下:


以下是实现可配置的企业微信通知

1.建企业微信群,添加群机器人,获取机器人的webhook地址

2.jenkins中创建项目,配置如下:

general下This project is parameterized,添加两个string parameter

分别为企业微信机器人的webhook和项目异常时需通知的责任人

用户默认值填对应企业微信群中的用户名,才可保证发通知时能够@到对应的人,多个用户名之间用英文逗号隔开

填写构建执行命令

构建命令说明如下:

#执行测试用例    pybot.bat 用例路径
#将控制台输出导出到log.txt文件,控制台不再打印日志   >log.txt
#如果前面一条指令执行失败才执行||后面的指令     ||
#如果前面一条指令执行成功才执行&&后面的指令     &&
#执行python脚本,发送企业微信通知,传入webhook地址,jenkins项目名称,发送通知@责任人     python ../wechatNotice.py %url% %JOB_NAME% %principal%pybot.bat 目录名称/***.robot >log.txt || python ../wechatNotice.py %url% %JOB_NAME% %principal%

以上设置好,即可保存该项目

3.本次使用的是robot框架,测试用例运行完成后控制台输出的日志导出到log.txt文件如下

根据导出的日志获取运行失败的测试用例标题

#GetCaseTitle.py
#通过控制台输出的日志查找是否有运行失败的用例,如有则获取失败用例的标题class GetCaseTitle:def __init__(self):self.file = "log.txt"  #使用jenkins运行测试用例时,会将控制台输出的日志保存到log.txt文件def get_fail_case_title(self):fail_case_line = []file = open(self.file, 'r', encoding='gbk')for line in file:  # 查找失败的用例行if "FAIL" in line:line = str(line).replace(" ", "")fail_case_line.append(line)file.close()if len(fail_case_line)>0: #如果标记为失败的行数大于0fail_case_line = fail_case_line[:-1]  # 去掉最后1行的总运行结果行fail_case_title = []for title in fail_case_line:  # 分别获取失败case的标题title = title.split('|')[0]if title not in fail_case_line[-1]:  # 判断当前是否是最后一个用例标题,是则后面不再添加|符号fail_case_title.append(title + '  |  ')else:fail_case_title.append(title)fail_case_title = ''.join(fail_case_title)return fail_case_titleelse:return 0if __name__ == "__main__":GetCaseTitle().get_fail_case_title()

如存在运行失败的测试用例,则发送企业微信通知

#wechatNotice.py
#实现企业微信通知import requests
import json
import urllib3
# import time
import sys
from GetCaseTitle import GetCaseTitleurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)class InformRobot:def __init__(self,url): #webhook地址self.url = urlself.sess = requests.session()def markdown_robot(self, report_url, principal, failcase):data = {"msgtype": "markdown",  # 消息类型,此时固定为markdown"markdown": {"content": "提醒!线上UI测试计划运行失败 \n" +f"测试报告链接:[{report_url}]({report_url}) \n" +f"负责人:@{principal}  \n"f"失败用例名称:{failcase}"}}re_post = self.sess.post(self.url, data=json.dumps(data), verify=False)print(re_post.content, data)if __name__ == "__main__":failcase = GetCaseTitle().get_fail_case_title()  #从GetCaseTitle.py获取执行失败的用例if failcase:   #如存在运行失败的用例则发送企业微信通知url=sys.argv[1]projectname = sys.argv[2]principal = sys.argv[3]# execute_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())report_url = "http://172.18.1.1:8080/job/" + projectname + "/ws/log.html"InformRobot(url).markdown_robot(report_url, principal, failcase)else:print("测试通过")

发送通知的效果如下:

jenkins使用python脚本发送企业微信通知相关推荐

  1. python实现由通知接口发送企业微信通知

    python实现由通知接口发送企业微信通知 问题背景 要点说明 1. 请求接口鉴权并返回token值 2.请求通知接口发送企业微信通知 3.通知内容中传入参数 问题背景 项目中需要通过 python ...

  2. Jenkins 添加Allure报告 并发送企业微信通知

    Jenkins 执行完测试后使用Allure 测试结果 安装Allure插件 Jenkins->管理Jenkins->插件管理 选择Allure安装 安装后,Global Tool Con ...

  3. 【Java开发】Java实现调用微信机器人,发送企业微信通知

    企业微信机器人发送消息 一.可能需要的依赖 二.机器人地址号查看 三.效果展示 四.具体代码 一.可能需要的依赖 <dependency><groupId>org.apache ...

  4. 利用python脚本实现企业微信机器人定时天气预报

    实现效果图 代码分析 import requests #这个库用来获取网页信息 from bs4 import BeautifulSoup #这个库用来分析选择网页的信息def get_content ...

  5. python脚本给企业微信群发送图片

    转载的,精简了一下 1,先在企微种添加一个机器人,然后复制他的webhook结尾的一串key(识别码),创建就有,然后替换到下面代码中,创建机器人参考链接:https://qinglian.tence ...

  6. 14、持续集成流水线实践:Jenkins 的企业微信通知

    Jenkins 的企业微信通知 随着现在企业移动端办公越来越普及,很多公司都在使用企业微信,如果流水线的通知可以通过企业微信发送是不是更加方便和直接? Jenkins-wechat-notifier插 ...

  7. [企业微信通知系列]Jenkins发布后自动通知

    一.前言 最近使用Jenkins进行自动化部署,但是部署后,并没有相应的通知,虽然有邮件发送通知,但是发现邮件会受限于接收方的接收设置,导致不能及时看到相关的发布内容.而由于公司使用的是企业微信,因此 ...

  8. 使用Python实现给企业微信发送消息功能

    本文将介绍如何使用python3给企业微信发送消息,文中有详细的图文解说及代码示例,对正在学习python的小伙伴很有帮助,需要的朋友可以参考下.编程资料点击领取 目录 一.概述 二.python脚本 ...

  9. jenkins的企业微信通知报错:No appropriate protocol

    jenkins的企业微信通知报错:No appropriate protocol (protocol is disabled or cipher suites are inappropriate) 卸 ...

最新文章

  1. JS 保持数组长度为3位并且值不重复
  2. Hadoop-2.7.4 集群快速搭建
  3. 用jar命令将Web应用打包成war文件的简单方法
  4. 图解Oracle同义词
  5. 据中心水冷系统备品备件管理新思路
  6. 全志V3S代码中的bug之1
  7. 对话预训练_百度发布首个大规模隐变量对话模型PLATO
  8. Windows_Reverse2逆向寒假生涯(25/100)
  9. vue2.0 MintUI安装和基本使用
  10. oracle 28000错误码,Oracle数据库 ORA-28000 错误处理方式
  11. R语言聚类算法之期望最大化聚类(Expectation Maximization Algorithm)
  12. laravel配置加解密
  13. 第1章-导言-知识点
  14. 深度学习非自回归语音合成与自回归语音合成对比
  15. 不一样的AI:“上天入地”的IBM人工智能
  16. pandas获取全部列名_pandas获取全部列名_pandas DataFrame数据重命名列名的几种方式...
  17. AndroidCamera学习笔记二 基本流程及框架
  18. 如何使用pem文件登录服务器,如何用pem链接服务器
  19. android视频自动旋转,Android 使用PLDroidPlayer播放网络视频 根据视频角度自动旋转...
  20. python学习之手把手教你将图片变成黑白或彩色字符画(骚操作)

热门文章

  1. 南京理工大学计算机学院张勇,2015年南京理工大学研究生数模竞赛获奖名单
  2. 深入浅出的解释什么是tensor
  3. 用户注册增强:用户登录时显示进度条
  4. 数值计算之 线搜索法,Armijo,Wolfe,Goldstein条件,回溯法
  5. Anaconda使用感悟
  6. 安防 海康摄像机视频存储服务器
  7. Java手写Spring的AOP(切面织入)小Demo--盲僧代理击飞 亚索接大实例
  8. netconf协议开发
  9. 这个春节,小灰收到一件不寻常的礼物
  10. 数据统计与分析基础实验一:基本语法与运算(R语言)