Postman API testen in CI
- Marc Koper
- 1 feb 2019
- 4 minuten om te lezen
Bijgewerkt op: 9 nov 2023

Integreer Newman in 6 simpele stappen in Jenkins, inclusief JUnit testrapport
Voor het testen en monitoren van web APIās is Postman een populaire tool. De community versie is gratis en bovendien behoorlijk compleet. Ook de Pro versie is best betaalbaar, zeker in vergelijking met bijv. SOAP-UI.
In deze blog wordt beschreven hoe je jouw Postman collectie laat draaien vanuit Jenkins en hoe je hierbij een praktisch JUnit test report krijgt.
Als je reeds een collectie van web requests hebt opgebouwd in Postman, dan kun je deze op een aantal manieren benutten:
Via de Postman GUI (Chrome extensie of native Windows / Mac applicatie)
Via de Postman Runner module in de applicatie
Via Newman, de Command-Line Interface
Methode 1 is volledig handmatig. Dat betekent dat je iedere request handmatig dient te verzenden om de betreffende response te kunnen testen. Hoewel dat prima volstaat om een specifieke request te verifiƫren is het behoorlijk omslachtig wanneer je een complete set aan requests na wilt lopen, bijvoorbeeld voor een regressietest van je API. Methode 2 is wel geschikt om een complete collectie te draaien, maar vereist wel dat je handmatig een configuratie instelt in de GUI. Wil je je Postman collectie maximaal automatiseren? Ga dan voor methode 3. Je roept de collectie dan aan middels Newman: de command-line interface van Postman. Newman biedt bovendien de mogelijkheid om je collectie volledig geautomatiseerd te draaien, bijvoorbeeld door het in Jenkins te integreren.
1. Installeer de NodeJS plug-in in Jenkins
Newman is een NodeJS applicatie. Daarom is het zaak om NodeJS te kunnen gebruiken vanuit Jenkins. Om NodeJS te installeren ga je naar:
Jenkins > Manage Jenkins > Manage Plugins
Kijk bij de āInstalledā tab of je de NodeJS plug-in ziet. Zo niet, selecteer hem dan in de āAvailableā tab en klik op āInstall without restartā.

2. Configureer NodeJS met Newman
Nu Jenkins kan beschikken over NodeJS, gaan we een nieuwe NodeJS installatie aanmaken en de npm packages definiëren die geïnstalleerd dienen te worden. Ga daarvoor naar:
Jenkins > Manage Jenkins > Global Tool Configuration
Selecteer daar āNodeJS installationsā
Geef een naam voor de installatie en kies een recente versie van NodeJS
Bij āglobal npm packages to installā geven we alleen ānewmanā op
Klik nu op āSaveā

3. Maak een nieuw Jenkins project aan
Nu kunnen we in Jenkins een project aanmaken. Ga daarvoor naar:
Jenkins > New Item
Geef het project een naam, selecteer template āFreestyle projectā en klik OK.

We gaan hierna 3 stappen toevoegen in dit project: 2 bouwstappen en 1 post-build stap voor het testrapport.
4. Maak een bouwstap aan voor NodeJS
Scroll naar de āBuildā sectie en klik op āAdd build stepā. Kies vervolgens āExecute NodeJS scriptā en selecteer de installatie die je onder stap 2 hebt aangemaakt.
5. Maak een tweede bouwstap aan voor Newman
In deze bouwstap zorgen we ervoor dat Newman je collectie requests (en eventuele tests) uit gaat voeren. Daarvoor moet Newman wel kunnen beschikken over je Postman collectie. Een simpele manier daarvoor is de optie āShare collectionā in de Postman applicatie.
Ga naar je Postman collectie en selecteer āShare Collectionā.

Selecteer de āGet Linkā tab en kopieer de link naar je klembord.

Terug in Jenkins, kies nogmaals āAdd build stepā en selecteer ditmaal āExecute Shellā. Hierin plaatsen we het Newman commando:
Om de collectie te draaien: newman run <Collection share link van klembord>
CLI & JUnit rapporten genereren: --reporters cli,junit
Om het JUnit rapport op te slaan: --reporter-junit-export <"newman/report.xml">
Het complete commando wordt dan als volgt:
newman run https://www.getpostman.com/collections/12a34b56c78d90 -r cli,junit
--reporter-junit-export "newman/SmoothieFlavorsTestReport.xml"

Het JUnit rapport werkt uiteraard alleen als je collectie ook testen bevat. Anders kun je deze commandoās achterwege laten.
6. Publiceer het JUnit testrapport
Het XML-rapport van JUnit is inmiddels aangemaakt, maar voor een leesbare weergave moet het nog gepubliceerd worden binnen Jenkins. Maak een nieuwe āPost-build Actionā aan en kies voor āPublish JUnit test result reportā. De locatie waar de XML-rapporten staan is: ānewman/*.xmlā. Druk tenslotte op Save om je Jenkins project op te slaan!

Eventuele vervolgstappen
Je bestaande Postman collectie draait nu in Jenkins! Als je een nieuwe bouwpoging start, dan wordt je collectie doorlopen en de resultaten worden door JUnit verwerkt. De bouwpoging slaagt wanneer er geen fouten optreden en faalt indien ƩƩn van de testen faalt.
Natuurlijk zijn er nog wat mogelijke vervolgstappen om je Postman collectie nog waardevoller te maken voor jou en je project:
Maak in Jenkins een Post-build stap aan om het project op de hoogte te houden. Dat kan bijvoorbeeld door middel van een e-mail of Slack-bericht met daarin een korte samenvatting van de resultaten.
Voeg een build trigger toe om het je collectie op een vast interval of na een specifiek event te starten.
Schakel versiebeheer in (Postman Pro licentie vereist) zodat je gemakkelijker kunt samenwerken en je collectie up-to-date houdt. De gedeelde collectie die we als voorbeeld gebruiken is namelijk statisch, en moet dus met de hand geüpdatet worden na iedere aanpassing.
Leuk dat je dit blog hebt gelezen. Ik ben nieuwsgierig naar jouw ervaringen. Heb je nog tips? Of heb je vragen of opmerkingen? We horen het graag!
Bas Dam schreef: 4 februari 2019 om 09:11 4. Als je een Postman Pro licentie hebt, kan je je testen ook runnen als monitoring service. Dit is een makkelijke opstap voordat je met Jenkins begint omdat je geen environment variabelen hoeft te importeren/exporteren. Ook automatische mail bij errors is eenvoudig in te stellen. Uiteindelijk wil je wellicht overstappen op Jenkins omdat het aantal monitoring requests per maand beperkt is (of je moet bijkopen) en het testrapport is wat minder uitgebreid.