- Postman is a lightweight API testing solution. Its predominantly used for Testing but can be used for API developments too.
- Newman is the commandline collection runner for Postman which facilitates execution via CICD
Postman supports REST, SOAP, or plain HTTP. One can download Postman from here : https://www.postman.com/downloads/
In Postman, one can create individual requests and add them to a Collection. Inorder to run a Collection from commandline, we need Newman.
npm install -g newman
This will install newman globally.
Operations | Commands |
---|---|
Simple collection run | newman run MyCollection.json |
Run a collection with environment details | newman run MyCollection.json -e Env.json |
Run a collection with an external data source | newman run MyCollection.json -d UserData.csv |
Generate Junit report | newman run MyCollection.json --reporters junit --reporter-junit-export junit.xml |
Sometimes we may require to fire a chain of APIs passing data from one API response to another API request. Lets take the following example :
- Create a user
- Extract the User ID from the response
- Use the User ID to Delete the user
Here we will use the Tests
section of a Request in Postman.
If the response of the Create User is :
{
"first_name": "Ashish",
"last_name": "Ghosh",
"email": "Ashish.Ghosh@jsonserver.com",
"id": 3
}
To extract the id
value and store it in a variable UserID
defined in Postman, in the Test section add this :
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("UserID", jsonData.id);
Now this UserID
variable can be used in the next Postman request.
For XML responses, the approach will be similar, but syntax will be different :
If the XML response is :
<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<soapenv:Result>
<CreateUser success="true">
<user version="1.0" alias="800006698200" status="Created" id="3"/>
</CreateUser>
</soapenv:Result>
</soapenv:Body>
</soapenv:Envelope>
To extract the id
value and store it in a variable UserID
defined in Postman, in the Test section add this :
var jsonObject = xml2Json(responseBody);
var user_id = jsonObject['soapenv:Envelope']['soapenv:Body']['soapenv:Result']['CreateUser']['user'].$.id;
pm.environment.set ("UserID", user_id);
To view a document generated by Postman click here : https://documenter.getpostman.com/view/5085233/TWDcEDxP