Command-line utility for Postman
Newman is a command-line collection runner for Postman. It allows you to effortlessly run and test a Postman collection directly from the command-line. It is built with extensibility in mind so that you can easily integrate it with your continuous integration servers and build systems.
Newman maintains feature parity with Postman and allows you to run collections just the way they are executed inside the collection runner in Postman.
Newman is built on Node.js. To run Newman, make sure you have Node.js installed. Node.js can be downloaded and installed from here on Linux, Windows and Mac OSX.
With that done, Newman is just one command away.
$ npm install -g newman
This installs Newman from npm globally on your system allowing you to run it from anywhere.
If you already have Newman, you can update with a simple command
$ npm update -g newman
The easiest way to run Newman is to run it with a collection. With the
-c flag you can run any collection file lying on your file-system. Refer the collection documentation to learn how to use and download collections.
$ newman -c mycollection.json
-u flag allows you to pass a postman collection as a URL. Your collection probably uses environment variables. To provide an accompanying set of environment variables, export them from Postman and run them with the
$ newman -u -e devenvironment.json
Newman provides a rich set of options to customize a run. A list of options can be retrieved by running it with the
$ newman -hOptions:-h, --help output usage information-V, --version output the version number-c, --collection [file] Specify a Postman collection as a JSON [file]-u, --url [url] Specify a Postman collection as a [url]-f, --folder [folderName] Specify a single folder to run from a collection. To be used with -c or -u.-e, --environment [file] Specify a Postman environment as a JSON [file]-d, --data [file] Specify a data file to use either json or csv-g, --global [file] Specify a Postman globals file as JSON [file]-y, --delay [number] Specify a delay (in ms) between requests [number]-s, --stopOnError Stops the runner when a test case fails-j, --noSummary Doesn't show the summary for each iteration-n, --number [number] Define the number of iterations to run-C, --noColor Disable colored output-k, --insecure Disable strict ssl-l, --tls Use TLSv1-o, --outputFile [file] Path to file where output should be written. [file]-x, --exitCode Continue running tests even after a failure, but exit with code=1-i, --import [file] Import a Postman backup file, and save collections, environments, and globals. [file]-p, --pretty (Use with -i) Enable pretty-print while saving imported collections, environments, and globals-H, --html Export a HTML report to a specified file [file]
-n option to set the number of iterations you want to run the collection for.
$ newman -c mycollection.json -n 10 # runs the collection 10 times
To provide a different set of data i.e. variables for each iteration you can use the
-d to specify a
csv file. For example, a data file such as the one shown below will run 2 iterations, with each iteration using a set of variables.
"url": """user_id": "1""id": "1""token_id": "123123""url": """user_id": "2""id": "2""token_id": "899899"
$ newman -c mycollection.json -d data.json
The csv file for the above set of variables would look like
url, user_id, id, token_id, 1, 1, 123123123, 2, 2, 899899
Newman, by default exits with a status code of 0 if everything runs well i.e. without any exceptions. Continuous integration tools respond to these exit codes and correspondingly pass or fail a build. You can use
-s flag to tell Newman to halt on a test case error with a status code of 1 which can then be picked up by a CI tool or build system.
$ newman -c PostmanCollection.json -e environment.json -sIteration 1 of 1200 17ms Blog posts✔ Status code is 200404 5ms Blog post200 4ms New post without token✔ Body has a message✔ invalid credentialsTest case failed: Status code is 404
The results of all tests and requests can be exported into file and later imported in Postman for further analysis. Use the
-o flag and a file name to save the runner output into a file.
$ newman -c mycollection.json -o outputfile.json
Newman can also be used to import a Postman backup file. The collections, environments, and globals will be saved to the 'data' folder. (Use the -p option to enable pretty-print)
newman -i /path/to/Backup.json -p
Newman has been built as a library from the ground-up so that it can be extended and put to varied uses. You can use it like so -
var Newman = require'newman';// read the collectionjson filevar collectionJson = JSON5parsefsreadFileSync"collection.json" 'utf8';// define Newman optionsnewmanOptions =envJson: JSON5parsefsreadFileSync"envjson.json" "utf-8" // environment file (in parsed json format)dataFile: datacsv // data file if requirediterationCount: 10 // define the number of times the runner should runoutputFile: "outfile.json" // the file to export toresponseHandler: "TestResponseHandler" // the response handler to useasLibrary: true // this makes sure the exit code is returned as an argument to the callback functionstopOnError: true// Optional Callback function which will be executed once Newman is done executing all its tasks.NewmanexecutecollectionJson newmanOptions callback;
Want your test suite to run every hour? Newman can be used to schedule tests to run hourly, daily or weekly automatically in combination with the awesome Unix scheduler CRON.
Lets setup a simple script called
run_newman to run our tests
#!/bin/bashtimestamp=$(date +"%s")collection=/var/www/myapp/tests/collection.jsonenv=/var/www/myapp/tests/envfile.json# create separate outfile for each runoutfile=/var/www/myapp/tests/outfile-$timestamp.json# redirect all output to /dev/nullnewman -c $collection -c $env -o $outfile > /dev/null2>&1
Make it an executable
$ chmod +x run_newman
To run Newman every hour, run
crontab -e and enter the following -
0 * * * * /path/to/run_newman
cron if it has been setup
$ crontab -l0 * * * * /path/to/run_newman
With this, your Newman is set to run automatically every hour.
Note: Exact location for
cron is dependent on the linux distribution you are running. See specific
cron instructions for your distribution. For an introduction to
cron checkout this article.
Apache. See the LICENSE file for more information