Jak zapisać treść odpowiedzi w Gatling?
Podczas testowania wydajności API może być konieczne zbudowanie łańcucha żądań. Na przykład wykonujemy wywołanie API, zapisujemy odpowiedź i przekazujemy odpowiedź do innego wywołania API.
Nazywa się to łączeniem żądanie-odpowiedź i jest typową czynnością podczas testowania interfejsów API.
Gatling zapewnia sposób na zapisanie całej odpowiedzi lub części odpowiedzi.
Poniższe przykłady ilustrują sposób zapisywania danych odpowiedzi w 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))
Zapisujemy pełną odpowiedź powyższego wywołania API w zmiennej o nazwie Auth_Response
.
Następnie możemy użyć tej zmiennej, która zawiera odpowiedź, aby przekazać ją jako treść lub ładunek do innego żądania, takiego jak:
val validateRequest = exec(http('Validate Request')
.post(base_url + '/login/validate')
.body(StringBody('${Auth_Response}'))
.check(bodyString.saveAs('Validate_Response'))
.check(status is 200) )
W Gatling możemy również przeanalizować odpowiedź, na przykład za pomocą JsonPath, wyodrębnić wartość i zapisać ją jako zmienną. Podobnie jak powyżej, możemy następnie przekazać tę zmienną w następnym wywołaniu 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'))
W powyższym żądaniu analizujemy odpowiedź JSON i wyodrębniamy wartość parametru tokenId
i zapisz jego wartość jako tokenId
.
Następnie możemy odwołać się do zmiennej za pomocą ${tokenId}