Как сравнить ответы от http звонков в gatling? - PullRequest
0 голосов
/ 06 июля 2019

У меня 2 http-вызова в 2 разных функциях def и сохранение ключей json из тела ответа в сеансе gatling.Как я могу сопоставить их?

def getAppData():HttpRequestBuilder = {
      http("get application resource")
        .get("host/app")
        .header("Authorization", "Bearer "+ token)
        .check(status.is(200))
        .check(jsonPath("$..${app_info}").saveAs("app_Response"))

}
def getUserData():HttpRequestBuilder = {
      http("get user data ")
        .get("host/user/data")
        .header("Authorization", "Bearer "+ token)
        .check(status.is(200))
        .check(jsonPath("$..${user_info}").saveAs("userdata_Response"))

}

Как мне сравнить или проверить, что значения json в app_info и user_info совпадают, т.е.

app_Response и userdata_Response

Значения обоих из них являются массивами.Например, в этом формате:

"app_info":
    [
         "name",
         "address"
    ]

то же самое для user_info.Я попытался использовать встроенные методы jsonPath (). Equals (), но я считаю, что это не подходящий способ сравнения.Если нет способа использовать определенные методы, то, возможно, найдете, как выполнить scala?

Пожалуйста, помогите.

1 Ответ

1 голос
/ 07 июля 2019

В основном, вы используете json-spray, вы должны иметь возможность сравнивать оба, используя оператор ==, как описано в этом другом ответе здесь.

Сравните равенство JSON в Scala

[Изменить] Делая что-то вроде этого, я мог бы сравнить 2 Json, используя спрей:

package example

import io.gatling.core.Predef._
import io.gatling.http.Predef._
import spray.json._
import DefaultJsonProtocol._

class MainSimulation extends Simulation {
  val baseUrl = "http://localhost:8080"
  val httpProtocol = http
    .baseUrl(baseUrl)
    .userAgentHeader("Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)")
  val header = Map("Content-Type" -> "application/json”,”Accept-Charset" -> "utf-8")

  val scn = scenario("Scenario")
    .exec(http("Get Hello Json")
      .get("/hello/Alessandro")
      .check(status.is(200))
      .check(jsonPath("$").saveAs("activities-1")))
    .exec(http("Get Hello Json")
      .get("/hello/Ronaldo")
      .check(status.is(200))
      .check(jsonPath("$").saveAs("activities-2")))
    .exec(session => {
      println("=======================================================")
      val activities_1 = session("activities-1").as[String]
      val activities_2 = session("activities-2").as[String]
      println(s"Activities 1: ${activities_1.parseJson}")
      println(s"Activities 2: ${activities_2.parseJson}")
      println(s"Are they equal?: ${activities_1.parseJson == activities_2.parseJson}")
      println("=======================================================")
      session
    })

  setUp(scn.inject(atOnceUsers(1))).protocols(httpProtocol)
}

и я вижу это в выводе:

=======================================================
Activities 1: {"activities":["swimming","soccer"],"name":"Alessandro"}
Activities 2: {"activities":["swimming","soccer"],"name":"Alessandro"}
Are they equal?: true
=======================================================
...