Gatling:将随机属性保存在另一个属性中

时间:2018-04-23 10:21:24

标签: gatling scala-gatling

是否可以在运行时保存属性,然后将其另存为另一个属性?例如,我有一个在URL中使用的ID,我已经从一个页面捕获了它,但是页面上有一个列表5。我可以使用findAll来全部选择它们,然后使用$ {AttributeName.random()}来随机选择一个。

但是,我如何将其保存为属性然后在其他地方使用?因为它每次都需要相同,如果我再次随机运行,显然它每次都会改变字符串。

我可以做一个$ {AttributeName(storedRandomNumber)}但代码可能会开始变得有点凌乱,并且想知道是否有更清洁的东西可供使用?

1 个答案:

答案 0 :(得分:0)

您可以在此请求之后立即创建另一个exec(),以使用session.set()方法分配所需的随机值,然后保存该值以供重用的整个线程。

EX:

val scenario = scenario("scenarioName")
.exec(
  http("<-- Name Of Request -->")
    .get("<LINK _TO_FIRST_REQ>")
    .check(jsonPath("$.items[*].id").findAll.optional.saveAs("ListOfAttributeNames"))
)
.exec( session => session.set("randomAttributeNameSelected", session("ListOfAttributeNames").as[Seq[String]]
  .apply(scala.util.Random
    .nextInt((session("ListOfAttributeNames").as[Seq[String]].size - 0) + 1)))
)
.exec(
  http("We use the ID here")
    .get(session => "http://domain.something.com/api/" + session("randomAttributeNameSelected").as[String])
)

因此,如果您访问session("randomAttributeNameSelected").as[String],同一线程中的任何时间都会为您提供随机ID。