如何检查 Gatling/Scala 中是否存在属性
How to check if an attribute is present in Gatling/Scala
我认为这可能很容易做到,但我真的完全不懂 Scala。
我有一个场景,用户第一次登录会看到一个页面,然后如果他们再次登录,他们将看不到这个页面。所以到目前为止我想出的最好的是:
val chain = exec(
http("Login page")
.get("/en/login")
.headers(Config.HTML_HEADER)
).exec(
http("login request")
.post("/en/j_spring_security_check")
.formParam("j_username", """${username}""")
.formParam("j_password", """${password}""")
.check(status.is(200))
.check(currentLocationRegex(".*termsAndConditions").optional.saveAs("tc"))
)
.doIf(session => !session("tc").equals(null)) { // this doesn't work
exec(AgreeTermsAndConditions.chain)
}
所以我在 doIf 上尝试了很多事情,目标是如果未设置会话 "tc" 就执行。有简单的方法吗?
正确阅读documentation:${tc.exists()}
。
改用 Nil 检查。这个对我有用。
曾合作过:
.doIf(session => !session.contains("tc")) {
...
}
Gatling 提供了一个 exists()
内置 EL 函数(参见 Galting EL documentation),因此一个简洁的解决方案是:
.doIf("${tc.exists()}") {
...
}
我认为这可能很容易做到,但我真的完全不懂 Scala。
我有一个场景,用户第一次登录会看到一个页面,然后如果他们再次登录,他们将看不到这个页面。所以到目前为止我想出的最好的是:
val chain = exec(
http("Login page")
.get("/en/login")
.headers(Config.HTML_HEADER)
).exec(
http("login request")
.post("/en/j_spring_security_check")
.formParam("j_username", """${username}""")
.formParam("j_password", """${password}""")
.check(status.is(200))
.check(currentLocationRegex(".*termsAndConditions").optional.saveAs("tc"))
)
.doIf(session => !session("tc").equals(null)) { // this doesn't work
exec(AgreeTermsAndConditions.chain)
}
所以我在 doIf 上尝试了很多事情,目标是如果未设置会话 "tc" 就执行。有简单的方法吗?
正确阅读documentation:${tc.exists()}
。
改用 Nil 检查。这个对我有用。
曾合作过:
.doIf(session => !session.contains("tc")) {
...
}
Gatling 提供了一个 exists()
内置 EL 函数(参见 Galting EL documentation),因此一个简洁的解决方案是:
.doIf("${tc.exists()}") {
...
}