Postman¶
This plugin provides functions that handle Postman tests. It has been validated with Postman 8.12.1 and should work with any recent version of Postman.
It can be used directly in a workflow, or indirectly via generators (such as those providing access to test case managers).
A working newman installation with its HTML reporter (newman-reporter-html) must
be available in the targeted execution environments.
The functions have a postman category prefix.
Functions¶
postman/postman@v1¶
Run a Postman collection.
Warning
If the function is used more than once in a job, it is up to the caller to ensure no previous test execution results remain before executing a new collection.
Inputs¶
The function has the following inputs:
- 
collection(required)The Postman collection to run. 
- 
folder(optional)Specify a single folder to run from a collection. ( --folderoption)
- 
environment(optional)Specify a Postman environment as a JSON [file]. ( -e,--environmentoption)
- 
iteration-data(optional)Specify a data file to use either JSON or CSV. ( -d,--iteration-dataoption)
- 
globals(optional)Specify a Postman globals file as JSON [file]. ( -g,--globalsoption)
- 
iteration-count(optional)Define the number of iterations to run. ( -n,--iteration-countoption)
- 
delay-request(optional)Specify a delay (in ms) between requests [number]. ( --delay-requestoption)
- 
timeout-request(optional)Specify a request timeout (in ms) for a request. ( --timeout-requestoption)
- 
bail(optional)Stop the runner when an invalid folder was specified using the --folderoption or an error was encountered in general. (--bailoption)
- 
extra-options(optional)Any other option. 
Reports¶
The function generates the following reports:
- 
newman-run-report.xmlSurefire report (XML). It has the application/vnd.opentestfactory.postman-surefire+xmlcontent type.
- 
newman-run-report.htmlReport formatted in HTML. 
Example¶
- uses: postman/postman@v1
  with:
    collection: path/to/collection (JSON_file|URL)
- uses: postman/postman@v1
  with:
    collection: path/to/collection (JSON_file|URL)
    folder: folderName
    environment: path/to/Postman_environment (JSON_file|URL)
    iteration-data: path/to/Data_file (JSON|CSV)
    globals: path/to/Postman_globals_file (JSON)
    iteration-count: value1 (number)
    delay-request: value2 (number in ms)
    timeout-request: value3 (number in ms)
    bail: ('folder'|'failure'|true)
    extra-options: any other option
postman/execute@v1¶
An execute function for use by generators.
Test Reference format¶
The test reference format used by postman/execute@v1 is as follows:
- {project}/{path_to_collection}[#{folder}[#{request}]]
With:
- {project}(required): name of the project on the source code repository.
- 
{path_to_collection}(required): path and name of the Postman collection file, from the root of the project (with the.postman_collection.jsonextension).No support of renamed collection files The name of the file defines the name of the collection, i.e. if the file is called <name>.postman_collection.json, then the collection name is considered to be<name>. This name<name>is the one used to analyze the execution report and determine the test result. If the collection file has been renamed, this mechanism will no longer work.
- 
{folder}(optional): name of a specific folder containing requests in the Postman collection file (Newman’s--folderoption).
- {request}(optional): name of a specific request to parse for which you want to obtain a particular result.
Note
The {request} precision in the test reference has no impact on the execution,
but only on test result determination.
So, even when defining the specific level of the request, all requests defined in the folder will be executed (this means, for example, that if several test references point toward the same folder but toward different requests, then all the requests of the folder will be executed several times).
The test reports include the traces of all executed requests. But, only the Error / Failed / Success status corresponding to the specific request is used to determine the test case result.
Warning
Unicity of the specified folder
If the root directory of the project contains several folders with the name
{folder}, Newman will only execute the first found one. So, it is strongly advised
to use unique names for the deepest directories.
Inputs¶
The function has the following inputs:
- 
test(required)The test reference. 
Reports¶
The function generates the following reports:
- 
newman-run-report.xmlSurefire report (XML). It has the application/vnd.opentestfactory.postman-surefire+xmlcontent type.
- 
newman-run-report.htmlReport formatted in HTML. 
Customization¶
The POSTMAN_EXTRA_OPTIONS environment variable can be used to pass additional
parameters to the newman run command.
If defined it will be appended to the end of the command line.
The following parameters are used in the provider-generated newman run command:
newman run "{collection_path}" \
  -g _opentf_global_params.json -e _opentf_environment_params.json \
  --reporters junit,html \
  --reporter-junit-export newman-run-report.xml \
  --reporter-html-export newman-run-report.html $POSTMAN_EXTRA_OPTIONS
You must avoid passing, via the POSTMAN_EXTRA_OPTIONS variable, the command line
parameters that conflict with the parameters already used, or the parameters
that impact the generation or alter the path of the reports expected by the orchestrator
(view “Reports” section).
Extended HTML reports¶
Postman HTML reports can be extended using newman-reporter-htmlextra package. It should
be installed globally on the execution environment:
npm install -g newman-reporter-htmlextra
newman-reporter-htmlextra package provides HTML reports containing execution summary,
requests details, and detailed information on failed and skipped test cases.
To obtain extended HTML reports, pass the following values to the POSTMAN_EXTRA_OPTIONS
environment variable:
--reporters junit,htmlextra --reporter-junit-export newman-run-report.xml --reporter-htmlextra-export newman-run-report.html
It will override the provider-generated newman run command reporters parameters. Two reports will
be generated at the end of the run: Surefire XML report and extended HTML report.
For example, it is possible to set the POSTMAN_EXTRA_OPTIONS variable value using
a provider hook that will run before each execute command:
hooks:
- name: newman-reporter-htmlextra (windows)
  events:
  - categoryPrefix: postman
    category: execute
  if: runner.os == 'windows'
  before:
  - run: echo set POSTMAN_EXTRA_OPTIONS=--reporters junit,htmlextra --reporter-junit-export newman-run-report.xml --reporter-htmlextra-export newman-run-report.html >>%OPENTF_VARIABLES%
- name: newman-reporter-htmlextra (linux)
  events:
  - categoryPrefix: postman
    category: execute
  if: runner.os == 'linux'
  before:
  - run: echo 'POSTMAN_EXTRA_OPTIONS="--reporters junit,htmlextra --reporter-junit-export newman-run-report.xml --reporter-htmlextra-export newman-run-report.html"' >>$OPENTF_VARIABLES
Example¶
- uses: postman/execute@v1
  with:
    test: path/to/collection#folderName#requestName
postman/params@v1¶
A params function for use by generators.
params function has mandatory data and format inputs.
Inputs¶
The function has the following inputs:
- 
data(required)The data to use for the automated test. 
- 
format(required)The format to use for the automated test data. 
Example¶
- uses: postman/params@v1
  with:
    data:
      global:
        key1: value1
        key2: value2
      test:
        key1: value3
        key3: value4
    format: format
format must so far be SQUASHTM_FORMAT (tm.squashtest.org/params@v1).
data can have two keys:
- globalfor defining global parameters.
- testfor defining test parameters.
Using with inception¶
Please refer to “Inception” for more information on what inception is.
Preload the inception environment with at least the test execution report data.
Example¶
metadata:
  name: Postman Inception
resources:
  files:
  - xml_report
  - html_report
jobs:
  my_job:
    runs-on: inception
    steps:
    - uses: actions/prepare-inception@v1
      with:
        newman-run-report.xml: ${{ resources.files.xml_report }}
        newman-run-report.html: ${{ resources.files.html_report }}
    - uses: postman/execute@v1
      with:
        test: OpenWeather/postman_collection.json
You can use the following command to run it:
opentf-ctl \
    run workflow my_workflow.yaml \
    -f xml_report=report.xml \
    -f html_report=report.html
opentf-ctl ^
    run workflow my_workflow.yaml ^
    -f xml_report=report.xml ^
    -f html_report=report.html
opentf-ctl `
    run workflow my_workflow.yaml `
    -f xml_report=report.xml `
    -f html_report=report.html
Configuration¶
Hooks can be defined for the provided functions. This can be done in workflow definitions or at the orchestrator level so that they apply to all your workflows.
Configuration at the orchestrator level is done by setting the
POSTMAN_PROVIDER_HOOKS environment variable.
Please refer to “Common Provider Settings” for more information.