Passer au contenu principal

Assertions sur les réponses API et extraction de variables

Écrit par Ines

Le module Tests d’API de Thunders vous permet d’appeler n’importe quel endpoint HTTP depuis une étape de test, d’inspecter la réponse, et de transformer des portions de cette réponse en contrôles automatisés ou en variables réutilisables. Cette page décrit les deux capacités clés qui s’ajoutent aux étapes API : les assertions sur les réponses et l’extraction de variables.

En bref — Exécutez une étape API → ouvrez l’inspecteur de réponse en cliquant sur l’étape API → cliquez sur Vérifier ou Extraire sur n’importe quelle valeur → chaque clic ajoute une étape à la fin du cas de test → Exécutez.

Une étape API après son exécution. L’inspecteur de réponse affiche les cartes Code de statut, Durée et Durée de chargement avec Vérifier et Extraire, et l’arbre JSON du corps de la réponse.

À quoi sert la fonctionnalité

Lorsqu’une étape API s’exécute, Thunders capture la réponse HTTP complète :

  • Code de statut (ex. 200, 404)

  • Durée et durée de chargement (en millisecondes)

  • Corps de la réponse (analysé en JSON lorsque possible)

  • En-têtes

Depuis l’inspecteur de réponse, vous pouvez :

  • Ajouter des étapes d’assertion pour vérifier automatiquement qu’une valeur correspond au résultat attendu, à chaque exécution.

  • Ajouter des étapes d’extraction pour sauvegarder n’importe quelle valeur dans une variable nommée, réutilisable par les étapes suivantes.

  • Enregistrer une valeur comme variable de projet ou d’environnement, qui reste disponible après l’exécution.

Les assertions et les extractions sont de vraies étapes de test — elles apparaissent dans la liste des étapes, affichent leur statut réussite/échec, et peuvent être réordonnées ou modifiées comme n’importe quelle autre étape.

Enregistrer une réponse API complète dans une variable

Chaque étape API enregistre automatiquement sa réponse complète dans une variable. Vous pouvez personnaliser le nom depuis le formulaire de l’étape API.

  1. Appuyez sur A (ou cliquez sur Ajouter une étape → API) pour ouvrir la fenêtre d’étape.

  2. Renseignez la méthode (GET, POST, PUT, PATCH, DELETE), l’URL, les en-têtes, le corps et l’authentification.

  3. Dans le champ Enregistrer la réponse sous, choisissez un nom. Les valeurs par défaut suivent le modèle API_RESPONSE_1, API_RESPONSE_2, etc.

  4. Exécutez l’étape — l’objet réponse complet est maintenant disponible sous ce nom.

La fenêtre Ajouter une étape pour une étape Appel API, avec GET /products/1 et la réponse enregistrée sous API_RESPONSE_1.
Un cas de test avec une étape Appel API, GET /products/1, avant son exécution.

Astuce : utilisez des noms descriptifs comme LOGIN_RESPONSE, USER_PROFILE_RESPONSE ou LIST_ORDERS_RESPONSE afin que les références ultérieures restent lisibles.

Règles de nommage : lettres majuscules, chiffres et underscores uniquement. Doit commencer par une lettre. Regex : ^[A-Z][A-Z0-9_]*$.

Réutiliser les données de réponse dans les étapes suivantes

Une fois qu’une réponse est enregistrée, toute étape suivante peut la référencer avec la syntaxe [NOM_DE_VARIABLE]. Vous pouvez aussi accéder aux champs imbriqués avec la notation pointée.

Référence

Résout en

[LOGIN_RESPONSE].body.token

Le champ token du corps JSON

[LOGIN_RESPONSE].statusCode

Le code de statut HTTP

[LOGIN_RESPONSE].duration

La durée de la requête (millisecondes)

[USER_ID]

Une variable explicitement extraite dans une étape précédente

Vous pouvez utiliser ces références :

  • Dans l’URL d’une étape API suivante — https://api.example.com/users/[USER_ID]

  • Dans un en-tête — Authorization: Bearer [LOGIN_RESPONSE].body.token

  • Dans la valeur attendue d’une assertion

Commencez à taper / (ou [) dans n’importe quel champ compatible pour ouvrir l’auto-complétion de l’Éditeur de variables et choisir parmi les variables disponibles.

Taper / dans un champ d’étape ouvre la liste des variables, avec API_RESPONSE_1 et les variables extraites TITLE et TITLE_KEY.

Vérifier les métadonnées de réponse (statut, durée)

Les métadonnées de réponse apparaissent sous forme de cartes de métriques en haut de l’inspecteur.

Pour vérifier une métrique :

  1. Cliquez sur Vérifier (ou ouvrez le menu ⋯ sur les écrans étroits) sur la carte Code de statut.

  2. La fenêtre d’assertion s’ouvre avec le chemin du champ prérempli, ex. [API_RESPONSE_1].statusCode.

  3. Choisissez un opérateur.

  4. Saisissez la valeur attendue (ex. 200).

  5. Cliquez sur Ajouter une assertion — une étape Assertion est ajoutée à la fin du cas de test.

La fenêtre d’assertion pour statusCode, avec le chemin [API_RESPONSE_1].statusCode, l’opérateur est égal à et la valeur 200.
La nouvelle étape d’assertion à la fin du cas de test : [API_RESPONSE_1].statusCode est égal à 200.

Assertions courantes sur les métadonnées :

Objectif

Champ

Opérateur

Valeur attendue

Statut de succès

statusCode

est égal à

200

Accepter n’importe quel 2xx

statusCode

est inférieur à

300

Respecter un budget de latence

duration

est inférieur à

1000

Vérifier une redirection

statusCode

est égal à

302

Vérifier les valeurs JSON de réponse

Le corps de la réponse s’affiche sous forme d’arbre JSON interactif. Dépliez n’importe quel objet ou tableau pour atteindre un champ précis.

Pour vérifier une valeur JSON :

  1. Dépliez l’arbre JSON jusqu’au champ qui vous intéresse.

  2. Cliquez sur Vérifier à côté de la valeur.

  3. Le chemin du champ est calculé automatiquement, ex. [API_RESPONSE_1].body.title.

  4. Sélectionnez un opérateur.

  5. Saisissez la valeur attendue et cliquez sur Ajouter une assertion.

La fenêtre d’assertion pour body.title, avec la cible Valeur, l’opérateur est égal à et la valeur Essence Mascara Lash Princess.
La nouvelle étape d’assertion : [API_RESPONSE_1].body.title est égal à Essence Mascara Lash Princess.

Opérateurs disponibles :

Opérateur

À utiliser pour

est égal à / n’est pas égal à

Correspondance exacte (chaînes, nombres, booléens)

est supérieur à / est supérieur ou égal à

Comparaisons numériques

est inférieur à / est inférieur ou égal à

Comparaisons numériques

contient

Vérification de sous-chaîne ou d’élément de tableau

commence par / se termine par

Préfixe / suffixe sur des chaînes (identifiants, URL)

possède la clé / ne possède pas la clé

Vérifier qu’un objet JSON contient (ou non) une clé donnée

Astuce : utilisez possède la clé / ne possède pas la clé lorsque seule la présence d’une clé compte, pas sa valeur — idéal pour les feature flags ou les champs optionnels.

Cibler les clés ou les valeurs

Lorsque vous cliquez sur Vérifier ou Extraire sur un champ appartenant à un objet JSON, la fenêtre affiche une bascule Cible avec deux options : Clé et Valeur. Elle vous permet de décider si l’assertion ou l’extraction porte sur le nom du champ ou sur son contenu. Le chemin est renseigné automatiquement pour vous — vous n’avez jamais besoin de l’écrire.

  • Valeur (par défaut) — agit sur le contenu du champ.

  • Clé — agit sur le nom du champ lui-même.

La bascule Cible de la fenêtre d’assertion pour body.title, réglée sur Valeur.
La bascule Cible réglée sur Clé pour body.title, avec l’opérateur possède la clé et la valeur title.

La bascule Cible n’apparaît que pour les valeurs qui sont enfants directs d’un objet JSON. Elle est masquée pour les éléments de tableau, les cartes de métriques (statut, durée) et les champs de réponse de premier niveau — il n’y a pas de clé à cibler dans ces cas.

Quand cibler la clé :

  • Vérifier qu’un objet de réponse expose toujours un nom de champ précis (test de contrat).

  • Extraire une clé générée dynamiquement (par exemple un identifiant utilisé comme clé de map) pour la réutiliser dans les étapes suivantes.

Exemple — à partir d’un corps de réponse produit :

{
"title": "Essence Mascara Lash Princess",
"price": 9.99,
"meta": {
"barcode": "5784719087687",
"qrCode": "https://cdn.dummyjson.com/public/qr-code.png"
}
}
  • Cliquer sur Vérifier pour meta.barcode avec Cible → Valeur vérifie que le code-barres vaut "5784719087687".

  • Cliquer sur Vérifier pour meta.barcode avec Cible → Clé vérifie que la réponse inclut toujours un champ littéralement nommé "barcode" — un simple test de contrat qui résiste aux changements de valeur.

Astuce : si vous voulez simplement vérifier qu’une clé existe, possède la clé sur l’objet parent est généralement plus simple. Utilisez Cible → Clé lorsque vous avez besoin du nom de la clé comme valeur (par exemple pour l’enregistrer dans une variable).

Une assertion sur la clé de body.meta.barcode : cible Clé, opérateur possède la clé et valeur barcode.

Extraire des clés et des valeurs dans des variables

L’extraction de variable stocke une portion de la réponse sous un nom de variable afin que les étapes suivantes puissent l’utiliser.

Pour extraire une valeur :

  1. Dans l’inspecteur de réponse, localisez la valeur à réutiliser (carte de métrique ou nœud de l’arbre JSON).

  2. Cliquez sur Extraire.

  3. La fenêtre d’extraction s’ouvre avec le chemin du champ prérempli.

  4. Dans Enregistrer sous, saisissez un nom de variable — le champ passe automatiquement en majuscules et retire les caractères invalides.

  5. Cliquez sur Extraire — une étape EXTRACT est ajoutée à la fin du cas de test.

L’onglet Extraire de la fenêtre pour body.meta.barcode, avec la cible Clé et le nom de variable BARCODE dans Enregistrer sous.
La nouvelle étape EXTRACT : [API_RESPONSE_1].body.meta.@keys[2] enregistrée dans [BARCODE].
La variable extraite BARCODE dans la liste des variables d’une nouvelle Étape IA.

Enregistrer une valeur comme variable de projet ou d’environnement

Une variable extraite ne vit que le temps d’une exécution. Pour garder une valeur pour les exécutions suivantes et pour d’autres cas de test, par exemple un jeton, enregistrez-la comme variable de projet ou d’environnement. Cette action n’ajoute aucune étape au cas de test.

Pour enregistrer une valeur de la réponse :

  1. Dans l’inspecteur de réponse, survolez une valeur de l’arbre JSON. Vérifier, Extraire et Enregistrer apparaissent à côté. Sur une carte de métrique, Vérifier, Extraire et Enregistrer s’affichent en boutons, ou, sur une carte étroite, dans son bouton d’actions.

  2. Cliquez sur Enregistrer.

  3. La fenêtre Créer une variable s’ouvre. La Clé est suggérée à partir du chemin du champ, par exemple body.userId donne USER_ID, et la Valeur contient la valeur du champ, ici 1. La fenêtre affiche aussi les interrupteurs Marquer comme modifiable et Stocker comme identifiant sécurisé.

  4. Sous Portée, choisissez Niveau projet, ou Environnement et un environnement. La fenêtre s’ouvre sur l’environnement de l’exécution.

  5. Modifiez la clé si besoin, puis cliquez sur Créer.

Une étape API après son exécution. Dans l’inspecteur de réponse, la valeur userId affiche Vérifier, Extraire et Enregistrer au survol. Enregistrer ouvre la fenêtre Créer une variable avec la portée Environnement et l’environnement Production sélectionnés, la clé USER_ID et la valeur 1.

Pour enregistrer le corps complet de la réponse :

  1. Sous l’étape API, survolez la puce de réponse dans « Réponse API complète stockée dans [API_RESPONSE_1] ».

  2. Cliquez sur Enregistrer comme variable.

  3. La même fenêtre Créer une variable s’ouvre. La Valeur contient le corps de la réponse, et la Clé est suggérée à partir de la requête, par exemple GET_ORDERS_RESPONSE pour GET /orders.

  4. Choisissez la portée, puis cliquez sur Créer.

La clé suggérée ne reprend jamais un nom déjà utilisé dans la portée choisie. Une clé compte 30 caractères au maximum. Une valeur compte 2048 caractères au maximum : pour un corps de réponse plus grand, la fenêtre affiche « La valeur est trop longue. Limitez-la à 2048 caractères ou moins. » et Créer reste indisponible. Dans ce cas, enregistrez plutôt un seul champ depuis l’inspecteur de réponse.

Enregistrer et Enregistrer comme variable ne s’affichent pas sur un rapport d’exécution en lecture seule.

Utiliser l’inspecteur de réponse

L’inspecteur de réponse est la surface de découverte. Il comporte trois zones :

  • Cartes de métriques — statut, durée, durée de chargement.

  • Bouton Copier la réponse — copie le corps complet dans le presse-papiers.

  • Arbre JSON — vue dépliable du corps avec des actions par valeur.

Chaque clic sur Vérifier ou Extraire ajoute immédiatement une nouvelle étape à la fin du cas de test. Ajoutez-les une par une — chaque étape apparaît dans la liste dès sa création et peut être réordonnée ou modifiée comme n’importe quelle autre étape.

Pourquoi c’est important : vous restez dans l’inspecteur de réponse tout le temps. Cliquez sur Vérifier ou Extraire sur n’importe quelle valeur de l’arbre JSON et l’étape apparaît directement dans le cas de test — sans fenêtre d’étape ni confirmation supplémentaire.

Exemples de bout en bout

Exemple 1 — Récupérer les données produit via l’API et les vérifier sur la boutique

Objectif : récupérer un produit réel du catalogue et vérifier que l’interface de la boutique affiche les mêmes valeurs.

  1. Étape 1 — API : GET /products/42. Variable de réponse : PRODUCT_RESPONSE

  2. Étape 2 — Extraire (ajoutée depuis l’inspecteur) : [PRODUCT_RESPONSE].body.title → PRODUCT_TITLE

  3. Étape 3 — Extraire (ajoutée depuis l’inspecteur) : [PRODUCT_RESPONSE].body.price → PRODUCT_PRICE

  4. Étape 4 — Navigateur : aller sur /shop/products/42

  5. Étape 5 — Assertion visuelle : la page affiche [PRODUCT_TITLE]

  6. Étape 6 — Assertion visuelle : la page affiche [PRODUCT_PRICE]

Exemple 2 — Créer un élément via l’API, puis continuer le parcours dans le navigateur

Objectif : créer un ticket de support via l’API pour que le test d’UI puisse l’ouvrir et agir dessus.

  1. Étape 1 — API : POST /tickets avec le corps {"title": "Impossible de téléverser l’avatar"}. Variable de réponse : NEW_TICKET

  2. Étape 2 — Extraire : [NEW_TICKET].body.id → TICKET_ID

  3. Étape 3 — Navigateur : aller sur /support/tickets/[TICKET_ID]

  4. Étape 4 — Assertion visuelle : Ticket #[TICKET_ID] est visible sur la page

  5. Étape 5 — Navigateur : cliquer sur Marquer comme résolu

  6. Étape 6 — Assertion visuelle : le badge de statut Résolu est visible

Exemple 3 — Capturer des valeurs côté serveur pour que les étapes suivantes utilisent des données réelles

Objectif : lire le plan et les crédits actuels du compte, puis vérifier que les mêmes valeurs apparaissent sur la page de facturation.

  1. Étape 1 — API : GET /account/usage. Variable de réponse : USAGE_RESPONSE

  2. Étape 2 — Vérifier [USAGE_RESPONSE].body possède la clé plan

  3. Étape 3 — Extraire [USAGE_RESPONSE].body.plan → CURRENT_PLAN

  4. Étape 4 — Extraire [USAGE_RESPONSE].body.creditsRemaining → CREDITS_REMAINING

  5. Étape 5 — Navigateur : aller sur /settings/billing

  6. Étape 6 — Assertion visuelle : la page de facturation affiche [CURRENT_PLAN]

  7. Étape 7 — Assertion visuelle : la page de facturation affiche [CREDITS_REMAINING]

Conseils et dépannage

  • Si vous voyez Credential or Variable not found 'VARIABLE_NAME' à l’exécution, vérifiez l’orthographe et assurez-vous que l’étape qui produit la variable s’est exécutée avant celle qui la consomme.

  • Les secrets (mots de passe, jetons) sont masqués par défaut dans les champs d’authentification — cliquez sur l’icône œil pour les révéler.

  • Environnements : chaque environnement conserve ses propres URL / en-têtes / corps pour une étape API, mais les variables extraites pendant une exécution sont partagées entre les étapes de cette exécution.

Besoin de tester un flux qui s’étend sur plusieurs exécutions ? Les variables d’étape extraites ne vivent que le temps d’une exécution de cas de test. Pour des valeurs qui doivent persister d’une exécution à l’autre, utilisez plutôt des variables de projet ou des variables d’environnement.

Autres lectures liées qui peuvent vous être utiles :

Avez-vous trouvé la réponse à votre question ?