Introduction
Postman est devenu l'outil de référence pour tester et documenter les APIs. En 2026, les équipes exigent bien plus que des requêtes manuelles : elles veulent des tests automatisés, reproductibles et intégrés au cycle de développement. Ce tutoriel vous montre comment exploiter les scripts avancés, les variables dynamiques et Newman pour transformer Postman en véritable plateforme de test automatisée. Vous apprendrez à chaîner des requêtes complexes, à générer des données de test à la volée et à intégrer vos collections dans un pipeline CI/CD.
Prérequis
- Postman Desktop v11 ou supérieur
- Connaissances solides en JavaScript
- Node.js 20+ et npm installés
- Un compte Postman avec API Key
- Accès à une API REST à tester
Configuration des variables dynamiques
pm.environment.set('timestamp', Date.now());
const uuid = require('uuid');
pm.environment.set('requestId', uuid.v4());
const token = pm.environment.get('accessToken');
if (!token) {
pm.sendRequest({
url: pm.environment.get('authUrl'),
method: 'POST',
body: { mode: 'raw', raw: JSON.stringify({ client_id: pm.environment.get('clientId') }) }
}, function (err, res) {
pm.environment.set('accessToken', res.json().token);
});
}Ce script Pre-request génère un timestamp et un UUID unique pour chaque requête. Il récupère également un token d'authentification si celui-ci est absent, évitant les appels inutiles.
Script de test avancé avec assertions
pm.test('Status code is 200', () => pm.response.to.have.status(200));
const jsonData = pm.response.json();
pm.test('Response contains valid user object', () => {
pm.expect(jsonData).to.have.property('id');
pm.expect(jsonData.email).to.match(/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/);
});
pm.test('Response time is under 300ms', () => {
pm.expect(pm.response.responseTime).to.be.below(300);
});Ce script valide le code de statut, la structure des données et le temps de réponse. Les assertions utilisent Chai pour garantir que chaque réponse respecte le contrat attendu.
Chaînage de requêtes avec variables
let userId = pm.response.json().id;
pm.environment.set('userId', userId);
postman.setNextRequest('Get User Details');
if (pm.response.code === 201) {
pm.execution.skipRequest('Delete User');
}Ce code permet de passer dynamiquement à la requête suivante et de sauter certaines étapes selon la réponse. Il est essentiel pour créer des flux métier réalistes.
Export et exécution avec Newman
newman run collection.json \
--environment env.json \
--reporters cli,junit,htmlextra \
--iteration-data data.csv \
--export-environment env-updated.jsonNewman exécute la collection en ligne de commande. Les reporters génèrent des rapports JUnit exploitables par les outils CI et un rapport HTML détaillé.
Intégration GitHub Actions
name: Postman Tests
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm install -g newman newman-reporter-htmlextra
- run: newman run collection.json --reporters cli,junit,htmlextraCe workflow déclenche les tests Postman à chaque push. Les résultats sont publiés directement dans les checks GitHub.
Bonnes pratiques
- Utilisez des variables d'environnement pour toutes les données sensibles
- Écrivez des tests atomiques et indépendants
- Versionnez vos collections avec Git via l'export JSON
- Limitez la durée des tokens et renouvelez-les automatiquement
- Ajoutez des assertions sur le schéma JSON avec tv4 ou Ajv
Erreurs courantes à éviter
- Oublier de gérer les erreurs asynchrones dans les scripts Pre-request
- Stocker des secrets en clair dans les variables globales
- Ne pas réinitialiser les variables entre les itérations
- Ignorer les timeouts sur les environnements lents
Pour aller plus loin
Découvrez nos formations complètes sur les tests d'API et l'automatisation CI/CD sur learni-group.com/formations.