【问题标题】:Gatling/Scala is unable to find JSON retrieved session keyGatling/Scala 无法找到 JSON 检索的会话密钥
【发布时间】:2014-10-29 06:04:30
【问题描述】:

我对 Gatling 非常陌生,并且已经习惯了使用它,所以我需要用它编写自动化脚本。我以前没有任何经验。

当我尝试运行多个场景时,我会在登录后检索“session_key”作为 JSON 响应的一部分。我尝试遵循互联网上的指南,保存了这个值,但是当我尝试在第二个场景中进一步使用它时,表达式语言找不到它。

我已经验证了我的 JSONPath 表达式,它似乎是正确的。

{"result":1,"resultType":"ack","output":{"session_key":"a value for the session key goes here"},"errorMessage":false,"errorCode":false,"additional":{"locationtabs":["tab 1","tab 2","tab 3"]}}

我还在下面列出了我的代码,但用我的问题的模拟数据替换了使用数据。

package basic

import com.excilys.ebi.gatling.core.Predef._
import com.excilys.ebi.gatling.http.Predef._
import com.excilys.ebi.gatling.jdbc.Predef._
import com.excilys.ebi.gatling.http.Headers.Names._
import com.jayway.jsonpath._
import akka.util.duration._
import bootstrap._

class GetLocations extends Simulation
{


    val httpConf = httpConfig
        .baseURL("https://myURL")
        .acceptCharsetHeader("ISO-8859-1,utf-8;q=0.7,*;q=0.7")
        .acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
        .acceptEncodingHeader("gzip, deflate")
        .acceptLanguageHeader("fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3")
        .disableFollowRedirect

    val scn = scenario("Login Test")
        .exec(
            http("requestLogin")
            .post("/restapi/login")
            .param("username", "a username")
            .param("password", "a password")
            .param("client_uid", "testUid")
            .check(jsonPath("$.result").is("1"))
            .check(jsonPath("$.output.session_key").findAll.saveAs("session_key"))

        ).pause(15)



    val getLocations = scenario("Get Locations")
        .exec(
            http("getLocations")
            .post("/restapi/get_employee_favouritelocations")
            .param("client_uid","testUid")
            .param("clientType","automatedTest")
            .param("session_key","${session_key}")
            .check(jsonPath("$.result").is("1"))
        )

    setUp(scn.users(50).ramp(50).protocolConfig(httpConf),
          getLocations.users(50).ramp(50).protocolConfig(httpConf)
        )

}

感谢您提供的任何帮助,因为这让我头疼了一个星期,不幸的是,目前只有我可以处理这个问题。

【问题讨论】:

    标签: json scala jsonpath gatling


    【解决方案1】:

    您有两种不同的场景,一种是其用户将一些数据保存到他们的会话中,另一种是其用户试图从他们的会话中获取数据。

    这些是不同的虚拟用户,因此您不会从同一个地方进行保存和获取。

    基本上,你做错了。 目前尚不清楚您要达到的目标。

    【讨论】:

      猜你喜欢
      • 2017-12-12
      • 1970-01-01
      • 1970-01-01
      • 2011-01-11
      • 1970-01-01
      • 2017-12-31
      • 1970-01-01
      • 1970-01-01
      • 2017-01-19
      相关资源
      最近更新 更多