Гатлинг - Как сохранить тело ответа

Как сохранить тело ответа в Гатлинге?

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

Это называется цепочкой запрос-ответ и является обычным действием при тестировании API.

Gatling предоставляет способ сохранить весь ответ или его часть.

В приведенных ниже примерах показано, как сохранить данные ответа в Gatling.

Сохраните весь ответ

val authRequest = exec(http('Auth Request')
.post(base_url + '/login/auth')
.body(ElFileBody('payload.json'))
.check(bodyString.saveAs('Auth_Response'))
.check(status is 200))

Мы сохраняем полный ответ на указанный выше вызов API в переменной с именем Auth_Response.



Затем мы можем использовать эту переменную, которая содержит ответ, для передачи в качестве тела или полезной нагрузки другому запросу, например:

val validateRequest = exec(http('Validate Request')
.post(base_url + '/login/validate')
.body(StringBody('${Auth_Response}'))
.check(bodyString.saveAs('Validate_Response'))
.check(status is 200) )

Извлечь элемент из тела ответа и сохранить

В Gatling мы также можем анализировать ответ, например, с помощью JsonPath, извлекать значение и сохранять его как переменную. Как и выше, мы можем передать эту переменную в следующий вызов API.

val loginRequest: HttpRequestBuilder = http('Login Request')
.post(base_url + '/login')
.header(ContentType, ApplicationJson)
.header(Accept, ApplicationJson)
.body(StringBody(''))
.check(status is 200)
.check(jsonPath('$.tokenId').saveAs('tokenId'))

В приведенном выше запросе мы анализируем ответ JSON и извлекаем значение для параметра tokenId и сохраните его значение как tokenId.

Затем мы можем ссылаться на переменную, используя ${tokenId}