Как проверить, присутствует ли атрибут в 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" не установлен. Есть простой способ сделать это?


person rozner    schedule 19.03.2015    source источник


Ответы (4)


Внимательно прочтите документацию: ${tc.exists()}.

person Stephane Landelle    schedule 19.03.2015
comment
Спасибо, я на самом деле заставил его работать, выполняя session.conatins (tc), но ваш способ лучше. Я обновил это. Я думал, что пробовал это на самом деле, но, кажется, я пропустил это в документации. - person rozner; 20.03.2015
comment
В документах Gatling не так легко ориентироваться, и в них не хватает большого общего контекста. Такому новичку, как я, было бы трудно узнать, что ответ на вопрос о doIf находится на странице EL, и ваш ответ также не обеспечивает этого контекста. Сравните свой ответ с ответом Камило Сильвы, чтобы понять, что я имею в виду. Правильное чтение документации излишне конфронтационно. - person Doug McLean; 27.10.2020

Gatling предоставляет exists() встроенную функцию EL (см. документацию Galting EL), поэтому сукцинктерный раствор будет:

.doIf("${tc.exists()}") {
 ...
}
person Camilo Silva    schedule 22.04.2020

Работал с:

.doIf(session => !session.contains("tc")) {
    ...
}
person mcarra66    schedule 05.06.2019

Вместо этого посоветуйтесь с Нилом. Меня устраивает.

person Adam    schedule 16.06.2017