Gatling - Comment enregistrer le corps de la réponse

Comment enregistrer le corps de la réponse dans Gatling?

Lorsque nous testons les performances des API, nous pouvons avoir besoin de créer une chaîne de requêtes. Par exemple, nous appelons une API, enregistrons la réponse et transmettons la réponse à un autre appel d'API.

C'est ce qu'on appelle le chaînage demande-réponse et c'est une activité courante lors du test des API.


Gatling fournit un moyen de sauvegarder la réponse entière ou une partie d'une réponse.

Les exemples ci-dessous illustrent comment enregistrer les données de réponse dans Gatling.




Sauvez tout le corps de la réponse

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

Nous enregistrons la réponse complète de l'appel d'API ci-dessus dans une variable appelée Auth_Response.

Ensuite, nous pouvons utiliser cette variable, qui contient la réponse, pour passer en tant que corps ou charge utile à une autre requête, telle que:

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


Extraire l'élément du corps de la réponse et enregistrer

Dans Gatling, nous pouvons également analyser une réponse, par exemple avec JsonPath, extraire une valeur et la sauvegarder en tant que variable. Comme ci-dessus, nous pouvons ensuite transmettre cette variable lors du prochain appel d'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'))

Dans la demande ci-dessus, nous analysons la réponse JSON et extrayons la valeur du paramètre tokenId et enregistrez sa valeur sous tokenId.


On peut alors référencer la variable en utilisant ${tokenId}