如何在Scala文件的加特林场景之外使用保存的变量值

Vir*_*ain 4 scala vector gatling

获得请求的方法之一是提供多个字符串值,我使用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*/
Run Code Online (Sandbox Code Playgroud)

我在日志中看到“ mList”是一个向量,其中包含我所需的字符串消息。我想在我的Scala代码中处理这些消息。如何以简单的方式做到这一点?我认为,如果我可以在scn方案之外使用“ mList”变量,那么事情将不会出现任何问题,因此我将更具体地讲这个问题。如何在我的Scala代码中使用“ mList”变量?

thi*_*row 5

在单独的执行步骤中对过程逻辑进行编码,并确保在提取数据后将其执行。

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
)
Run Code Online (Sandbox Code Playgroud)

更新:保存数据以备后用

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.
}
Run Code Online (Sandbox Code Playgroud)