Automated API Testing with Jenkins and Postman/Newman
Zafri Zulkipli
Posted on May 19, 2019
Let me start off by saying that this is purely experimental, I am not using this strategy in my workplace nor any production environment. This is me, spending my lazy Sunday afternoon playing around with API testing automation.
I got this idea to play around with Jenkins/Postman after my workplace is looking for an API testing automation tool that would run periodically and notify us immediately when something fails.
I knew Postman is perfect for running multiple API tests with it's Runner and pair it with Newman I can execute collections in headless state.
I stumbled upon Jenkins while googling away how to automate the process of running Postman collections. So now I have the means to test and automate. Below is my step-by-step setup for running Postman + Newman + Jenkins.
My folder structure
automated-test
├── docker-compose.yml
├── Dockerfile
├── postman_collections
├── .. # some other Jenkins related stuff that is not in the scope of this post
I begin by extending the official Jenkins docker image to include Newman.
Dockerfile
FROM jenkins/jenkins:lts
USER root
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
# install nodejs
&& curl -sL https://deb.nodesource.com/setup_10.x | bash - \
&& apt-get install -y apt-utils \
&& apt-get install -y nodejs \
&& apt-get install -y build-essential \
&& apt-get install -y inotify-tools \
# install newman
&& npm install -g newman
USER jenkins
Then build using docker-compose
(since I'm lazy to type a long list of docker command just to start Jenkin server)
docker-compose.yml
version: "3"
services:
app:
build: .
volumes:
- .:/var/jenkins_home
ports:
- "8080:8080"
- "50000:50000"
After that, a simple docker-compose up
will suffice.
So I got my Jenkins server up and running, now I need to export my postman collections. Below is a simple API test that I made. It calls an endpoint and assert the HTTP response status is 200, pretty simple right?
I exported the collection to ~/automated-test/postman_collections/collection.json
Now, I need to create a new project in Jenkins
dashboard.
The configs worth noting is
Interval to run the test (I set it to run every 5min)
Build Triggers > Build periodically > */5 * * * *
Actual test execution for the postman collections
Build > Add build step > Execute shell > newman run /var/jenkins_home/postman_collections/collection.json
Once saved, Jenkins will execute your postman collections every 5min.
And done! Of course using Jenkins just to test for Postman API collections is a bit overkill, but it does the job. If you have any other automation tool that you find suitable, do let me know since my workplace is still looking for a suitable API testing automation.
Posted on May 19, 2019
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.