0

我目前正在使用gatling. accessToken因此,我必须通过对 Web 服务的请求来检索一些内容。

val accessToken = exec(http("access token")
  .get("""/protected/document/access.do?id=266892""")
  .headers(headers_html)
  .check(status.lessThan(400))
  .check(regex("""\"accessToken\":\"(.+?)\"""").saveAs("accessToken"))
).pause(50 milliseconds)

之后,我使用检索到的accessToken. 到目前为止,这有效。

但现在我想使用检索到的同时对后面的请求进行压力测试accessTokenaccessToken只能检索一次,但之后的并发请求都应该使用相同的检索accessToken

我对 scala 不太熟悉,但我做了一个 scala 单例,我想将检索到的存储accessToken在一个单例变量中,以后并发请求可以使用该变量。

这是一个好方法吗?我怎样才能做到这一点?

4

1 回答 1

1

您要检索多少个 accessToken?每个虚拟用户只有一个共享一个或一个?

如果是前者,则不能使用 Gatling API 来获取它。Gatling 提供 AsyncHttpClient,因此您可以使用它来获取 accessToken 并将其作为 val 存储在 Simulation 中。

如果是后者,只需使用 Gatling EL 将保存的值注入其他请求:“foo${accessToken}bar”。

顺便说一句,我怀疑您的正则表达式是否按预期工作。您使用了三引号转义,因此您应该保护您的内部双引号:""""accessToken":"(.+?)""""

于 2014-06-11T14:34:44.903 回答