gatling - 如何在加特林脚本中获取变量的值
问题描述
我已经从登录 api 调用中提取了令牌值。但我无法将该变量值用于下一个 api 调用。我的代码如下
val scn = scenario("test login")
.exec(http("login call")
.post("https://api.k6.io/v3/account/login")
.headers(headers_1)
.body(RawFileBody("data/login.json"))
.check(status.is(200))
.check(jsonPath("$.token.key").saveAs("tokenId")))
.pause(21)
.exec(http("edit profile call")
.post("https://api.k6.io/v3/users/3187878")
.headers(headers_1)
.header("Authorization", "Token ${tokenId}")
.body(RawFileBody("data/editprofile.json"))
.check(status.is(200)))
但通话失败。我在第二次调用中没有得到该变量的值。
{"key":"4c713e3f5d362f0002f6eef737401e249c154bed"}
我需要在下一个 api 调用的标头中使用“key”的值,格式为
.header("Authorization", "Token 4c713e3f5d362f0002f6eef737401e249c154bed")
但它没有采用这种格式。我哪里出错了?谁能帮助我。提前致谢
解决方案
您使用检查捕获数据并使用加特林表达式语言重新注入数据的方式是正确的。
您的方案不起作用的可能原因:
- “登录呼叫”请求失败,无法捕获数据
- 您使用 RawFileBody 但可能其中的某些数据需要是动态的,就像您的 Authorization 标头一样
如果要检查捕获的内容,可以在暂停之前添加一个额外的操作:
.exec { session =>
println(session("tokenId").as[String])
session
}
推荐阅读
- java - 尝试使用 Dbeaver DB 连接到 Sybase 时显示“未找到合适的驱动程序”错误
- apache-spark - 带引号的字符串读取的火花数据
- javascript - 反应试图以错误的路径访问文件
- r - 为什么 R 粘贴的小数比四舍五入的多,但只是有时?
- java - 将资源服务器添加到现有的 JSF/Spring 安全应用程序
- java - 我正在尝试安装 Apache Gobblin。如何使用 Gradle 安装它?
- caching - 关于直写的优点
- sql - 是否可以将元组数组中的值添加到表中的单独列
- key - 使用 jq 下降 JSON 文档路径并更新字段名称
- sparql - 为整个 SPARQL 查询创建唯一 ID