我在 Gatling 场景中遇到了以下代码(为简洁/隐私而修改):
val scn = scenario("X")
.repeat(numberOfLoops, "loopName") {
exec((session : Session) => {
val loopCounter = session.getTypedAttribute[Int]("loopName")
session.setAttribute("xmlInput", createXml(loopCounter))
})
.exec(
http("X")
.post("/rest/url")
.headers(headers)
.body("${xmlInput}"))
)
}
它在重复块中命名循环,将其从会话中取出并使用它来创建唯一的输入 XML。然后,它将 XML 粘贴回会话中,并在发布时再次提取它。
我想消除命名循环迭代器和访问会话的需要。理想情况下,我想使用 aStream
来生成 XML。
但是加特林控制循环,我不能递归。我是否需要妥协,或者我可以以一种功能性的方式使用 Gatling(没有 vars 或访问会话)?