Сконфигурируйте базовый URL gatling из исходного http-запроса - PullRequest
0 голосов
/ 21 октября 2019

Я совершенно новичок в Scala и Gatling, пожалуйста, простите за основной вопрос!

Я хочу создать протокол http с baseUrl, указанным в результате первоначального запроса http. Или другими словами:

  1. Получить удаленную конфигурацию как JSON, скажем, из https://example.com/config.json
  2. Разобрать JSON, получить указанное свойство endpoint
  3. Передать этозначение http.baseUrl()

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

Мой инстинкт заключается в следующем:

object Environment {
  val config = "https://example.com/config.json"
}

val httpProtocol = http("config")
    .get(Environment.config)
    .check(
      jsonPath("$.endpoint").saveAs("endpoint")
    )
    .baseUrl("${endpoint}")

// ... and then later on

setUp(
    // scenario.inject()…
  ).protocols(httpProtocol)

.. ... но это не компилируется.

Большое спасибо за любую помощь.

1 Ответ

0 голосов
/ 22 октября 2019

То, что вы предлагаете, не будет работать.

.protocols принимает HttpProtocolBuilder (задокументировано на сайте gatling), тогда как вы пытаетесь передать HttpRequestBuilder

Кроме того,Параметр baseUrl в HttpProtocolBuilder принимает только строку, поэтому вы не сможете передать в нее значение сеанса гатлинга.

Единственный способ, которым я могу думать, это сделать запрос, возвращающий базуurl в блоке before, но вы не сможете использовать gatling-конструкции dsl для выполнения этого запроса: вам придется делать это с необработанным scala

...