DEV Community

Cover image for Comment ajouter la logique conditionnelle (If/Else) et le contrôle de flux aux scénarios de test API dans Apidog
Antoine Laurent
Antoine Laurent

Posted on • Originally published at apidog.com

Comment ajouter la logique conditionnelle (If/Else) et le contrôle de flux aux scénarios de test API dans Apidog

La plupart des tests d’API s’exécutent de façon linéaire : connexion, paiement, reçu, assertions. Ce modèle échoue dès qu’une étape conditionne les suivantes. Si la connexion renvoie 401, lancer le paiement ne sert à rien et produit souvent une erreur secondaire qui masque la cause réelle. Un scénario robuste doit lire la réponse de connexion, décider de continuer ou non, puis signaler précisément l’étape en échec.

Essayez Apidog dès aujourd’hui

Cette logique repose sur le contrôle de flux. Dans ce guide, vous allez créer une branche if/else dans Apidog : exécuter une connexion, vérifier son code de statut, puis créer un paiement uniquement si la connexion a réussi. Si vous débutez avec les scénarios Apidog, consultez ce guide pour écrire un scénario de test. Pour les bases du modèle if/else, voir le guide MDN sur les instructions conditionnelles.

Contrôle de flux : quand utiliser une branche

Dans Apidog, les tests automatisés se construisent dans le module Tests, sous forme de scénarios de test (Test Scenarios). Un scénario contient des étapes de test (Test Steps) :

  • une requête HTTP ;
  • ou un élément de contrôle de flux, comme une branche, une boucle ou un délai.

Le Branchement Conditionnel (Conditional Branching) est l’équivalent d’un if/else : il évalue une condition, exécute les étapes du bloc If si elle est vraie, ou celles du bloc Sinon si elle est fausse.

Consultez la documentation Apidog sur le contrôle de flux et le branchement conditionnel pour le détail des options disponibles.

Une branche ne remplace pas une boucle.

  • Une branche prend une décision une fois.
  • Une boucle répète un bloc d’étapes.

Pour itérer sur une liste d’identifiants, utilisez une boucle ForEach, décrite dans le tutoriel sur les boucles ForEach.

Objectif : ne payer que si la connexion réussit

Le flux cible est le suivant :

Connexion
  ├── statut = 200  → Créer le paiement
  └── statut ≠ 200  → Signaler l’échec et arrêter
Enter fullscreen mode Exit fullscreen mode

Ainsi, une authentification invalide ne déclenche jamais une requête de paiement.

Étape 1 — Créer un scénario de test

  1. Ouvrez le module Tests dans Apidog.
  2. Cliquez sur + à côté de la barre de recherche.
  3. Créez un nouveau Test Scenario.
  4. Choisissez son répertoire et sa priorité.
  5. Validez la création.

Vous disposez maintenant d’un scénario vide.

Étape 2 — Ajouter la requête de connexion

Ajoutez une première Test Step. Vous pouvez importer une requête existante, un cas d’endpoint, une commande cURL ou créer une requête personnalisée.

Pour cet exemple, ajoutez une requête POST vers votre endpoint d’authentification :

POST https://api.your-store.com/v1/login
Content-Type: application/json

{
  "email": "dana@example.com",
  "password": "correct-horse-battery-staple"
}
Enter fullscreen mode Exit fullscreen mode

Exécutez cette étape seule pour vérifier la réponse. Une connexion réussie peut renvoyer :

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "userId": "usr_10482"
}
Enter fullscreen mode Exit fullscreen mode

Le statut HTTP attendu est 200.

Étape 3 — Passer en mode orchestration

Cliquez sur une étape pour ouvrir le mode orchestration :

  • le panneau de gauche affiche le flux du scénario ;
  • le panneau de droite affiche la configuration de l’étape sélectionnée.

Vous pouvez réordonner les étapes en faisant glisser l’icône .

Étape 4 — Ajouter une branche conditionnelle

  1. Cliquez sur Ajouter une étape (Add Step).
  2. Sélectionnez Branchement Conditionnel (Conditional Branching).
  3. Configurez le bloc If pour vérifier le résultat de la connexion.

Apidog propose notamment les opérateurs suivants :

  • Est égal à
  • N'est pas égal à
  • Existe
  • N'existe pas
  • Inférieur à
  • Inférieur ou égal à
  • Supérieur à
  • Supérieur ou égal à
  • Correspond à une expression régulière
  • Contient
  • Ne contient pas
  • Est vide
  • N'est pas vide
  • Dans la liste
  • Pas dans la liste

Dans ce scénario, la condition est simplement :

statut de la réponse de connexion Est égal à 200
Enter fullscreen mode Exit fullscreen mode

Étape 5 — Réutiliser la réponse de connexion

Vous avez deux approches pour fournir une valeur à la condition.

Option A : récupérer les données de l’étape précédente

Dans le champ de valeur de la condition :

  1. Cliquez sur l’icône de baguette magique.
  2. Sélectionnez Récupérer les données de l'étape précédente.
  3. Choisissez l’étape de connexion.
  4. Sélectionnez son code de statut.

Apidog crée en interne une référence de pré-étape telle que :

{{$.<step id>.response.body.<field path>}}
Enter fullscreen mode Exit fullscreen mode

Par exemple, pour récupérer le jeton de l’étape 1 :

{{$.1.response.body.token}}
Enter fullscreen mode Exit fullscreen mode

Points importants :

  • cette fonctionnalité est disponible dans le module Tests, pas dans le module APIs ;
  • elle se résout uniquement lors de l’exécution du scénario complet ;
  • si vous exécutez une étape seule, la référence peut sembler vide.

Option B : extraire une variable nommée

Utilisez cette méthode si vous devez réemployer la valeur dans plusieurs modules, branches ou requêtes.

Dans la requête de connexion :

  1. Ouvrez les post-processeurs.
  2. Ajoutez l’action Extraire la variable (Extract Variable).
  3. Utilisez une expression JSONPath, par exemple :
$.token
Enter fullscreen mode Exit fullscreen mode
  1. Donnez un nom à la variable, par exemple token.

Vous pourrez ensuite l’utiliser dans les étapes suivantes :

{{token}}
Enter fullscreen mode Exit fullscreen mode

Pour aller plus loin, consultez le guide expliquant comment passer des données entre les étapes de test.

Étape 6 — Ajouter le chemin Sinon

Survolez le bloc If, puis cliquez sur + Sinon.

Configurez ensuite chaque branche.

Dans le bloc If : créer le paiement

Ajoutez votre requête de paiement. Elle ne s’exécutera que si la connexion renvoie 200.

Si l’API attend un jeton Bearer, ajoutez-le à l’en-tête :

Authorization: Bearer {{token}}
Enter fullscreen mode Exit fullscreen mode

Vous pouvez aussi utiliser une référence de pré-étape vers le corps de la réponse de connexion. Ce format correspond au modèle utilisé par la documentation de l’API Stripe pour les appels authentifiés.

Dans le bloc Sinon : rendre l’échec explicite

Ajoutez une étape qui signale clairement l’échec, par exemple :

  • une requête vers un endpoint de journalisation ;
  • une notification vers votre système d’alerting ;
  • une requête personnalisée contenant une assertion qui échoue toujours.

L’objectif est que le rapport de scénario indique que l’échec vient de la connexion, et non du paiement.

Étape 7 — Enregistrer et tester les deux chemins

Cliquez sur Enregistrer tout (Save All).

Exécutez ensuite le scénario complet avec deux jeux d’identifiants :

  1. Identifiants valides : le bloc If exécute la requête de paiement.
  2. Identifiants invalides : le bloc Sinon s’exécute et le paiement est ignoré.

Variantes utiles

Brancher sur un champ du corps de réponse

Vous n’êtes pas limité au code HTTP.

Supposons qu’une connexion renvoie 200, mais qu’un compte verrouillé soit indiqué dans le corps :

{
  "status": "locked"
}
Enter fullscreen mode Exit fullscreen mode

Vous pouvez utiliser :

{{$.1.response.body.status}}
Enter fullscreen mode Exit fullscreen mode

Puis configurer la condition :

status Est égal à "active"
Enter fullscreen mode Exit fullscreen mode

Les opérateurs permettent aussi de tester :

  • un solde avec Supérieur à ;
  • un rôle autorisé avec Dans la liste ;
  • un message d’erreur avec Contient.

Combiner branches et boucles

Vous pouvez ajouter une branche à l’intérieur d’une boucle ForEach.

Exemple : parcourir une liste de produits et ignorer ceux qui sont en rupture de stock.

Les références de boucle suivent ce format :

{{$.<loop step id>.index}}
{{$.<loop step id>.element.<field path>}}
Enter fullscreen mode Exit fullscreen mode

L’index commence à 0. Pour un exemple complet, consultez le tutoriel sur les boucles ForEach.

Arrêter une boucle avec Break If

Dans une boucle, l’élément Break If condition arrête l’itération dès qu’une condition est satisfaite. Vous pouvez le déplacer dans le flux et l’ajouter plusieurs fois dans une même boucle.

Gérer une erreur de boucle avec On Error

L’élément On Error est placé au début d’une boucle. Il permet de choisir le comportement lorsqu’une requête échoue :

  • Ignorer : passe à la requête suivante ;
  • Continuer : ignore le reste du cycle en cours ;
  • Arrêter l'exécution : quitte la boucle et poursuit après elle ;
  • Terminer l'exécution : arrête tout le scénario.

Ajouter un délai avec Wait

Utilisez Wait lorsqu’un service asynchrone a besoin d’un délai avant qu’une écriture soit visible.

Exemple courant :

POST /orders
→ Wait 1000 ms
→ GET /orders/{id}
Enter fullscreen mode Exit fullscreen mode

Utiliser des valeurs dans un script

La syntaxe {{variable}} ne fonctionne pas directement dans les scripts de pré-traitement ou de post-traitement.

Utilisez plutôt :

pm.variables.get("$.2.response.body.token")
Enter fullscreen mode Exit fullscreen mode

Adaptez l’identifiant de l’étape et le chemin du champ.

Pour les scénarios de chaînage plus complets, consultez les guides sur le chaînage de requêtes et l’orchestration des tests d’API avec passage de données.

Un scénario ne peut pas se référencer lui-même. Cette restriction évite les boucles infinies lors de l’imbrication de scénarios.

Exécuter le scénario en CI avec Apidog CLI

Une fois votre scénario enregistré, vous pouvez l’exécuter sans interface graphique avec Apidog CLI.

Installez le CLI, puis connectez-vous :

npm install -g apidog-cli
apidog login --with-token <YOUR_ACCESS_TOKEN>
Enter fullscreen mode Exit fullscreen mode

Exécutez ensuite le scénario par son identifiant :

apidog run --access-token $APIDOG_ACCESS_TOKEN -t <scenario_id> -e <env_id> -r cli
Enter fullscreen mode Exit fullscreen mode

Paramètres :

  • -t : identifiant du scénario de test ;
  • -e : identifiant de l’environnement ;
  • -r : rapporteur.

Vous pouvez générer plusieurs rapports :

apidog run \
  --access-token $APIDOG_ACCESS_TOKEN \
  -t <scenario_id> \
  -e <env_id> \
  -r html,cli
Enter fullscreen mode Exit fullscreen mode

Utilisez :

  • cli pour la sortie console ;
  • html pour un rapport HTML ;
  • junit pour les artefacts compatibles avec les outils CI.

La branche est évaluée exactement comme dans l’interface : le CLI lit la réponse de connexion, choisit le chemin If ou Sinon, puis retourne un code de sortie exploitable par votre pipeline.

Ressources complémentaires :

FAQ

Quelle est la différence entre une branche conditionnelle et une boucle ?

Une branche conditionnelle décide une fois quel bloc exécuter. Une boucle répète un bloc.

Utilisez une branche pour un choix tel que :

Si la connexion réussit → créer le paiement
Sinon → arrêter et signaler l’échec
Enter fullscreen mode Exit fullscreen mode

Utilisez For ou ForEach pour traiter plusieurs valeurs ou éléments.

Pourquoi Récupérer les données de l'étape précédente est-il vide ?

Deux causes fréquentes :

  1. cette fonction est disponible uniquement dans le module Tests ;
  2. elle est résolue lorsque vous exécutez le scénario complet, pas une étape isolée.

Lancez le scénario entier pour alimenter la référence.

Puis-je tester un champ du corps de réponse plutôt que le statut HTTP ?

Oui. Utilisez une référence telle que :

{{$.1.response.body.status}}
Enter fullscreen mode Exit fullscreen mode

Ou extrayez la valeur dans une variable nommée. Vous pouvez ensuite appliquer un opérateur comme Est égal à, Contient ou Dans la liste.

Voir aussi : passer des données entre les étapes de test.

Comment utiliser une variable dans un script ?

Utilisez pm.variables.get() plutôt que la syntaxe {{variable}} :

pm.variables.get("$.2.response.body.token")
Enter fullscreen mode Exit fullscreen mode

Le branchement conditionnel nécessite-t-il un plan particulier ou une installation auto-hébergée ?

La documentation Apidog ne mentionne pas de restriction de plan ni de différence entre cloud et auto-hébergement pour le contrôle de flux, le branchement conditionnel, les boucles ou le passage de données. Si vous pouvez créer un scénario, vous pouvez y ajouter des branches.

En résumé

Un scénario linéaire indique qu’une erreur s’est produite. Un scénario avec branchement conditionnel indique elle s’est produite et évite les appels qui ne peuvent plus réussir.

La mise en œuvre est simple :

  1. ajoutez la requête de connexion ;
  2. ajoutez un Branchement Conditionnel ;
  3. récupérez le code de statut ou une valeur de réponse ;
  4. envoyez le chemin valide vers le paiement ;
  5. envoyez le chemin invalide vers une étape d’échec explicite ;
  6. exécutez le même scénario avec apidog run dans votre CI.

Essayez Apidog gratuitement et transformez vos suites de tests linéaires en scénarios capables de prendre des décisions.

Top comments (0)