You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Karate+Cucumber API自动化测试:Jenkins中无法生成emailable-report.html/index.html,如何将测试结果嵌入邮件正文?

解决Karate+Cucumber测试结果嵌入Jenkins邮件正文的问题

我来帮你搞定这个需求,咱们从生成适合嵌入的报告到Jenkins邮件配置一步步来:

第一步:生成可嵌入邮件的简化HTML报告

你提到target里没有emailable-report.html,这是因为默认Karate不会生成Cucumber的简化报告,咱们需要配置生成这个文件:

如果你用Maven项目:

  1. 在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>
    
  2. 确保Karate生成Cucumber JSON格式的报告,在运行测试的Maven命令里添加参数:
    mvn test -Dkarate.output.path=target/cucumber.json
    
    运行测试后,target/cucumber-reports文件夹里就会生成emailable-report.html,这个报告是简化的、适合嵌入邮件的版本。

如果你用Gradle项目:

  1. 在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
    }
    
  2. 运行测试时指定生成JSON报告:
    gradle test -Dkarate.output.path=build/cucumber.json
    
    之后执行gradle cucumberReports就能生成emailable-report.html。

第二步:Jenkins配置邮件嵌入报告正文

接下来要让Jenkins把这份HTML报告直接放到邮件正文里:

  1. 确保Jenkins安装了Email Extension Plugin(邮件扩展插件),如果没装,先在插件管理里搜索安装。
  2. 进入你的Jenkins任务,添加「Post-build Actions」→「Editable Email Notification」。
  3. 配置邮件基础信息(收件人、主题等)后,找到「Content Type」,选择HTML (text/html),这样邮件会以HTML格式渲染。
  4. 在「Default Content」里,用Groovy脚本读取报告内容并嵌入:
    <%
        def reportFile = build.getWorkspace().child("target/cucumber-reports/emailable-report.html")
        if (reportFile.exists()) {
            out.println(reportFile.readToString())
        } else {
            out.println("<p>⚠️ 测试报告生成失败,请查看构建日志排查问题</p>")
        }
    %>
    
    (如果是Gradle项目,路径改成build/cucumber-reports/emailable-report.html)
  5. 解决HTML过滤问题:如果邮件里的报告样式被过滤,进入Jenkins全局配置→「Extended E-mail Notification」→「Advanced Settings」,取消勾选「Enable Security」(内部环境下推荐,外部环境可以配置允许的HTML标签)。

额外提示

  • 如果你觉得Cucumber的emailable报告还是太复杂,可以自定义Karate的报告模板,生成更简洁的HTML片段,不过需要修改Karate的报告配置,相对麻烦一些,上面的方法是最快捷的。
  • 确保Jenkins运行用户有读取target/build文件夹的权限,避免报告读取失败。

内容的提问来源于stack exchange,提问作者Surabhi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.01 01:59:09