在Gatling中,如何从返回的主体创建键值对并将其保存在会话中?

问题描述 投票:0回答:1

因此,我执行POST调用并获得一些对象作为回报。我想提取并创建一个键值对,并将其保存在会话中以供以后使用。

我当前的代码如下:

.exec(http(“Rest call“)
  .post("/api")
  .body(ElFileBody("json/api.json")).asJson
  .check(jsonPath("$.result.objects[*].files[?(@.type == ‘FILE1’)].id").findAll.saveAs(“id”))
  .check(jsonPath("$.result.objects[*].files[?(@.type == ‘FILE1’)].name”).findAll.saveAs(“name”))

这里我在会话中得到两个列表(向量),分别是“ id”和“ name”。我想做的是改为创建一个ID /名称的键/值对列表。显然,这些对应该与相同的jsonpath匹配。

scala gatling
1个回答
0
投票

最简单的方法是在会话函数中使用scala的集合压缩

.exec(http(“Rest call“)
  .post("/api")
  .body(ElFileBody("json/api.json")).asJson
  .check(jsonPath("$.result.objects[*].files[?(@.type == ‘FILE1’)].id").findAll.saveAs(“id”))
  .check(jsonPath("$.result.objects[*].files[?(@.type == ‘FILE1’)].name”).findAll.saveAs(“name”)
)
.exec(session => {
  var ids = session("id").as[Seq[String]]
  var names = session("name").as[Seq[String]]
  session.set("pairs", ids zip names)
})

这将设置一个称为“ pairs”的会话变量,其内容为Tuple2的列表

签出https://alvinalexander.com/scala/how-to-merge-sequential-collection-pairs-zip-unzip-scala-cookbook

© www.soinside.com 2019 - 2024. All rights reserved.