Как да запазите тялото на отговора в 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}