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

如何将Mock Server的请求/响应信息纳入Karate.html报告

Karate Mock Server交互信息整合到原生HTML报告方案

可以实现,原生Karate HTML报告默认不会自动捕获Mock Server的请求/响应交互,但通过自定义脚本和Karate内置钩子就能把这些信息整合到报告里,具体步骤如下:

  • 记录Mock交互数据
    在你的Mock Server脚本中,除了控制台打印,把请求和响应数据存入全局可访问的变量(比如内存列表)。示例代码:

    // 初始化全局交互列表(可在karate-config.js里提前初始化避免重复创建)
    var interactions = karate.get('mockInteractions') || [];
    // 获取当前请求和响应对象
    var currentRequest = karate.get('request');
    var currentResponse = karate.get('response');
    // 存入交互信息,可附加时间戳方便排查
    interactions.push({
      timestamp: new Date().toISOString(),
      request: currentRequest,
      response: currentResponse
    });
    // 更新全局变量
    karate.set('mockInteractions', interactions);
    
  • 将交互数据写入报告
    利用Karate的After钩子(在所有测试执行完成后触发),调用karate.report()方法把记录的交互信息添加到报告的自定义区域:

    After(function(){
      var interactions = karate.get('mockInteractions');
      if (interactions && interactions.length > 0) {
        // 以JSON格式写入报告,第二个参数是内容,第三个是格式标识
        karate.report('Mock Server 交互记录', JSON.stringify(interactions, null, 2), 'json');
      }
    });
    
  • 关键注意事项

    • 全局变量mockInteractions建议在karate-config.js中提前初始化(karate.configure('mockInteractions', [])),避免不同测试用例间的数据污染。
    • 如果Mock Server是独立于测试用例启动的(比如单独运行的mock服务),需要通过文件存储、内存共享等方式让测试进程获取交互数据,再写入报告。
    • 若请求/响应包含大体积内容(如二进制文件),建议对数据做截断或格式化处理,防止报告文件过大加载缓慢。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 21:03:16