Converts a Postman collection to a k6 script.
The postman-to-k6 converter utilizes your Postman collection and converts all the Postman requests, including tests, variables, ... to K6 scripts that can be executed by K6 to run performance tests.
This project is a friendly fork of the original grafana/postman-to-k6 converter, actively maintained and open for new contributions.
Feel free to contribute or pass any suggestion to improve postman-to-k6.
- Features
- Installation
- Usage
- Video introduction
- Options
- Examples
- Unsupported Features
- Other similar tools
- Credits
- Pre-request scripts.
- Test scripts.
- Variables (at all scopes + dynamic).
- Data files.
- Authentication methods (except Hawk).
- File uploads (experimental).
-
postman.*interface (exceptions below). -
pm.*interface (exceptions below). - Support for Postman Dynamic Variables & ReplaceIn function.
- Global variables exposed by Postman:
globalsenvironmentdataiteration. -
xml2Jsonconversion. - All Postman Schema versions.
While possible to install globally, we recommend that you, if possible, add the converter to the node_modules of your
test project using:
$ npm install -D @apideck/postman-to-k6or using yarn...
$ yarn add @apideck/postman-to-k6Note that this will require you to run the converter with npx @apideck/postman-to-k6 your-postman-file or, if you are
using an older versions of npm, ./node_modules/.bin/postman-to-k6 your-postman-file.
$ npm install -g @apideck/postman-to-k6To convert an exported collection to a k6 script:
$ postman-to-k6 collection.json -o k6-script.jsThen run the script in k6, as usual, using:
$ k6 run k6-script.jsTogether with Nicole van der Hoeven & Paul Balogh from the K6 team, we talked about "postman-to-k6" in the K6 Office Hours podcast. We talked about how to convert a Postman collection to a k6 load test, the advantages of Postman, and the benefits of reusing automation testing scripts for performance.
Watch it on Youtube >> https://www.youtube.com/watch?v=Be66Db4wHLA
Topics covered:
- Use cases for k6
- Quick tour of Postman
- Why Postman is not designed for load testing
- Demo of postman-to-k6
- How to use Portman to generate tests from an OpenAPI spec
Configures how many times the script will be executed before completion.
| Flag | Verbose | Default |
|---|---|---|
-i |
--iterations |
1 |
Example:
$ postman-to-k6 collection.json --iterations 25 -o k6-script.jsProvide environment variables from a JSON file.
| Flag | Verbose | Default |
|---|---|---|
-e |
--environment |
N/A |
Example:
$ postman-to-k6 collection.json --environment environment.json -o k6-script.jsProvide global variables from a JSON file.
| Flag | Verbose | Default |
|---|---|---|
-g |
--global |
N/A |
$ postman-to-k6 collection.json --global globals.json -o k6-script.jsProvide a data file in the CSV format.
| Flag | Verbose | Default |
|---|---|---|
-c |
--csv |
N/A |
$ postman-to-k6 collection.json --csv data.csv -o k6-script.jsPass in a data file in the JSON format.
| Flag | Verbose | Default |
|---|---|---|
-j |
--json |
N/A |
$ postman-to-k6 collection.json --json data.json -o k6-script.jsPass K6 parameter options as a file in JSON format.
| Flag | Verbose | Default |
|---|---|---|
--k6-params |
N/A |
$ postman-to-k6 collection.json --k6-params k6-params.json -o k6-script.jsOutput the K6 summary as a file
in JSON format. This will add the K6 handleSummary(data) to the generated script, providing the functionality that K6
will store the summary output as JSON file locally.
| Flag | Verbose | Default |
|---|---|---|
--k6-handle-summary-json |
N/A |
$ postman-to-k6 collection.json --k6-handle-summary-json summary-report.json -o k6-script.jsGenerate K6 request name tags based on available naming strategies:
- none: no automatic generated tags | default
request: uses the request name as tag (example "Show all accounts")folder-request: uses Postman folder name and the request name (example: "Accounts - Show all accounts")
| Flag | Verbose | Default |
|---|---|---|
--k6-request-tagging |
N/A |
Example for request strategy
$ postman-to-k6 collection.json --k6-request-tagging=request -o k6-script.jsExample for folder-request strategy
$ postman-to-k6 collection.json --k6-request-tagging=folder-request -o k6-script.jsSplit requests into separate files, for easier rearrangement of the logic.
| Flag | Verbose | Default |
|---|---|---|
-s |
--separate |
false |
$ postman-to-k6 collection.json --separate -o k6-script.js$ postman-to-k6 collection.json -s -o k6-script.jsSkips any pre-request scripts during conversion
| Flag | Verbose | Default |
|---|---|---|
--skip-pre |
false |
$ postman-to-k6 collection.json --skip-pre -o k6-script.jsSkips any post-request scripts during conversion
| Flag | Verbose | Default |
|---|---|---|
--skip-post |
false |
$ postman-to-k6 collection.json --skip-pre -o k6-script.jsManage all the CLI options in a separate configuration file and pass them along to the postman-to-k6 command. To make the CLI usage easier, especially in CI/CD implementations.
All the available CLI options can be used in the config file. By passing the CLI options as parameters, you can overwrite the defined CLI options defined in the file.
| Flag | Verbose | Default |
|---|---|---|
--cli-options-file |
false |
$ postman-to-k6 collection.json --cli-options-file cli-config.jsonExample of JSON CLI config file
{
"output": "k6-script.js",
"k6-params": "config/k6-params.json",
"environment": "config/envs/team.env.json",
"separate": true
}A collection of Postman examples are located under example. To run one of the examples, just run it as you would any
other command:
$ postman-to-k6 example/v2/echo.json -o k6-script.js- Sending requests from scripts using
pm.sendRequest. - Controlling request execution order using
postman.setNextRequest. - Cookie properties, like
hostOnly,session, andstoreId. - Postman methods:
pm.response.reasonpm.response.to.have.status(reason)pm.response.to.not.have.status(reason)pm.request.auth
- The Hawk authentication method.
- Deprecated
xmlToJsonmethod. - Request IDs are changed. Postman doesn't provide them in the export, so we have to generate new ones.
A collection of blog posts and resources about postman-to-k6
- k6 Office Hours #43 Podcast by Grafana/K6 & Tim Haselaars (maintainer of postman-to-k6)
- Load testing your API with Postman by Mostafa Moradian from Grafana
- Unlocking the Power of Spec-Driven API Development by Tim Haselaars
- API load testing: A beginner's guide by Grafana/K6
- Charge your APIs Volume 6: Perfecting Your APIOps - Harnessing the Power of k6 for API Testing by Daniel Kocot from Codecentric
- Load Testing with Postman and Grafana K6 by Lukman Patel
- Shift left performance test by converting Postman API script to K6 and integrate it with bitbucket by sukma ragil
- Hacker News
- Transformando testes de API com Postman em testes de performance com K6 by Marlo Henrique
- Converting Postman Collection to K6 Script
- Using Postman with k6 by RiaNaik
- Postman to K6 Automating Performance Testing with Auto Script Generation by Huzaifa Asif
- Postman to k6 in under 5 minutes / YouTube by loan Solderea
- jmeter-to-k6: Convert JMeter JMX files to k6 JS.
Special thanks to the K6 team from Grafana for open-sourcing & growing the converter and contributing it to the community. Thanks to bookmoons for creating this tool. Also, thanks to borjacampina for creating the original incarnation of the tool.
