【问题标题】:Not able to extract values in Gatling无法在加特林中提取值
【发布时间】:2017-04-11 23:40:38
【问题描述】:

我已经编写了 2 套加特林代码。我在示例 1 中的用例是拨打电话。提取一个值。进行 get 调用并在标头中使用提取的值。

我在示例 2 中的用例是进行 post 调用,提取值,使用 cookie 中提取的值进行 get 调用。

示例 1

   val login = http("Login")
      .post("login")
      .body(StringBody("""{"username": "foo", "password": "bar"}""")).asJSON
      .check(status.is(200), jsonPath("$..response.id").ofType[String].saveAs("id"))

   val get = http("get")
      .get("foo")
      .header("token", "$id")
      .check(status.is(200), jsonPath("$..response").exists)

   var id = ""
   val scn = scenario("scenario")
      .exec(login)
      .exec(session => {
         id = session("id").as[String].trim
         println("+++++++" + id)
         session}
      )
      .pause(3)
      .exec(get)

当我运行此代码时,我看到上面的打印语句打印了正确的 ID。由于未正确设置 ID,服务器在 get 调用中抛出 403。如果我获取任何打印的值,然后远程$id 并用它替换它。测试正确运行。

那么如何访问保存的变量呢?

示例 2

val login = http("Login")
      .post("login")
      .body(StringBody("""{"username": "foo", "password": "bar"}""")).asJSON
      .check(status.is(200), jsonPath("$..response.id").ofType[String].saveAs("id"))

   val get = http("get")
      .get("foo")
      .check(status.is(200), jsonPath("$..response").exists)

   val testCookie = scenario("test-cookie")
      .exec(login)
      .pause(3)
      .exec(addCookie(Cookie("foo_cookie", "$id")))
      .exec(get)

这里的值也没有成功提取,我在运行它时得到 403,因为“foo_cookie”设置不正确,如果找不到 cookie,服务器将抛出 403。 (在邮递员中,我可以通过正确指定 cookie 来进行相同的调用)

【问题讨论】:

    标签: scala gatling


    【解决方案1】:

    我能够解决问题。问题是这一行

    .header("token", s"$id")
    

    在 Scala 中 $id${id} 是相同的,但在 Gatling 中它们似乎不同。

    当我将代码替换为

    .header("token", "${id}")
    

    注意字符串后面没有“s”。

    成功了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-16
      • 2017-03-11
      • 1970-01-01
      • 1970-01-01
      • 2014-09-22
      相关资源
      最近更新 更多