Gatling - Як выратаваць цела рэагавання

Як захаваць цела адказу ў Gatling?

Калі мы праводзім тэставанне прадукцыйнасці 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}