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 Response и извличаме стойността за параметъра tokenId и запазете стойността му като tokenId.


След това можем да се позовем на променливата, използвайки ${tokenId}