Gatling - Jak zachránit tělo odpovědi

Jak uložit tělo odpovědi v Gatlingu?

Když provádíme testování výkonu API, možná budeme muset vytvořit řetězec požadavků. Například provedeme volání API, uložíme odpověď a předáme odpověď jinému volání API.

Tomu se říká řetězení požadavků a odpovědí a jedná se o běžnou aktivitu při testování API.


Gatling poskytuje způsob uložení celé odpovědi nebo její části.

Níže uvedené příklady ilustrují, jak ukládat data odpovědí v Gatlingu.




Uložte celé tělo odpovědi

val authRequest = exec(http('Auth Request')
.post(base_url + '/login/auth')
.body(ElFileBody('payload.json'))
.check(bodyString.saveAs('Auth_Response'))
.check(status is 200))

Uložíme úplnou odpověď výše uvedeného volání API do proměnné s názvem Auth_Response.



Potom můžeme tuto proměnnou, která obsahuje odpověď, použít k předání jako tělo nebo užitečné zatížení k jinému požadavku, například:

val validateRequest = exec(http('Validate Request')
.post(base_url + '/login/validate')
.body(StringBody('${Auth_Response}'))
.check(bodyString.saveAs('Validate_Response'))
.check(status is 200) )


Extrahujte prvek z těla odpovědi a uložte jej

V Gatlingu můžeme také analyzovat odpověď, například pomocí JsonPath, extrahovat hodnotu a uložit ji jako proměnnou. Stejně jako výše můžeme tuto proměnnou předat v příštím volání 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'))

Ve výše uvedeném požadavku analyzujeme odpověď JSON a extrahujeme hodnotu parametru tokenId a uložte jeho hodnotu jako tokenId.


Potom můžeme na proměnnou odkazovat pomocí ${tokenId}