我正在考虑迁移到 Gatling 2.0.0-M3a,但我在进行基本测试时遇到问题。我遇到的问题是将值映射到 Gatling 2 中的模板文件。 下面的示例显示了我如何在 Gatling 1.5 中实现这一点,但我无法在 2 中弄清楚。
LoginScenario.scala - 适用于 gatling 1.5
package StressTesting
import com.excilys.ebi.gatling.core.Predef._
import com.excilys.ebi.gatling.http.Predef._
import Headers._
import akka.util.duration._
import bootstrap._
object LoginScenario {
val scn = scenario("Login")
.feed(csv("user_credentials.csv"))
.exec(
http("login")
.post("/api/login")
.fileBody("loginTemplate",
Map(
"userName" -> "${userName}",
"password" -> "${password}"
)
).asJSON
.headers(post_header)
.check(status.is(200)))
}
LoginScenario.scala - 错误 - 重新设计的版本以适应 Gatling 1.5 和 2 之间的变化
package StressTesting
import io.gatling.core.Predef._
import io.gatling.http.Predef._
import Headers._
import scala.concurrent.duration._
import bootstrap._
import io.gatling.core.session.Expression
object LoginScenario {
val scn = scenario("Login")
.feed(csv("user_credentials.csv"))
.exec(
http("login")
.post("/api/login")
.body(ELFileBody("request-bodies/loginTemplate.ssp",
Map("userName" -> "${userName}","password" -> "${password}"))).asJSON
.headers(post_header)
.check(status.is(200))
)
}
loginTemplate.ssp - 两个示例中使用的模板
{
"userName": "<%= userName %>",
"password": "<%= password %>",
"platformCode": "app",
"clientInformation": {
"operatingSystem": "OSX",
"operatingSystemVersion": "10.8",
"browser": "Chrome",
"browserVersion": "31",
}
}
最佳答案
我们在 Gatling 2 中放弃了 Scalate,因为它真的很麻烦。
请查看我们的 wiki 以了解新语法:https://github.com/excilys/gatling/wiki/Gatling-2#wiki-bodies
基本上,您可以在模板中编写常规 Gatling EL,并且不再需要显式传递参数:
.body(ELFileBody("request-bodies/loginTemplate.txt"))
登录模板.txt:
{
"userName": "${userName}",
"password": "${password}",
"platformCode": "app",
"clientInformation": {
"operatingSystem": "OSX",
"operatingSystemVersion": "10.8",
"browser": "Chrome",
"browserVersion": "31",
}
}
关于scala - Gatling 2 - 将值映射到模板,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21143077/