Karate+Cucumber API自动化测试:Jenkins中无法生成emailable-report.html/index.html,如何将测试结果嵌入邮件正文?
解决Karate+Cucumber测试结果嵌入Jenkins邮件正文的问题
我来帮你搞定这个需求,咱们从生成适合嵌入的报告到Jenkins邮件配置一步步来:
第一步:生成可嵌入邮件的简化HTML报告
你提到target里没有emailable-report.html,这是因为默认Karate不会生成Cucumber的简化报告,咱们需要配置生成这个文件:
如果你用Maven项目:
- 在
pom.xml的build/plugins节点下添加Cucumber报告生成插件:<plugin> <groupId>net.masterthought</groupId> <artifactId>maven-cucumber-reporting</artifactId> <version>5.7.0</version> <!-- 可以替换成最新稳定版 --> <executions> <execution> <id>generate-cucumber-report</id> <phase>test</phase> <goals> <goal>generate</goal> </goals> <configuration> <projectName>API自动化测试报告</projectName> <outputDirectory>${project.build.directory}/cucumber-reports</outputDirectory> <cucumberOutput>${project.build.directory}/cucumber.json</cucumberOutput> <enableFlashCharts>false</enableFlashCharts> <!-- 避免邮件不支持Flash图表 --> <buildNumber>${BUILD_NUMBER}</buildNumber> </configuration> </execution> </executions> </plugin> - 确保Karate生成Cucumber JSON格式的报告,在运行测试的Maven命令里添加参数:
运行测试后,mvn test -Dkarate.output.path=target/cucumber.jsontarget/cucumber-reports文件夹里就会生成emailable-report.html,这个报告是简化的、适合嵌入邮件的版本。
如果你用Gradle项目:
- 在
build.gradle里添加Cucumber报告插件:plugins { id 'java' id 'net.masterthought.cucumber-reporting' version '5.7.0' } cucumberReports { outputDir = file("${buildDir}/cucumber-reports") jsonFiles = files("${buildDir}/cucumber.json") projectName = "API自动化测试报告" enableFlashCharts = false } - 运行测试时指定生成JSON报告:
之后执行gradle test -Dkarate.output.path=build/cucumber.jsongradle cucumberReports就能生成emailable-report.html。
第二步:Jenkins配置邮件嵌入报告正文
接下来要让Jenkins把这份HTML报告直接放到邮件正文里:
- 确保Jenkins安装了Email Extension Plugin(邮件扩展插件),如果没装,先在插件管理里搜索安装。
- 进入你的Jenkins任务,添加「Post-build Actions」→「Editable Email Notification」。
- 配置邮件基础信息(收件人、主题等)后,找到「Content Type」,选择
HTML (text/html),这样邮件会以HTML格式渲染。 - 在「Default Content」里,用Groovy脚本读取报告内容并嵌入:
(如果是Gradle项目,路径改成<% def reportFile = build.getWorkspace().child("target/cucumber-reports/emailable-report.html") if (reportFile.exists()) { out.println(reportFile.readToString()) } else { out.println("<p>⚠️ 测试报告生成失败,请查看构建日志排查问题</p>") } %>build/cucumber-reports/emailable-report.html) - 解决HTML过滤问题:如果邮件里的报告样式被过滤,进入Jenkins全局配置→「Extended E-mail Notification」→「Advanced Settings」,取消勾选「Enable Security」(内部环境下推荐,外部环境可以配置允许的HTML标签)。
额外提示
- 如果你觉得Cucumber的emailable报告还是太复杂,可以自定义Karate的报告模板,生成更简洁的HTML片段,不过需要修改Karate的报告配置,相对麻烦一些,上面的方法是最快捷的。
- 确保Jenkins运行用户有读取target/build文件夹的权限,避免报告读取失败。
内容的提问来源于stack exchange,提问作者Surabhi
相关产品推荐
相关产品推荐

