ваша функция принимает строку, а затем вы помещаете эту строку в переменную сеанса - поэтому, когда вы передаете "$ {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}. Ошибка будет выдана, если вы предоставите сеансовую переменную, для которой не было значения