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

如何在Karate Gatling中区分多Feature文件的独立性能测试报告

问题描述

使用Karate Gatling 1.4.1结合Scala类开展性能测试,Scala代码如下:

package Performance

import com.intuit.karate.gatling.PreDef._
import io.gatling.core.Predef._
import scala.concurrent.duration._

class Testing extends Simulation {

  val create = scenario("create").exec(karateFeature("classpath:Performance/Demo.feature"))
  val create1 = scenario("create1").exec(karateFeature("classpath:Performance/Demo1.feature"))
  val create2 = scenario("create2").exec(karateFeature("classpath:Performance/Demo2.feature"))

  setUp(
    create.inject(rampUsers(10) during (8 seconds)).protocols(protocol),
    create1.inject(rampUsers(6) during (10 seconds)).protocols(protocol),
    create2.inject(rampUsers(8) during (10 seconds)).protocols(protocol),
  )

}

运行Maven命令后,生成的Gatling报告包含3个Feature的测试结果,但无法区分每个Feature的独立性能数据,尝试为每个Feature单独设置setUp未成功,需解决该问题。

解决方案

方法1:为每个karateFeature指定自定义名称

在调用karateFeature时显式指定name参数,该名称会被Gatling用来标识对应Feature的所有请求,报告中可直接按名称筛选数据。修改后的Scala代码如下:

package Performance

import com.intuit.karate.gatling.PreDef._
import io.gatling.core.Predef._
import scala.concurrent.duration._

class Testing extends Simulation {
  // 定义Karate协议(若之前未定义)
  val protocol = karateProtocol

  val create = scenario("create").exec(
    karateFeature(name = "Demo Feature", "classpath:Performance/Demo.feature")
  )
  val create1 = scenario("create1").exec(
    karateFeature(name = "Demo1 Feature", "classpath:Performance/Demo1.feature")
  )
  val create2 = scenario("create2").exec(
    karateFeature(name = "Demo2 Feature", "classpath:Performance/Demo2.feature")
  )

  setUp(
    create.inject(rampUsers(10) during (8 seconds)).protocols(protocol),
    create1.inject(rampUsers(6) during (10 seconds)).protocols(protocol),
    create2.inject(rampUsers(8) during (10 seconds)).protocols(protocol),
  )
}

运行后,Gatling报告的Request Statistics中,每个请求会以指定名称为前缀,可通过报告筛选功能快速定位对应Feature的性能数据。

方法2:为Feature内的请求添加唯一标识

在每个Karate Feature文件中,给所有请求添加name属性,自定义请求名称以区分不同Feature的请求。示例如下:
Demo.feature:

Feature: Demo Feature

Scenario: Create Resource
Given url baseUrl + "/resources"
And request { "name": "test" }
When method post
Then status 201
* name 'Demo - Create Resource'

Demo1.feature:

Feature: Demo1 Feature

Scenario: Query Resource
Given url baseUrl + "/resources/1"
When method get
Then status 200
* name 'Demo1 - Query Resource'

这种方式会让每个请求的名称带有明确的Feature标识,在Gatling报告中可直接通过请求名称区分不同Feature的性能数据。

方法3:利用Gatling的Scenario分组筛选

你的代码已为每个Feature创建独立Scenario(create、create1、create2),Gatling报告默认支持按Scenario分组查看数据:

  1. 打开Gatling报告的Details标签页
  2. 在页面顶部的Group by下拉菜单中选择Scenario
  3. 即可分别查看每个Scenario(对应单个Feature)的独立性能指标,包括响应时间、请求成功率等数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 08:30:10