Gau*_*tam 4 scala load-testing gatling
我的用例是进行 http 调用,从响应中的 Location 标头获取重定向 url,并使用此 url 执行负载测试。该 url 是动态生成的,因此是最初的第一个 http 调用。请注意,测试第一个 http 调用不是我的测试的一部分。实现这一目标的最佳方法是什么?加特林中是否有类似于 @BeforeMethod 的等效项?加特林本身可以用来进行独立的http调用还是我需要使用基本的scala来实现这一点?到目前为止我有这个:
val httpConfig = http
.inferHtmlResources()
.acceptHeader("*/*")
.acceptEncodingHeader("gzip, deflate")
.acceptLanguageHeader("en-US,en;q=0.5")
.header("Authorization", "Negotiate " + token)
.doNotTrackHeader("1")
.userAgentHeader("Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:51.0) Gecko/20100101 Firefox/51.0")
val scn = scenario("My Tests").exec(http("Health check")
.get("https://example-server.com")
.check(status.is(200)))
setUp(
scn.inject(atOnceUsers(10))
).protocols(httpConfig)
Run Code Online (Sandbox Code Playgroud)
我对加特林和scala的理解是有限的。因此就有了这个基本问题。
您可以在Simulation.
这将由加特林运行时在启动场景之前运行。
IE
class MyTestWithDynamicTarget extends Simulation {
val targetUrl = loadTarget()
val scn = scenario("My Tests")
.exec(http("Health check")
.get(targetUrl)
.check(status.is(200)))
setUp(
scn.inject(atOnceUsers(10))
).protocols(httpConfig)
/**
* Fetch the current location of the service under test, which is returned
* in the "Location" header of an HTTP request
*/
def loadTarget() = {
??? // see e.g. /sf/ask/186130031/
}
}
Run Code Online (Sandbox Code Playgroud)
(场景 API 确实提供了“之前”和“之后”挂钩(请参阅此处的文档),但没有简单的方法可以将这些挂钩中的信息传递到场景配置中,正如您需要在此处执行的那样。)