使用Scala中的Gatling创建动态POST /用户调用

时间:2017-11-09 18:53:34

标签: performance scala testing gatling

我正在使用Gatling生成大量用户来测试我产品的性能问题。我需要能够动态创建具有唯一字段的用户(例如“电子邮件”)。所以,我正在生成一个随机数并使用它,但每次都没有重新实例化,所以电子邮件在第一次传递时才是唯一的。

object Users {

  def r = new scala.util.Random;
  def randNumb() = r.nextInt(Integer.MAX_VALUE)
  val numb = randNumb()

  val createUser = {
    exec(http("Create User")
    .post("/users")
    .body(StringBody(raw"""{"email": "qa_user_$numb@company.com" }""")))
  }
}

val runCreateUsers = scenario("Create Users").exec(Users.createUser)

setUp(
  runCreateUsers.inject(constantUsersPerSec(10) during(1 seconds))
).protocols(httpConf)

我应该在哪里定义随机数?如何将其传递给createUser?

1 个答案:

答案 0 :(得分:1)

使用feeder

object Users {
  val createUser = exec(http("Create User")
    .post("/users")
    .body(StringBody("""{"email": "qa_user_${numb}@Marqeta.com" }""")))
}

val numbers = Iterator.continually(Map("numb" -> scala.util.Random.nextInt(Int.MaxValue)))

val runCreateUsers = scenario("Create Users")
  .feed(numbers)
  .exec(Users.createUser)

...