加特林从进纸器中获取变量

Gatling get variable out of feeder

我的加特林版本是2.2.0,例如:

# resource.csv file
===============
user
user1
user2

# object file
===============
object REntity {
  val feeder = csv("resources.csv").circular

  val entity =
  // ==================
  // log in
  // ==================
    feed(feeder)
      .exec(
        http("example")
          .post("/authentication?name=${user}")
          .body(session => s"${Utils.getCredential(user)}")
      ).exitHereIfFailed.pause(Config.ThinkTime)
}

Utils.getCredential(user: String): String 只是一个接受用户名的函数,return 一个凭证字符串。

如您所见,用户名存储在 resources.csv 文件中。我可以简单地用 .post("/authentication?name=${user}") 来引用它。但是我怎么能像 ${Utils.getCredential(user))} 这样的变量来引用它,这会引发错误。

有什么想法吗?感谢您的宝贵时间!

我搜索了 Gatling 的文档,找到了答案 here

它有两个部分介绍 1)。设置属性和 2) 获取属性。

基本上来说获取属性的方式应该是:

// say resources.csv looks like this:
// =====================
// user,entityID
// Jim,1001
// Mike,1002

val feeder = csv("resources.csv").circular
val name = session("user").as[String] // => "Jim"

答案应该是:

object REntity {
  val feeder = csv("resources.csv").circular

  val entity =
  // ==================
  // log in
  // ==================
    feed(feeder)
      .exec(
        http("example")
          .post("/authentication?name=${user}")
          .body(session => Utils.getCredential(session("user").as[String]))
      ).exitHereIfFailed.pause(Config.ThinkTime)
}