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
英文地址,請注明出處:http://en.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 協…