postman-logo

Les tests avec Postman

Spread the love

Objectif : vous expliquer comment mettre en place des tests fonctionnels avec Postman.

Postman permet de créer des collections et surtout, de variabiliser les appels.
Nous allons voir comment utiliser ces variables pour dynamiser votre collection.

Les variables d’environnements

Pour ajouter un environnement, cliquez sur l’icône en forme d’œil puis sur [Add] :

A partir de là, vous allez ajouter l’URL de votre API.

Vous pourrez utiliser cette variable dans les url de votre projet.

Exemple : POST {{api_ec}}/signup

Les variables dans notre body

Nous allons prendre en exemple un POST {{api_ec}}/signup

Postman vous propose des variables auto-générées ($randomFirstName ou $randomLastName par exemple). Vous pouvez aussi avoir vos propres variables. Elles peuvent venir de l’environnement ou du runner. Nous allons voir tous les cas possibles.

Body

{
    "email": "{{login}}",
    "firstName": "{{$randomFirstName}}",
    "lastName": "{{$randomLastName}}",
    "password": "{{password}}",
    "someData": {{someData}}
}

Pre-request Script

Dans cette partie, vous pourrez greffer un comportement sur votre API, et faire un traitement avant que la request ne soit lancée.

Dans cet exemple, vous allez set les variables d’environnements pour que les variables de notre body soient définies.

const moment = require('moment');
pm.environment.set("timestamp", moment().format("X"));

pm.environment.set("login", "testpm"+pm.environment.get('timestamp')+"@test.fr");
pm.environment.set("password",  "MonSup3rM0d3p4ss!");
pm.environment.set('someData', JSON.stringify({
	"zipCode": "75017",
	"municipality": "Paris",
	"streetNumber": "95 ",
	"street": "rue La Boétie"
}));

Les runners

Dans un fichier CSV, vous pouvez avoir toutes vos variables.
Cela vous permet de lancer vos requests avec différentes valeurs.
Chaque variable présente dans le fichier d’import prendra l’ascendant sur la variable d’environnement (et sur le pre-request script).

Fichier CSV d’exemple:

someData,login
"{        ""zipCode"": ""75017"",        ""municipality"": ""Paris"",        ""streetNumber"": ""99"",        ""street"": ""Boulevard des Batignolles"",        ""peopleNumber"": 2,        ""housingType"": ""INDIVIDUAL"",    ""area"": 30,    ""constructionYear"": ""BEFORE1974"",    ""isIsolation"": true,    ""waterHeatingType"": ""ELECTRICITY"",    ""houseHeatingType"": ""ELECTRICITY"",    ""bakingHeatingType"": ""ELECTRICITY"",    ""electricityPower"": 6,    ""connectedToGas"": true}",mytest@test.fr
"{        ""zipCode"": ""75017"",        ""municipality"": ""Paris"",        ""streetNumber"": ""19"",        ""street"": ""Boulevard des Batignolles"",        ""peopleNumber"": 2,        ""housingType"": ""INDIVIDUAL"",    ""area"": 30,    ""constructionYear"": ""BEFORE1974"",    ""isIsolation"": true,    ""waterHeatingType"": ""ELECTRICITY"",    ""houseHeatingType"": ""ELECTRICITY"",    ""bakingHeatingType"": ""ELECTRICITY"",    ""electricityPower"": 6,    ""connectedToGas"": true}",mytest2@test.fr

Tests

Cette partie correspond au test fonctionnel de votre API.
Vous pouvez aussi lire des valeurs pour les ajouter aux variables d’environnements afin de vous en servir plus tard (access_token par exemple).

Il y a plusieurs types de tests possibles et plusieurs exemples disponibles depuis l’interface de Postman.

jsonData = pm.response.json();

pm.test("Status code is 201", function () {
    pm.response.to.have.status(201);
});

var schema = {
    "status": {
        "type": "int"
    },
    "AccessToken": {
        "type": "string"
    },
    "TokenType": {
        "type": "string"
    },
    "RefreshToken": {
        "type": "string"
    },
    "ExpiresIn": {
        "type": "int"
    },
    "user_id": {
        "type": "string"
    },
    "Groups": {
        "type": "array"
    },
    "Username": {
        "type": "string"
    },
};

pm.test('Schema is valid', function () {
    pm.expect(tv4.validate(jsonData, schema)).to.be.true;
});


pm.test("Token Type", function() {
     pm.expect(jsonData.TokenType).to.eql('Bearer');
});

pm.environment.set("access_token", jsonData.AccessToken);
pm.environment.set("refresh_token", jsonData.RefreshToken);
pm.environment.set("login", jsonData.login);
chevron_left
chevron_right

Laisser un commentaire

%d blogueurs aiment cette page :