B站講的最好的自動化測試教程,工具+框架附項目實戰一套速通,零基礎完全輕松掌握!自動化測試課程、web/app/接口
實現Ant+JMeter+Jenkins接口自動化失敗接口郵件通知方案
要實現只發送執行失敗的接口信息郵件通知,可以通過以下步驟實現:
方案概述
- 使用JMeter執行測試并生成結果報告
- 使用Ant解析JMeter結果,提取失敗用例
- 配置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任務
- 創建自由風格項目
- 添加構建步驟:"Invoke Ant"
- 配置Ant構建文件路徑和目標
- 添加構建后操作:"Editable Email Notification"
4. 配置Jenkins郵件通知
在"Editable Email Notification"配置中:
- 設置收件人列表
- 在"Attachments"中添加:
report/failures.txt
- 配置郵件內容模板,例如:
text
構建項目: ${PROJECT_NAME} 構建編號: ${BUILD_NUMBER} 構建狀態: ${BUILD_STATUS} 失敗接口詳情見附件或如下內容: ${FILE,path="report/failures.txt"}
- 設置觸發條件:"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解析結果,也可以:
- 使用JMeter的"SMTP Sampler"在測試計劃中直接發送失敗通知
- 使用Jenkins的"JMeter Plugin",它自帶失敗分析功能
- 使用JMeter的"OS Process Sampler"調用外部腳本處理結果
注意事項
- 確保Jenkins服務器可以訪問郵件服務器
- 測試結果文件路徑要正確配置
- 根據實際JMeter結果格式調整字段索引
- 對于大型測試,考慮性能影響
這種方案能夠實現只發送失敗接口信息,幫助團隊快速定位問題而不被成功用例干擾。