我在ELFileBody中使用Gatling EL遇到问题。
我有以下执行程序:
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)))
}
我的myEmail
已设置为会话。但是,当exec运行myFunction时,变量在json中将被"${myEmail}"
取代,而不是被评估。
您知道如何解决它能够通过myFunction在exec中传递myEmail会话变量吗?
非常感谢
JF
答案 0 :(得分:1)
您的函数接受一个字符串,然后将其放入会话变量中-因此,当您传入“ $ {myEmail}”时,加特林将该字符串文字放入会话var中。因此,当加特林在ELFile主体中进行替换时,它将完全使用您指定的内容。
我假设您在$ {myEmail}会话var中已经有了想要的电子邮件-为什么不编辑文件以使用$ {myEmail}代替“ $ {email}”呢?
一种更惯用的方法是传递一个Expression [String],对其进行验证并将结果设置为$ {email} var
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}变量中。如果您提供的会话变量没有值,则会抛出该错误