我目前正在使用gatling
测试网络服务。
因此,我必须通过向Web服务请求检索一些accessToken
。
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
向Web服务发出一些请求。
到目前为止这是有效的。
但现在我想使用检索到的accessToken
同时对后面的请求进行压力测试。 accessToken
只能检索一次,但之后的并发请求应使用相同的检索accessToken
。
我对scala并不熟悉,但我制作了一个scala单例,我希望将检索到的accessToken
存储在单个变量中,以后可以由并发请求使用。
这是一个好方法吗?我怎样才能做到这一点?
答案 0 :(得分:1)
您要检索多少个accessToken?每个虚拟用户只有一个共享一个或一个?
如果是前者,则无法使用Gatling API获取它。 Gatling发布了AsyncHttpClient,因此您可以使用它来获取accessToken并将其作为val存储在Simulation中。
如果是后者,只需使用Gatling EL将保存的值注入其他请求:" foo $ {accessToken} bar"。
顺便说一句,我怀疑你的正则表达式是否按预期工作。你使用三重引号转义,所以你必须保护你的内部双引号:"""" accessToken":"(。+?)&#34 ;"""