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

Gatling会话无法访问Karate Feature文件设置变量的问题

Gatling与Karate集成时变量跨会话访问问题解决方法

问题根源

Karate Feature里用普通def定义的变量仅在Karate自身上下文内有效,无法直接被Gatling会话读取。要实现跨上下文传递,必须通过karate.set()方法将变量显式绑定到Gatling会话。

修改Karate Feature文件(getSubscriptionWithValidation.feature)

将需要传递的变量通过karate.set()定义,替代原有的def:

Feature: 获取订阅并验证状态

Scenario: 确认订阅有效性
    # 此处添加你的API调用逻辑示例
    * url "https://your-api-domain/subscription"
    * method get
    * status 200

    # 把变量绑定到Gatling会话
    * karate.set("subscription_confirmed", true)

调整Gatling测试脚本

在Gatling中通过会话对象直接读取该变量:

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

class SubscriptionPerfTest extends Simulation {

  val testProtocol = karateProtocol(
    "/subscription" -> Nil
  )

  val subscriptionScenario = scenario("订阅验证性能测试")
    .exec(karateFeature("classpath:getSubscriptionWithValidation.feature"))
    .exec { session =>
      // 从Gatling会话读取变量并处理
      val confirmedStatus = session("subscription_confirmed").as[Boolean]
      println(s"当前订阅确认状态: $confirmedStatus")
      session
    }

  setUp(
    subscriptionScenario.inject(
      rampUsers(20) during (10 seconds)
    ).protocols(testProtocol)
  )
}

核心要点

  • 只有karate.set()定义的变量会同步到Gatling会话,普通def变量仅Karate内部可见。
  • 变量名大小写敏感,确保Gatling读取时的名称与Karate中设置的完全一致。
  • 保持Gatling与Karate版本匹配(当前为0.9.4),避免API兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:39:57