如何在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
相关产品推荐
相关产品推荐

