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

如何在Karate DSL的Cucumber报告中添加打印输出及附件?

嗨,我来帮你搞定在Karate DSL生成的Cucumber报告里添加响应体和附件的问题!Karate本身就有内置方法支持这两个需求,不用额外折腾,给你几个实用的示例参考:

1. 在报告中打印响应体(JSON/文本格式)

默认情况下,Karate的Cucumber报告会捕获print和karate.log()的输出,你可以直接在Feature文件里添加步骤来打印响应体,还能格式化JSON让报告更易读:

Feature: 测试用户接口并展示响应体
  Scenario: 获取单个用户信息
    Given url 'https://api.example.com/users/1'
    When method GET
    Then status 200
    # 直接打印原始响应
    * print "接口响应:", response
    # 格式化JSON后打印,报告里更清晰
    * karate.log("格式化后的响应JSON:", karate.pretty(response))

如果想让所有请求的响应自动出现在报告里,不用每个场景手动写,还可以在karate-config.js里全局配置:

function fn() {
  var config = { baseUrl: 'https://api.example.com' };
  // 开启所有步骤的日志,设置响应日志级别为INFO
  karate.configure('report', { showAllSteps: true, responseLogLevel: 'INFO' });
  return config;
}

这样配置后,每个请求的响应都会自动被记录到报告的步骤日志中。

2. 给报告添加可查看的附件

Karate提供了karate.attach()方法,支持添加JSON、文本、本地文件等作为报告附件,点击报告里的附件图标就能查看内容:

Feature: 给测试报告添加附件
  Scenario: 保存响应为附件并添加测试文件
    Given url 'https://api.example.com/users/1'
    When method GET
    Then status 200
    # 添加格式化后的JSON响应作为附件
    * karate.attach(karate.pretty(response), 'application/json', '用户详情响应.json')
    # 如果是纯文本接口,添加文本格式附件
    * karate.attach(response, 'text/plain', '纯文本响应内容.txt')
    # 添加本地测试数据文件作为附件(比如请求模板)
    * karate.attach('classpath:test-data/user-create-request.json', 'application/json', '创建用户请求模板.json')

karate.attach()的三个参数分别是:附件内容(字符串、JSON对象、文件路径)、MIME类型、附件显示名称。

注意事项
  • 确保你的日志配置(比如log4j2、slf4j)允许输出INFO级别的日志,否则报告可能捕获不到print或karate.log()的内容。
  • 对于超大响应体,建议只添加关键部分作为附件,避免报告体积过大影响加载速度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:41:42