Как передать значения из одного сценария в другой сценарий в gatling? - PullRequest
0 голосов
/ 20 мая 2019

У меня есть некоторый сквозной поток, в котором я должен запустить службу и передать значения следующему сценарию. Я могу напечатать значения внутри сценариев, но не могу использовать их в следующих сценариях.

Я пытался сохранить значения с помощью SaveAs

val scn_Token1 ={ scenario("Token1")
    .exec(actionBuilder = http("Token1")
      .post("/getToken")
      .body(StringBody(bdy_Token)).asJson
      .check(status.is(200))
      .check(jsonPath("$.Token").exists)
      .check(jsonPath("$..Token")
        .find
        .saveAs("Token")
      )
      .check(jsonPath("$..id")
        .find
        .saveAs("mid")
      )
      .check(jsonPath("$..otp")
        .find
        .saveAs("otp")
      )
    )pause(tnk_token milliseconds)
  }


  val scn_Auth ={ scenario("Authentication")
    .exec(actionBuilder = http("Authentication")
      .post(authServiceUrl)
      .header("Token", "${Token}")
      .header("id", "${id}")
      .header("otp", "${otp}")
      .body(StringBody(bdy_Auth)).asJson
      .check(status.is(200)))
      .pause(tnk_Auth milliseconds)
  }



  setUp(
   scn_Token1.inject(nothingFor(dly_token_first seconds),rampUsers(ucnt_token_first) during (ramp_token_first seconds)).protocols(httpConfToken),
  scn_Auth.inject(nothingFor(dly_Auth seconds),rampUsers(ucnt_Auth) during (ramp_Auth seconds)).protocols(httpConf)
  ).maxDuration(test_duration minutes)

Я получаю сообщение об ошибке типа

Не удалось выполнить httpRequest-2: атрибут с именем id не определен

Не удалось выполнить httpRequest-2: атрибут с именем Token не определен

Я также попытался установить время ожидания для второго сценария, чтобы он выполнялся после завершения сценария 1. Но все равно он не получает значения.

Обратите внимание, что я не хочу, чтобы токен и Auth объединялись в одном сценарии, поскольку он имеет другую конфигурацию. значения должны быть переданы из одного сценария в другой. Пожалуйста, дайте мне знать, что здесь происходит не так?

1 Ответ

0 голосов
/ 29 мая 2019

Гатлинг не может передавать данные между пользователями - если вам нужно выполнять scn_Token перед каждым запросом scn_Auth для установки параметра сеанса, просто включите его в scn_Token.

Переопределить scn_Auth, чтобы быть

  val scn_Auth ={ scenario("Authentication")
.exec(scn_Token1)
.exec(actionBuilder = http("Authentication")
  .post(authServiceUrl)
  .header("Token", "${Token}")
  .header("id", "${id}")
  .header("otp", "${otp}")
  .body(StringBody(bdy_Auth)).asJson
  .check(status.is(200)))
  .pause(tnk_Auth milliseconds)
}

и затем вводить пользователей только для scn_Auth

...