如何在 Gatling 中将会话变量从一个对象传递到另一个对象?
How to pass a session variable from one object to another in Gatling?
我正在 ObjectA 中提取会话变量并想将其传递给 ObjectB,实现此目的的最佳方法是什么?
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
}
}
很确定看到答案后我会觉得自己很愚蠢,但到目前为止还没有成功。
答案:正如 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
}
}
您必须在您的 exec(function) 中将 GroupName 存储在用户会话中,以便稍后可以获取它(Gatling EL 或函数)。
我正在 ObjectA 中提取会话变量并想将其传递给 ObjectB,实现此目的的最佳方法是什么?
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
}
}
很确定看到答案后我会觉得自己很愚蠢,但到目前为止还没有成功。
答案:正如 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
}
}
您必须在您的 exec(function) 中将 GroupName 存储在用户会话中,以便稍后可以获取它(Gatling EL 或函数)。