Aller au contenu

API Postman Essais

Copier toutes les commandes Générer PDF

Raccourcis et flux de travail complets Postman pour le développement et les tests d'API.

Shortcut Description
Ctrl+N New Request
Ctrl+Shift+N New Collection
Ctrl+O Open
Ctrl+S Save
Ctrl+Shift+S Save As
Ctrl+Enter Send Request
Ctrl+R Reload
Ctrl+W Close Tab
Ctrl+Shift+W Close All Tabs
Ctrl+T New Tab
Ctrl+Shift+T Reopen Closed Tab

Gestion des demandes

Shortcut Description
Ctrl+L Focus URL Bar
Ctrl+M Change HTTP Method
Ctrl+Shift+P Open Command Palette
Ctrl+K Search Collections
Ctrl+H Show/Hide Sidebar
Ctrl+Alt+C Open Console
Ctrl+Alt+E Open Environment Quick Look

Édition de texte

Shortcut Description
Ctrl+A Select All
Ctrl+C Copy
Ctrl+V Paste
Ctrl+X Cut
Ctrl+Z Undo
Ctrl+Y Redo
Ctrl+F Find
Ctrl+G Find Next
Ctrl+Shift+G Find Previous
F3 Find Next
Shift+F3 Find Previous

Environnement et variables

Shortcut Description
Ctrl+Alt+E Environment Quick Look
Ctrl+Shift+E Manage Environments
\\{\\{variable\\}\\} Variable Syntax
pm.environment.get("var") Get Environment Variable
pm.environment.set("var", "value") Set Environment Variable
pm.globals.get("var") Get Global Variable
pm.globals.set("var", "value") Set Global Variable

HTTP Méthodes et codes de statut

HTTP commun Méthodes

Method Purpose Example
GET Retrieve data Get user profile
POST Create new resource Create new user
PUT Update entire resource Update user profile
PATCH Partial update Update user email
DELETE Remove resource Delete user account
HEAD Get headers only Check if resource exists
OPTIONS Get allowed methods CORS preflight

Codes d'état HTTP

Code Range Type Common Codes
2xx Success 200 OK, 201 Created, 204 No Content
3xx Redirection 301 Moved, 302 Found, 304 Not Modified
4xx Client Error 400 Bad Request, 401 Unauthorized, 404 Not Found
5xx Server Error 500 Internal Error, 502 Bad Gateway, 503 Unavailable

Scénarios préalables à la demande

Exemples courants de scripts pré-requête

// Set timestamp
pm.environment.set("timestamp", Date.now());

// Generate random data
pm.environment.set("randomEmail",
  "user" + Math.random().toString(36).substring(7) + "@example.com");

// Set authentication token
const token = pm.environment.get("auth_token");
pm.request.headers.add(\\\\{
  key: "Authorization",
  value: "Bearer " + token
\\\\});

// Generate UUID
const uuid = require('uuid');
pm.environment.set("requestId", uuid.v4());

// Base64 encode credentials
const username = pm.environment.get("username");
const password = pm.environment.get("password");
const credentials = btoa(username + ":" + password);
pm.environment.set("basicAuth", credentials);

Scénarios d'essai

Hypothèses de base

// Status code tests
pm.test("Status code is 200", function () \\\\{
    pm.response.to.have.status(200);
\\\\});

pm.test("Status code name has string", function () \\\\{
    pm.response.to.have.status("OK");
\\\\});

// Response time test
pm.test("Response time is less than 200ms", function () \\\\{
    pm.expect(pm.response.responseTime).to.be.below(200);
\\\\});

// Header tests
pm.test("Content-Type is present", function () \\\\{
    pm.response.to.have.header("Content-Type");
\\\\});

pm.test("Content-Type is application/json", function () \\\\{
    pm.expect(pm.response.headers.get("Content-Type")).to.include("application/json");
\\\\});
```_

### JSON Essais de réponse

```javascript
// Parse JSON response
const responseJson = pm.response.json();

// Test JSON structure
pm.test("Response has required fields", function () \\\\{
    pm.expect(responseJson).to.have.property("id");
    pm.expect(responseJson).to.have.property("name");
    pm.expect(responseJson).to.have.property("email");
\\\\});

// Test specific values
pm.test("User ID is correct", function () \\\\{
    pm.expect(responseJson.id).to.eql(123);
\\\\});

pm.test("Email format is valid", function () \\\\{
    pm.expect(responseJson.email).to.match(/^[^\s@]+@[^\s@]+\.[^\s@]+$/);
\\\\});

// Test array responses
pm.test("Response is an array", function () \\\\{
    pm.expect(responseJson).to.be.an('array');
\\\\});

pm.test("Array has correct length", function () \\\\{
    pm.expect(responseJson).to.have.lengthOf(5);
\\\\});
```_

### Extraction variable

```javascript
// Extract data from response
const responseJson = pm.response.json();

// Set environment variables
pm.environment.set("userId", responseJson.id);
pm.environment.set("userToken", responseJson.token);

// Extract from headers
const location = pm.response.headers.get("Location");
pm.environment.set("resourceUrl", location);

// Extract using regex
const responseText = pm.response.text();
const match = responseText.match(/token:\s*"([^"]+)"/);
if (match) \\\\{
    pm.environment.set("extractedToken", match[1]);
\\\\}

Collection Runner

Recouvrement

// Collection variables
pm.collectionVariables.set("baseUrl", "https://api.example.com");
pm.collectionVariables.get("baseUrl");

// Data-driven testing
// Use CSV or JSON files for test data
// Access data using pm.iterationData.get("fieldName")

// Workflow control
postman.setNextRequest("Request Name");
postman.setNextRequest(null); // Stop execution

Authentification Flux de travail

Jeton porteur

// Pre-request script for login
pm.sendRequest(\\\\{
    url: pm.environment.get("baseUrl") + "/auth/login",
    method: "POST",
    header: \\\\{
        "Content-Type": "application/json"
    \\\\},
    body: \\\\{
        mode: "raw",
        raw: JSON.stringify(\\\\{
            username: pm.environment.get("username"),
            password: pm.environment.get("password")
        \\\\})
    \\\\}
\\\\}, function (err, response) \\\\{
    if (response.code === 200) \\\\{
        const token = response.json().token;
        pm.environment.set("authToken", token);
    \\\\}
\\\\});

Auth 2.0

// OAuth 2.0 configuration
const clientId = pm.environment.get("clientId");
const clientSecret = pm.environment.get("clientSecret");
const tokenUrl = pm.environment.get("tokenUrl");

pm.sendRequest(\\\\{
    url: tokenUrl,
    method: "POST",
    header: \\\\{
        "Content-Type": "application/x-www-form-urlencoded"
    \\\\},
    body: \\\\{
        mode: "urlencoded",
        urlencoded: [
            \\\\{key: "grant_type", value: "client_credentials"\\\\},
            \\\\{key: "client_id", value: clientId\\\\},
            \\\\{key: "client_secret", value: clientSecret\\\\}
        ]
    \\\\}
\\\\}, function (err, response) \\\\{
    if (response.code === 200) \\\\{
        const accessToken = response.json().access_token;
        pm.environment.set("accessToken", accessToken);
    \\\\}
\\\\});

Essai API Flux de travail

Essais d'exploitation du CRUD

// 1. Create Resource (POST)
pm.test("Create user successfully", function () \\\\{
    pm.response.to.have.status(201);
    const user = pm.response.json();
    pm.environment.set("createdUserId", user.id);
\\\\});

// 2. Read Resource (GET)
pm.test("Get user successfully", function () \\\\{
    pm.response.to.have.status(200);
    const user = pm.response.json();
    pm.expect(user.id).to.eql(pm.environment.get("createdUserId"));
\\\\});

// 3. Update Resource (PUT/PATCH)
pm.test("Update user successfully", function () \\\\{
    pm.response.to.have.status(200);
\\\\});

// 4. Delete Resource (DELETE)
pm.test("Delete user successfully", function () \\\\{
    pm.response.to.have.status(204);
\\\\});

Tests de manipulation des erreurs

// Test error responses
pm.test("Returns 400 for invalid data", function () \\\\{
    pm.response.to.have.status(400);
    const error = pm.response.json();
    pm.expect(error).to.have.property("message");
\\\\});

pm.test("Returns 401 for unauthorized access", function () \\\\{
    pm.response.to.have.status(401);
\\\\});

pm.test("Returns 404 for non-existent resource", function () \\\\{
    pm.response.to.have.status(404);
\\\\});

Meilleures pratiques

Organisation

  • Utiliser les collections pour regrouper les demandes connexes
  • Créer des dossiers dans les collections pour le regroupement logique
  • Utiliser des noms descriptifs pour les demandes et les collections
  • Documenter les API en utilisant des descriptions de collection
  • Utiliser des variables d'environnement pour différentes étapes (dev, stage, prod)

Stratégie d'essai

  • Écrire des scripts de test complets
  • Tester les scénarios positifs et négatifs
  • Valider la structure de réponse et les types de données
  • Vérifier les temps de réponse et les performances
  • Manipulation des erreurs de test et cas bord

Gestion des données

  • Utiliser des variables d'environnement pour la configuration
  • Mettre en œuvre des tests axés sur les données avec des fichiers CSV/JSON
  • Nettoyage des données d ' essai après exécution
  • Utiliser des variables dynamiques pour des données d'essai uniques
  • Données d ' essai distinctes des données de production

Collaboration

  • Partager les collections avec les membres de l'équipe
  • Utiliser le contrôle de version pour les exportations de collecte
  • Documenter les modifications de l'API et les mises à jour des tests
  • Créer des scripts de test et des extraits réutilisables
  • Établir des conventions et des normes de désignation