如何在Gatling中将答案反馈回请求中

问题描述 投票:0回答:2

我正在与Gatling一起在Scala工作。

我需要遵循在HTML页面中找到的重定向,作为对我的第一个请求的响应发送(因此,加特林之后的自动重定向无法解决问题。

现在我的解决方案看起来像这样:

private def scn: ScenarioBuilder = {
  scenario("KLS test tool")
  .repeat(nb_req) {
    feed(feeder)
    .exec {
      http("request").
        httpRequest("GET", "${url}")
        .check(bodyString.saveAs("body"))
    }
    .exec {
      session => {
        val responseBody = session.attributes("body").toString
        val redirect = findRedirectUrlIn(responseBody)
        redirect match {
          case Some(url) =>
            java.lang.System.setProperty("redirect_url", url)
          case None =>java.lang.System.setProperty("redirect_url", "")
        }
      }
    }
    .exec {
      val redirect = java.lang.System.getProperty("redirect_url")
      val url = "/redirect?url=" + redirect
      http("redirect").
        httpRequest("GET", url)
    }
  }
}

但是,第二个执行程序(应该扫描HTML页面以查找要重定向到的URL)在第三个执行程序(应该实际访问URL)之后运行,因此getProperty给我“空”

我如何强制盖特林以正确的顺序运行高管?

gatling scala-gatling
2个回答
0
投票

我有类似的任务,但是以另一种方式做了...如果禁用重定向该怎么办?只需将disableFollowRedirect添加到您的HttpProtocolBuilder中:

val protocol = http
    .baseUrl(...)
    .disableFollowRedirect

然后我发出了重定向并保存到redirect_url的请求] >>

val getUrl: HttpRequestBuilder = http("getShortUrl")
    .get("${shortUrl}")
    .check(
      status.is(302),
      header("Location").saveAs("redirect_url")
    )

0
投票

您在做什么是错误的。

© www.soinside.com 2019 - 2024. All rights reserved.