Tester ses APIs avec Bruno

1. Introduction

Dans cet article, nous allons découvrir comment écrire des tests unitaires efficaces avec Bruno, un outil simple et puissant pour tester des APIs.

Bruno est un client API open-source conçu pour être:

  • Compatible avec Git puisque les collections d’API sont enregistrées sous forme de fichiers texte simples.
  • Utilisable hors ligne car il fonctionne entièrement hors ligne, sans nécessité de se connecter avec un cloud.

2. Installation de Bruno

Pour commencer, téléchargez Bruno depuis son site officiel ou installez-le via npm si vous utilisez la version CLI.


Lorsque vous l'ouvrez, la page d'acceuil s'affiche comme ceci:


3. Écriture de tests

Une fois Bruno installé, vous pouvez commencer à créer vos premiers tests. Voici les étapes pour écrire un test unitaire avec Bruno :

Etape 1 : Créer une collection

Une collection dans Bruno représente un ensemble de requêtes liées à un projet ou une API spécifique. Pour en créer une :

  • Cliquez sur “New Collection”.
  • Ensuite choisissez un emplacement sur votre ordinateur où vous allez enregistrer vos fichiers de tests.Personnellement j'enregistre ma collection dans le dossier de mon projet
  • Donnez-lui un nom (Tests Bruno par exemple) puis validez.

Etape 2 : Ajouter une requête

À l’intérieur de votre collection, vous pouvez créer des requêtes pour tester vos endpoints :

  • Faites un clic droit sur la collection ou un dossier, puis cliquez sur “New Request”.
  • Choisissez le type de requête (GET, POST, etc.) et donnez-lui un nom.
  • Renseignez l’URL de l’API et les éventuels paramètres.

Il est tout à fait possible d'ajouter ou de modifier la requête après sa création.

Etape 3 : Écrire un test (assertion)

Bruno permet d’ajouter des assertions dans l'onglet "Asserts" ou dans l'onglet "Tests" de chaque requête. Vous pouvez, par exemple, vérifier que le code retour est bien 200 :

response.status === 200

Il est aussi possible d’écrire des assertions plus complexes sur le contenu du JSON de la réponse :

const data = response.json();
data.user.id !== undefined

Exemple: Dans l'onglet Assert:

Etape 4 : Lancer le test

Une fois la requête et les assertions prêtes, cliquez sur la flèche en haut à droite. Vous verrez la réponse s'afficher, accompagnée d’un indicateur de succès ou d’échec de votre test.

🎉 Bravo, vous avez créé et exécuté votre premier test avec Bruno ! C’est simple, lisible et versionnable.

4. Bonnes pratiques

Pour tirer le meilleur parti de Bruno et maintenir des tests efficaces, voici quelques bonnes pratiques à suivre :

4.1. Nommer clairement chaque requête

Donnez des noms explicites à vos requêtes, par exemple:

GET /users => liste des utilisateurs
ou
POST /login => authentification
Cela facilite la lecture et la navigation dans votre collection.

4.2. Organiser les requêtes par dossiers

Utilisez des dossiers pour regrouper les requêtes par ressource ou par fonctionnalité.
Par exemple :

  • /auth pour l'authentification
  • /users pour les utilisateurs
  • /products pour les produits
etc.

4.3. Séparer les scénarios de test

Créez une requête pour chaque scénario : succès, erreurs, données manquantes, etc. Cela évite d’écraser les données et rend les tests plus précis.

4.4. Utiliser des variables d’environnement

L'utilisation de variables d'environnement dans Bruno permet de rendre vos requêtes plus dynamiques, réutilisables et faciles à maintenir.
Par exemple, au lieu d'écrire plusieurs fois l'URL de votre API, vous pouvez créer une variable baseUrl et l'utiliser dans vos requêtes.

Étapes pour créer des variables d'environnement :

  1. Dans Bruno, sélectionnez votre collection.
  2. Cliquez sur le bouton No Environement en haut à droite de la fenêtre.
  3. Lorsque vous cliquez sur Configure une boîte de dialogue s'ouvre où vous avez le choix entre: Créer un environnement et Importer un environnement
  4. Choisissez Créer un environnement et donnez-lui un nom (par exemple : Local, Production, etc.)
  5. Dans le fichier YAML généré à l'emplacement de votre collection, vous pouvez ajouter vos variables comme ceci :
    apiUrl: "http://localhost:3000"

    Il est aussi possible (et plus rapide) de déclarer les variables directement à partir de l'interface graphique. Dans ce cas vous cliquez sur Ajouter une variable et vous lui donnez un nom et une valeur :

  6. Une fois sauvegardé, sélectionnez l’environnement dans la barre supérieure de Bruno.

Exemple d’utilisation dans une requête :

Dans votre requête, au lieu d’écrire l’URL complète, utilisez la variable entre double-accolades :

{{apiUrl}}
et dans le cas d'une route :
{{apiUrl}}/api/users

Cela rend vos tests portables entre différents environnements (développement, préprod, production). Vous pouvez également changer facilement le authToken sans toucher aux requêtes.

4.5. Documenter vos tests

Ajoutez une description à chaque requête pour expliquer son objectif ou ses cas d’usage. Cela est utile pour les autres développeurs… et pour vous dans 3 mois !

4.6. Vérifier les réponses attendues

Ne vous contentez pas de vérifier le statut HTTP. Assurez-vous que les champs clés du JSON de réponse sont bien présents et cohérents (types, valeurs, structure).

4.7. Versionner vos tests avec Git

Puisque Bruno enregistre tout dans des fichiers texte, vous pouvez (et devriez) versionner vos tests dans votre dépôt Git, comme du code classique.

Conclusion

Bruno est une alternative moderne, rapide et minimaliste aux outils traditionnels de test d'API. Grâce à sa compatibilité avec Git, sa capacité à fonctionner hors ligne et sa simplicité d'utilisation, il s'intègre parfaitement dans des workflows de développement professionnels.

Que vous testiez une API REST ou un projet plus complexe, Bruno vous permet de :

  • Structurer vos collections de tests comme du code
  • Automatiser les scénarios de test
  • Configurer facilement différents environnements
  • Collaborer efficacement via Git

N'hésitez pas à l'essayer dans vos prochains projets!

← Retourner au blog