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结果格式调整字段索引
- 对于大型测试,考虑性能影响
这种方案能够实现只发送失败接口信息,帮助团队快速定位问题而不被成功用例干扰。