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

Karate-Gatling:在Gatling报告中对相同API进行分组

Gatling 报告中分组同类动态路径请求的方法

当然可以将这些请求在全局报告中归为一组,除了你提到的Scala Map实现方式,还有以下几种实用方法:

1. 显式使用group代码块包裹请求

这是最直接的方式,把所有同类请求放在同一个group下,Gatling报告会自动将该组内的所有请求聚合展示。示例代码:

group("地址查询API组") {
  exec(http("查询地址1").get("/address/uuid"))
  .exec(http("查询地址2").get("/address/uuid2"))
  .exec(http("查询地址3").get("/address/uuid3"))
}

这种方式适合固定数量的同类请求,逻辑清晰,无需额外处理动态路径的匹配。

2. 统一请求名称实现聚合

如果希望将所有/address/*路径的请求合并统计,可以给这类请求设置相同的请求名称,Gatling报告会自动把同名请求的统计数据合并。示例:

// 动态UUID场景下也适用
exec(http("地址查询请求")
  .get("/address/${uuid}")
  .requestName("地址查询请求") // 统一请求名称
)

即使路径中的UUID不同,只要请求名称一致,报告会将它们归为同一统计项。

3. 结合循环与group批量处理(对应你提到的Scala Map方式)

如果你的路径列表是动态生成的,用Scala Map存储路径后,配合foreach循环和group块,既能批量执行请求,又能统一分组:

val addressPaths = Map(
  "uuid1" -> "/address/uuid1",
  "uuid2" -> "/address/uuid2",
  "uuid3" -> "/address/uuid3"
)

group("批量地址查询组") {
  foreach(addressPaths.values, "currentPath") {
    exec(http("地址查询").get("${currentPath}"))
  }
}

4. 自定义请求分组逻辑(进阶)

如果需要更灵活的分组规则(比如根据路径模式/address/*自动匹配分组),可以通过自定义Gatling的请求拦截逻辑,在请求执行时给请求打上统一的分组标签。示例思路:

// 自定义一个方法,给请求添加分组标识
def addressRequest(uuid: String) = {
  http(s"地址查询-${uuid}")
    .get(s"/address/${uuid}")
    .extraInfoExtractor { session =>
      // 这里可以自定义分组相关的元数据,供报告生成时使用
      Some(Map("group" -> "地址查询API组"))
    }
}

// 使用该方法执行请求
exec(addressRequest("uuid1"))
exec(addressRequest("uuid2"))
exec(addressRequest("uuid3"))

这种方式需要结合Gatling的extraInfoExtractor或自定义报告生成器,适合复杂场景下的分组需求。

内容的提问来源于stack exchange,提问作者Kristijan Perić

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 04:00:18