ant+Jmeter+jenkins接口自动化,如何实现把执行失败的接口信息单独发邮件?

B站讲的最好的自动化测试教程,工具+框架附项目实战一套速通,零基础完全轻松掌握!自动化测试课程、web/app/接口

实现Ant+JMeter+Jenkins接口自动化失败接口邮件通知方案

要实现只发送执行失败的接口信息邮件通知,可以通过以下步骤实现:

方案概述

  1. 使用JMeter执行测试并生成结果报告
  2. 使用Ant解析JMeter结果,提取失败用例
  3. 配置Jenkins邮件通知,只包含失败信息

详细实现步骤

1. 配置JMeter测试计划

  • 确保测试计划中启用了"Save Responses to a file"选项
  • 配置合适的监听器(如"View Results Tree"或"Summary Report")

2. 创建Ant构建文件(build.xml)

xml
<project name="JMeter-Test" default="run" basedir=".">
<property name="jmeter.home" value="/path/to/jmeter"/>
<property name="report.dir" value="${basedir}/report"/>
<property name="failure.report.file" value="${report.dir}/failures.txt"/>
<target name="run">
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/> <jmeter jmeterhome="${jmeter.home}" resultlog="${report.dir}/results.jtl">
<testplans dir="${basedir}" includes="*.jmx"/>
</jmeter>
<!-- 提取失败用例 -->
<xslt in="${report.dir}/results.jtl" out="${report.dir}/report.html" style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl"/>
<!-- 生成失败报告 -->
<script language="javascript">
<![CDATA[
importPackage(http://java.io);

var logFile = new File(project.getProperty("report.dir") + "/results.jtl");
var failureFile = new File(project.getProperty("failure.report.file"));
var writer = new PrintWriter(new FileWriter(failureFile));
if (logFile.exists()) {


var reader = new BufferedReader(new FileReader(logFile));
var line;
var hasFailures = false;

// 跳过第一行(标题行)
reader.readLine();
while ((line = reader.readLine()) != null) {
var fields = line.split(",");
// 检查是否失败(字段8为success标志)
if (fields.length > 8 && "false".equals(fields[8].toLowerCase())) { hasFailures = true;
writer.println("失败接口: " + fields[2]); // 字段2是标签/接口名
writer.println("响应码: " + fields[3]);
writer.println("响应消息: " + fields[4]);
writer.println("失败原因: " + fields[9]);
writer.println("------------------------");
}
}
reader.close();
if (!hasFailures)
{
writer.println("所有接口测试通过,无失败用例");
}
}else {
writer.println("未找到测试结果文件");
}
writer.close();
]]>
</script>
</target>
</project>

3. 配置Jenkins任务

  1. 创建自由风格项目
  2. 添加构建步骤:"Invoke Ant"
  3. 配置Ant构建文件路径和目标
  4. 添加构建后操作:"Editable Email Notification"

4. 配置Jenkins邮件通知

在"Editable Email Notification"配置中:

  1. 设置收件人列表
  2. 在"Attachments"中添加:report/failures.txt
  3. 配置邮件内容模板,例如:

text
构建项目: ${PROJECT_NAME} 构建编号: ${BUILD_NUMBER} 构建状态: ${BUILD_STATUS} 失败接口详情见附件或如下内容: ${FILE,path="report/failures.txt"}

  1. 设置触发条件:"Failure"和"Unstable"

5. 高级配置(可选)

  • 可以修改Ant脚本生成更详细的HTML格式失败报告
  • 可以配置Jenkins只在失败时发送邮件:
    • 在"Advanced Settings"中设置"Send To"为"Recipient List"
    • 勾选"Send email for every unstable build"和"Send separate emails to individuals who broke the build"

替代方案

如果不想使用Ant解析结果,也可以:

  1. 使用JMeter的"SMTP Sampler"在测试计划中直接发送失败通知
  2. 使用Jenkins的"JMeter Plugin",它自带失败分析功能
  3. 使用JMeter的"OS Process Sampler"调用外部脚本处理结果

注意事项

  1. 确保Jenkins服务器可以访问邮件服务器
  2. 测试结果文件路径要正确配置
  3. 根据实际JMeter结果格式调整字段索引
  4. 对于大型测试,考虑性能影响

这种方案能够实现只发送失败接口信息,帮助团队快速定位问题而不被成功用例干扰。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/912256.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/912256.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

恶意Python包“psslib“实施拼写错误攻击,可强制关闭Windows系统

Socket威胁研究团队发现一个名为psslib的恶意Python包&#xff0c;该软件包伪装成提供密码安全功能&#xff0c;实则会突然关闭Windows系统。这个由化名umaraq的威胁行为者开发的软件包&#xff0c;是对知名密码哈希工具库passlib的拼写错误仿冒&#xff08;typosquatting&…

云原生灰度方案对比:服务网格灰度(Istio ) 与 K8s Ingress 灰度(Nginx Ingress )

服务网格灰度与 Kubernetes Ingress 灰度是云原生环境下两种主流的灰度发布方案&#xff0c;它们在架构定位、实现方式和适用场景上存在显著差异。以下从多个维度对比分析&#xff0c;并给出选型建议&#xff1a; 一、核心区别对比 维度服务网格灰度&#xff08;以 Istio 为例…

科技如何影响我们的生活?

科技已成为我们生活中不可或缺的一部分&#xff0c;彻底改变了我们工作、沟通和生活的方式。从智能手机到智能家居&#xff0c;科技已渗透到我们生活的每个角落。无论是用手机闹钟开启新的一天&#xff0c;通过 Alexa 开关灯光&#xff0c;还是打开 Uber 或 Lyft 打车上班&…

Re--攻防世界-基础android

Jadx 可以看到有账号密码输入 进入checkPassword函数 分析一下&#xff1a; 对每个字符 pass[len] 进行以下计算 pass[len] (char) (((255 - len) - 100) - pass[len]); 解密脚本 def decrypt_password(): password [] for len in range(12): c (255 - le…

InnoDB表空间结构-系统表空间

系统表空间整体结构 页号为7的SYS类型页结构

如何构建知识库

构建个人知识库是一个系统化的过程&#xff0c;需要结合工具选择、信息管理和持续优化。以下是分步骤的实用指南&#xff0c;包含现代工具和方法的建议&#xff1a; 一、明确知识库定位&#xff08;Why&#xff09; ​核心目标​ 学习型&#xff1a;支持学术研究/职业发展&…

3 大语言模型预训练数据-3.2 数据处理-3.2.2 冗余去除——2.SimHash算法文本去重实战案例:新闻文章去重场景

SimHash算法文本去重实战案例&#xff1a;新闻文章去重场景 一、案例背景与目标二、具体实现步骤与示例1. **待去重文本示例**2. **步骤1&#xff1a;文本预处理与特征提取**3. **步骤2&#xff1a;特征向量化与哈希映射**4. **步骤3&#xff1a;特征向量聚合**5. **步骤4&…

MSPM0G3507之GPIO配置报错 #Sysconfig报错

声明&#xff1a;本文完全免费阅读&#xff0c;如果你发现某天文章被设置了“VIP权限”&#xff0c;请私信我解除&#xff08;非笔者所为&#xff09;。 一、问题现象 在打开sysconfig后&#xff0c;GPIO这里会报错。 Unable to render selection Error:launchPadShortcut:Vali…

2025年检测相机十大品牌测评:工业级精度与场景化解决方案解析

一、引言 在工业自动化与智能制造领域&#xff0c;检测相机作为质量管控的核心硬件&#xff0c;正以“高精度、高速度、高适应性”的特性重塑生产流程。这类设备通过光学成像与智能算法结合&#xff0c;实现对工件表面缺陷、尺寸偏差、装配精度的精准检测&#xff0c;效率较传…

Python异步编程深度解析

一、异步编程范式演进 同步阻塞的困境&#xff1a;GIL限制与线程切换开销 事件循环本质&#xff1a;单线程并发模型 协程优势&#xff1a;比线程更轻量的执行单元 IO密集型场景&#xff1a;网络请求/文件操作的最佳实践 二、核心语法精要 import asyncioasync def fetch_…

网络缓冲区

用户态网络缓冲区 网络缓冲区原理为什么需要用户态网络缓冲区Linux下如何接收和发送数据包用户态网络缓冲区设计的本质 网络缓冲区代码实现 网络缓冲区原理 为什么需要用户态网络缓冲区 在网络开发中&#xff0c;我们经常使用到read/write/recv/send等系统调用接口&#xff0…

微信小程序实现简版点赞动画

这是第二次写canvas&#xff0c;基于微信小程序文档demo进行改写 demo效果为方块横向来回循环移动 我想做的是直播间那种点赞效果&#xff0c;竖向曲线移动、方块换成图片、点击添加绘制元素 第一阶段实现竖向曲线移动、点击添加绘制元素&#xff1b;下一阶段讲方块替换为图…

实现一个AI大模型当前都无法正确实现的基础二叉树读取算法

概述 图1: 图2: 上图帮大家温习完全二叉树的概念&#xff0c;本文讲的是完全顺序二叉树的初始化 华为的员工、考过华为OD的员工、参加过其他类似大厂的考试的员工一般做过二叉树的初始化&#xff0c;甚至有些还碰到过手撕代码时面试官要求做二叉树遍历&#xff0c;看完本文的…

【攻防篇】阿里云服务器中 如何关闭docker api端口

在阿里云服务器&#xff08;ECS&#xff09;上&#xff0c;Docker API 默认监听 2375&#xff08;非加密&#xff09;和 2376&#xff08;TLS加密&#xff09;端口。如果未正确配置&#xff0c;可能被恶意利用&#xff08;如挖矿攻击&#xff09;。以下是关闭和加固 Docker API…

暑假复习篇之类与对象

面向对象&#xff1a;①类与对象②封装③继承④接口 类与对象&#xff1a; 概念&#xff1a;类就是类别的意思 用class表示 / 面向对象编程&#xff0c;万物皆可编程&#xff0c;在程序中表示一个事物时&#xff0c;往往因为事物的复杂程度导致编程的代码非常复杂 【基本数…

RabbitMQ RPC模式Python示例

文章目录 1.服务端2.客户端3.调用结果 1.服务端 #!/usr/bin/env python3 # -*- coding: UTF-8 -*- """ File: rabbitmq_server.py Date: 2025/6/26 10:42 Author: xxx Description: 1. RabbitMQ服务端&#xff0c;支持多节点命令执行 2. 作为被控…

Rust代码规范之蛇形命名法和驼峰命名法

Rust 使用两种主要的命名风格&#xff1a;驼峰命名法&#xff08;UpperCamelCase&#xff09;和蛇形命名法&#xff08;snake_case&#xff09;。通常&#xff0c;类型&#xff08;如结构体、枚举、特征&#xff09;使用驼峰命名法&#xff0c;而变量、函数、方法等使用蛇形命名…

编写CSS的格式

1、内联样式的css import React, { PureComponent } from reactexport class App extends PureComponent {constructor() {super()this.state {fs: 20}}render() {const { fs } this.statereturn (<div><p style{{ color: red, fontSize: ${fs}px }}>哈哈哈哈哈…

Redis—主从复制

引言 Redis的应用还得是在分布式系统当中。在分布式系统中&#xff0c;涉及到一个非常关键的问题&#xff0c;就是单点问题。例如&#xff0c;如果某个服务器程序&#xff0c;只有一个节点&#xff08;只搞了一个物理服务器&#xff0c;来部署这个服务器程序&#xff09;&…

【网络安全】从IP头部看网络通信:IPv4、IPv6与抓包工具 Wireshark 实战

从IP头部看网络通信&#xff1a;IPv4、IPv6与抓包工具 Wireshark实战 在网络安全分析和数据通信的世界中&#xff0c;一切都始于“数据包”。数据包是网络上传输的基本单位&#xff0c;而数据包的结构与内容&#xff0c;正是我们理解网络行为的核心。本文将带你深入了解 IP 协…