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 και εξάγουμε την τιμή για την παράμετρο tokenId και αποθηκεύστε την τιμή του ως tokenId.


Στη συνέχεια μπορούμε να αναφέρουμε τη μεταβλητή χρησιμοποιώντας ${tokenId}