Как сохранить тело ответа в Гатлинге?
Когда мы проводим тестирование производительности 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}