Як захаваць цела адказу ў 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}