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

如何在Gatling(Scala)的POST请求体中集成变量值

问题

我需要在POST请求体中使用变量的值,其余请求参数已通过CSV feeder获取,仅timeNow参数需要设置为currentTime变量的值。已定义变量:

var currentTime = ZonedDateTime.now()

POST请求体代码如下:

.body(StringBody("""{keys: value gotten from csv file timeNow: ( here I want to put the value of my variable currentTime)}"""))

请问如何将currentTime变量值集成到请求体的timeNow参数中?

解决方案

方法1:Scala原生字符串插值

利用Scala的字符串插值特性,给三重引号字符串加上s前缀,直接在请求体中引用currentTime变量。注意要先把ZonedDateTime转成接口要求的字符串格式(比如ISO-8601),同时保证JSON语法正确:

// 格式化日期为标准字符串格式
val currentTime = ZonedDateTime.now().format(DateTimeFormatter.ISO_ZONED_DATE_TIME)
// 使用s插值构造请求体
.body(StringBody(s"""{"keys": "${csvKey}", "timeNow": "$currentTime"}"""))

注:csvKey替换为你从CSV feeder中获取的实际参数名

方法2:结合Gatling会话变量与ElasticStringBody

先将currentTime存入Gatling会话,再用ElasticStringBody同时引用CSV feeder参数和会话变量:

// 将格式化后的日期存入会话
.exec(session => session.set("currentTime", ZonedDateTime.now().format(DateTimeFormatter.ISO_ZONED_DATE_TIME)))
// 在请求体中引用变量
.body(ElasticStringBody("""{"keys": "${csvKey}", "timeNow": "${currentTime}"}"""))

方法3:使用外部模板文件(适合复杂请求体)

创建JSON模板文件(如request-body.json),用${}标记变量:

{
  "keys": "${csvKey}",
  "timeNow": "${currentTime}"
}

然后在代码中加载模板并传入变量:

.exec(session => session.set("currentTime", ZonedDateTime.now().format(DateTimeFormatter.ISO_ZONED_DATE_TIME)))
.body(ElFileBody("request-body.json"))

关键注意点

  • 必须将ZonedDateTime格式化为字符串,直接传入对象会生成不符合JSON规范的内容。
  • 严格遵循JSON语法,键名和字符串值必须用双引号包裹。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:30:25