【问题标题】:How to check if an attribute is present in Gatling/Scala如何检查 Gatling/Scala 中是否存在属性
【发布时间】:2015-05-22 09:37:00
【问题描述】:

我认为这可能很容易做到,但我真的一点也不了解 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”的情况下执行。有没有简单的方法可以做到这一点?

【问题讨论】:

    标签: scala gatling


    【解决方案1】:

    正确阅读documentation:${tc.exists()}

    【讨论】:

    • 谢谢,我实际上在 session.conatins("tc") 中工作了,但你的方法更好。我已经更新了。我以为我实际上已经尝试过了,但我想我在文档中错过了。
    • Gatling 文档不是最容易浏览的文档,而且缺乏很多“大图”上下文。像我这样的新手很难知道关于“doIf”的问题的答案位于“EL”页面中,而您的答案也没有提供该上下文。将您的答案与 Camilo Silva 的答案进行对比,以了解我的意思。 “正确阅读文档”是不必要的对抗。
    【解决方案2】:

    Gatling 提供了一个 exists() 内置 EL 函数(请参阅 Galting EL documentation),因此更简洁的解决方案是:

    .doIf("${tc.exists()}") {
     ...
    }
    

    【讨论】:

      【解决方案3】:

      合作过:

      .doIf(session => !session.contains("tc")) {
          ...
      }
      

      【讨论】:

        【解决方案4】:

        改为使用 Nil 检查。这个对我有用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-11
          • 2017-01-15
          • 1970-01-01
          相关资源
          最近更新 更多