如何在加特林中将会话变量从一个对象传递到另一个对象?

use*_*778 5 scala performance-testing gatling

我正在提取对象 A 中的会话变量,并希望将其传递给对象 B,实现此目的的最佳方法是什么?

object ObjectA {
  val foo = exec(jsfPost("Request1", "/something.xhtml")
        .formParam("SUBMIT", "1")
        .check(regex("""Count:([^:]*),""").saveAs("Count"))
        )
       .pause(1)
       .exec { session =>  
          val Count = session("Count").as[String].toInt
          val GroupName = SomeCustomFunc(Count)
        }
        .exec(ObjectB.bar)
}

object ObjectB{      
  val bar = group(GroupName){
      myChain
  }
}
Run Code Online (Sandbox Code Playgroud)

很确定看到答案后我会觉得很愚蠢,但到目前为止还没有成功。

回答:正如 Stephane 所建议的那样,通过 Session 效果很好:

object ObjectA {
  val foo = exec(jsfPost("Request1", "/something.xhtml")
        .formParam("SUBMIT", "1")
        .check(regex("""Count:([^:]*),""").saveAs("Count"))
        )
       .pause(1)
       .exec(session => session.set("GroupName", SomeCustomFunc(session("Count").as[String].toInt)))
       .exec(ObjectB.bar)
}

object ObjectB{      
  val bar = group("${GroupName}"){
      myChain
  }
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*lle 3

您必须将 GroupName 存储在 exec(function) 中的用户会话中,以便稍后可以获取它(Gadling EL 或函数)。