Postman is a tool for designing, sharing and testing APIs between a group of collaborators that range from the API developers down to the final clients, be them mobile apps or web apps.
This presentation focuses on using Postman's advanced free features, with a special focus on testing.
I have linked an example collection which I refer to several times during the presentation.
Section 1 - Fundamentals
Environments, variables, collections, and workspaces
Roles, VCS
Section 2 - Scripts & Testing
Pre request scripts and tests
Scopes
Pass data between requests
Section 3 - Integrated testing
Collection runners: read data from files, workflows
Monitors
CD/CI integration with Newman
Section 4 - More!
Documentation
Mock server
Integrations
13. COLLECTIONS
Collections are groups of requests that can be run
together as a series of requests, against a
corresponding environment.
> Automate API testing
> Make better use of scripts: pass data between
requests...
> ...or build workflows that mirror your APIs' use case.
15. WORKSPACES
A workspace is a view of all the Postman
things you've come to use: collections,
environments, ...
> Individuals can organize their work in
personal workspaces
> Teams can collaborate in team
workspaces.
> You can share elements in multiple
workspaces at the same time.
23. pm.test("Response is ok", function () {
//ok, success, redirection, clientError, serverError
pm.response.to.be.ok;
});
pm.test("Response can be processed by clients", function () {
pm.response.to.be.json;
pm.response.to.not.have.jsonBody("error");
});
24. pm.test('There is at least one contract', function(){
var data = pm.response.json();
pm.expect(data.contracts.length).to.be.above(0);
})
pm.test('All contracts have one line', function(){
var data = pm.response.json();
for (i = 0; i < data.contracts.length; i++){
contract = data.contracts[i];
pm.expect(contract.lines.length).to.eql(1);
}
})
29. pm.test("Response contains customerId and userId", function () {
pm.response.to.have.jsonBody("customerId");
pm.response.to.have.jsonBody("userId");
});
//Set global variable
var data = pm.response.json();
pm.environment.set("customerId", data.customerId);
console.log("Env customerId id is " + pm.environment.get("customerId"));
pm.environment.set("userId", data.userId);
console.log("Env userId id is " + pm.environment.get("userId"));
31. ...Test
// Request MUST define a JSON schema under the name "schema"
// in its pre-requests scripts
pm.test('Schema is valid', function() {
var result=tv4.validateResult(pm.response.json(), schema);
if(!result.valid){
console.log(result);
}
pm.expect(result.valid).to.be.true;
});
34. COLLECTION RUNNERS
Collection runners send all requests in one collection one
after another, with a specific:
> Environment
> Number of iterations
> Delay between requests
> Log level
> Data file
35. READ DATA FROM FILES
Override current variables with values defined in a .json
or .csv file.
[
{
"username":"purpleurkle",
"password":"waldos",
"lineId": "1234567890",
"contractId": "1234567890cc",
"useDataFile": true
}
]
Read More
40. MONITORS
Monitors run a collection periodically, with a specific:
> Environment
> Run frequency
> Region
> Request timeout/delay
> Email notifications on failure
42. NEWMAN
Newman is a command line Collection Runner for Postman.
You can configure continuous integration tools to
respond to Newman's exit status codes and
correspondingly pass or fail a build.
Read More | Newman docs on Github
43. dl npm @ https://nodejs.org/en/download/package-manager/
or run $ brew install node
$ npm install -g newman
$
$ newman run examples/sample-collection.json
$
$ newman run https://www.getpostman.com/collections/{{id}}
$
$ newman run -h
44. ! Status Code Test
GET https://echo.getpostman.com/status/404 [404 Not Found, 534B, 1551ms]
1. response code is 200
"#########################$##########$##########%
& & executed & failed &
'#########################(##########(##########)
& iterations & 1 & 0 &
'#########################(##########(##########)
& requests & 1 & 0 &
'#########################(##########(##########)
& test-scripts & 1 & 0 &
'#########################(##########(##########)
& prerequest-scripts & 0 & 0 &
'#########################(##########(##########)
& assertions & 1 & 1 &
'#########################*##########*##########)
& total run duration: 1917ms &
'###############################################)
& total data received: 14B (approx) &
'###############################################)
& average response time: 1411ms &
+###############################################,
# failure detail
1. AssertionFai… response code is 200
at assertion:1 in test-script
inside "Status Code Test" of "Example Collection with
Failing Tests"
45. REPORTERS
Reporters are node modules that provide information
about the collection run in a specific format.
$ newman run examples/sample-collection.json -r cli, json
$ newman run examples/sample-collection.json --reporters json
cli [default] json
junit external (HTML)
Custom (Read more)