Передать переменную языка выражения сеанса в ELFileBody - PullRequest
1 голос
/ 13 мая 2019

Я сталкиваюсь с проблемой использования Gatling EL в ELFileBody.

У меня есть следующий exec:

exec(myFunction("${myEmail}", otherParameters))

и функция:

def myFunction((email: String) = {
     exec((s: Session) => s.set("email", email))
     .exec(http("MyFunction")
                        .put("/myUrl")
                        .headers(Headers.basic_headers_json)
             .body(ElFileBody("LinkToMyJsonFile"))
                        .asJson
                        .check(status.is(200)))
}

my myEmail устанавливается в сеансе.Тем не менее, когда exec запускает myFunction, переменная заменяется в json на "${myEmail}" вместо того, чтобы быть оцененным.

У вас есть идея, как я могу решить, как передать переменную сеанса myEmail в exec черезтуРипсЫоп?

Заранее большое спасибо

JF

1 Ответ

1 голос
/ 14 мая 2019

ваша функция принимает строку, а затем вы помещаете эту строку в переменную сеанса - поэтому, когда вы передаете "$ {myEmail}", gatling помещает этот строковый литерал в сеанс var. Поэтому, когда gatling выполняет подстановку в теле ELFile, он использует именно то, что вы указали.

Я предполагаю, что у вас уже есть электронная почта, которую вы хотите получить в сеансе $ {myEmail} - почему бы просто не отредактировать файл, чтобы использовать $ {myEmail} вместо "$ {email}"?

более идиоматическим подходом было бы передать выражение [String], проверить его и установить результат в переменную $ {email}

def myFunction((email: Expression[String]) = {
 exec((s: Session) => email.apply(s) match {
    case Success(address) => s.set("email", address)
    case Failure(error) => {
        println(s"There was an error: $error")
        s
    }
}
...

Это извлечет значение $ {myEmail}, если есть один или только строковый литерал, если это так, и поместит его в переменную $ {email}. Ошибка будет выдана, если вы предоставите сеансовую переменную, для которой не было значения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...