Scheijgrond.com

Ik Google mijzelf

Postman deel 2

Al doende leert men en al testende heb ik de afgelopen week weer wat geleerd over het testen met postman. Ik wilde de resultaten van een aanroep gebruiken in een volgende aanroep. Dat kan natuurlijk met de variabelen die ik in een vorige post had besproken. Dit keer wilde ik echter een lijstje opslaan en gebruiken in een loop om zo de items uit de lijst als bron voor mijn testen te gebruiken.

Lijst van items opslaan

Als eerste ga ik een lijst van items opslaan. Dit kan een handmatig aangemaakte lijst zijn, maar het meest waarschijnlijke is dat de lijst het resultaat is van een API aanroep. In het test tabblad van een aanroep kan ik de items opslaan.

//als eerste het resultaat van de aanroep omzetten van JSON naar een object. 
var jsonData = JSON.parse(pm.response.text());
//Maak een lege array van items aan
var items = [];

In de response jsonData zit een lijst van artikelen met een id, description en een quantity. Voor mijn toekomstige aanroepen heb ik de ids en de aantallen nodig. Deze ga ik bewaren in de array. Binnen Postman wordt gebruik gemaakt van lodash, deze library bevat een groot aantal standaard array functies. Tussen de {} kunnen key-value pairs worden opgeslagen en kan er ook gebruik gemaakt worden van slechts een deel van de informatie.

//Loop door de array van items in de jsonData en bewaar de id en quantity in een nieuwe array (push de array)
_.forEach(jsonData.lines, (line, index) => {items.push({id:line.Id, q:line.quantity})} );

//Bewaar de items zodat ze herbruikt kunnen worden in andere aanroepen
pm.collectionVariables.set("items", JSON.stringify(items));

Item uit de lijst gebruiken

De lodash library stelt ons in staat om een random item uit de array te gebruiken via de sample methode. Of er wordt op basis van een index een item uit de array gehaald. Maar eerst de array weer uit de collectionVariables halen.

//Array weer uit de variabelen halen
var items = JSON.parse(pm.collectionVariables.get("items"));
//Haal een random item uit de array
var randomItem = _.sample(items);
//Haal een item op basis van index uit de array. 
var index = 0;
var indexedItem = items[index];
//Even de resultaten tonen in de console.
console.log("item met ID: " + indexedItem.id + " heeft aantal: " + indexedItem.q);

Alle array items testen

In een loop kunnen ook alle items in een array getest worden. De test kan per item of 1 test waarbij alle items gecontroleerd worden.

//Test all items 
pm.test("All items should have q == 0", function () {

    _.forEach(jsonData.lines, (line, index) => {
        pm.expect(line.quantity).to.eq(0, "Quantity remaining for article: " + line.id + " is not 0");
        });
});