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

如何在Karate报告中记录调试ID(UUID/唯一ID)?

在Karate报告中为每个测试场景添加调试ID并传递给API的方案

1. 生成全局调试ID(每个场景独立)

在Background块中生成唯一调试ID,确保每个测试场景拥有独立标识,同时全局可访问:

Background:
  # 用Karate内置工具生成标准UUID(推荐)
  * def debugId = karate.uuid()
  # 若需自定义生成逻辑,可调用Java/JS实现
  # * def debugId = Java.type('java.util.UUID').randomUUID().toString()
  # * def debugId = Math.random().toString(36).slice(2, 18) // JS生成短唯一串

2. 将调试ID传递给API

根据需求将ID放入请求头或请求体:

  • 请求头传递:
# 单个请求设置专属头
* header X-Debug-Id = debugId

# 或者全局配置所有请求的头(在Background中设置)
* configure headers = { 'X-Debug-Id': debugId, 'Content-Type': 'application/json' }
  • 请求体传递:
* request {
    "userName": "testUser",
    "debugId": "#(debugId)"
  }
* method post

3. 在Karate报告中展示调试ID

有三种常用方式将调试信息嵌入报告,方便追踪:

方式一:通过日志输出到报告

使用karate.log()打印调试信息,内容会自动出现在HTML报告的「Log」板块:

Background:
  * def debugId = karate.uuid()
  * karate.log('Other Info: XXXX')
  * karate.log('Unique Debug Id:', debugId)

报告中会显示:

Other Info: XXXX
Unique Debug Id: 175ee69c-ddc1-11ed-b5ea-0242ac120002

方式二:自定义场景名称嵌入调试ID

通过动态修改场景名称,让调试ID直接显示在报告的场景列表中,更直观:

Background:
  * def debugId = karate.uuid()
  # 动态设置场景名称后缀
  * karate.set('debugSuffix', ' [Debug Id: ' + debugId + ']')

Scenario: 创建用户 #(debugSuffix)
  * header X-Debug-Id = debugId
  * request { "userName": "testUser" }
  * method post

报告场景列表会显示:创建用户 [Debug Id: 175ee69c-ddc1-11ed-b5ea-0242ac120002]

方式三:添加自定义报告字段

使用Karate的karate.report()方法,将调试信息作为自定义字段加入报告详情:

Background:
  * def debugId = karate.uuid()
  * karate.report('customDebugInfo', {
      'Other Info': 'XXXX',
      'Unique Debug Id': debugId
    })

该信息会在报告的场景详情中单独展示,便于快速定位关联事务。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 06:45:29