gatling get请求之一是提供多个字符串值,我使用saveAs保存它们,如下所示:
val scn = scenario("ReadLogs")
.exec(http("logEvent")
.get("""/xyz/abc""")
.check(jsonPath("$.data[*].message").findAll.saveAs("mList")))
/* My scala code to achieve some requirements*/
我可以在日志中看到“mList”是一个包含我所需字符串消息的向量。我想在我的scala代码中处理这些消息。如何以简单的方式做到这一点?我想如果我可以在scn场景之外使用“mList”变量,那么事情会好转,所以我会更具体地提出这个问题。如何在我的scala代码中使用“mList”变量?
答案 0 :(得分:3)
在单独的执行步骤中编写过程逻辑,并确保在获取数据后执行该过程。
val fetchLogs = exec(
http("logEvent")
.get("""/xyz/abc""")
.check(jsonPath("$.data[*].message")
.findAll
.saveAs("mList")
)
val processLogs = exec { s: Session =>
val mList = s("mList").as[Seq[Any]]
val result = ...
s.set("processResult", result)
}
val scn = scenario("ReadLogs").exec(
fetchLogs,
processLogs
)
更新:保存数据以供以后处理
var mList: Seq[String] = _
val fetchLogs = exec(
http("logEvent")
.get("""/xyz/abc""")
.check(jsonPath("$.data[*].message")
.findAll
.transform { v => mList = v; v } // save the data
.saveAs("mList")
)
val scn = scenario("ReadLogs").exec(fetchLogs)
after {
// Process the data here. It will be executed when the simulation is finished.
}
答案 1 :(得分:0)
有一个很棒的博客对此进行了描述: https://devqa.io/gatling-save-response-body/
我在@thirstycrow的答案中错过的是:
然后我们可以使用
引用变量${tokenId}