Skip to main content

reqman (3.X)

Reqman is a postman killer ;-)

Reqman is a postman killer. It shares the same goal, but without GUI ... the GUI is simply your favorite text editor, because requests/tests are only simple yaml files. Reqman is a command line tool, available on any platforms.

Video (1minute)

All configurations is done via simple yaml files, editable with any text editors. Results are displayed in console and in an html output. It's scriptable, and can be used as a daemon/cron task to automate your tests.

Documentation

Changelog !

Online tool to convert swagger/openapi3, OR postman collections to reqman's tests

DEMO

Features

  • Light (simple py3 module, 3000 lines of code, and x3 lines for unittests, in TDD mind ... cov:97%)
  • Powerful (at least as postman free version)
  • tests are simple (no code !)
  • Variable pool
  • can create(save)/re-use variables per request
  • "procedures" (declarations & re-use/call), local or global
  • Environment aware (switch easily)
  • https/ssl ok (bypass)
  • http 1.0, 1.1, 2.0
  • proxy support (thru a reqman.conf var "proxy")
  • headers inherits
  • tests inherits
  • timed requests + average times
  • html tests renderer (with request/response contents)
  • encoding aware (western occident & utf8 (prefer!))
  • cookie handling
  • color output in console (when colorama is present)
  • variables can be computed/transformed (in a chain way)
  • tests files extension : .yml or .rml (ReqManLanguage)
  • generate conf/rml (with 'new' command)
  • can paralleliz tests (option --p)
  • versionning
  • NEW 2.0 :
    • rewrite from scratch, a lot stronger & speeder !
    • advanced save mechanisms
    • new switches system
    • a lot of new options (auto open browser, set html filename, compare, ...)
    • ability to save the state, to compare with newer ones
    • ability to replay given tests (rmr file)
    • dual mode : compare switches vs others switches (-env1 +env2) in html output
    • shebang mode
    • better html output
    • fully compatible with reqman1 conf/ymls
    • xml/xpath support tests
    • used as a lib/module, you can add easily your own features (see below)
  • NEW 3.0 : (simple py file -> real python module (multiple files))
    • full rewrite of resolving mechanism (more robust, more maintanable) (the big improvment)
    • "wait:" commands (time expressed in ms)
    • "ignorable vars" (avoid ResolveException, with <<var?>>)
    • --f option : to output full exchanges in html output
    • --j && --j:file.xml : to output junit-xml file

TODO : need to rewrite this ^^ ;-)

Getting started : installation

If you are on an *nix platform, you can start with pip :

$ pip3 install reqman

it will install the reqman script in your path (perhaps, you'll need to Add the path ~/.local/bin to the PATH environment variable.)

If you are on microsoft windows, just download reqman.exe (v3). The old reqman.exe V2, is still there, and add it in your path. The old reqman.exe V1, is still there, and add it in your path.

Getting started : let's go

Imagine that you want to test the json api from pypi.org, to verify that it finds me ;-) (if you are on windows, just replace reqman with reqman.exe)

You can start a new project in your folder, like that:

$ reqman new https://pypi.org/pypi/reqman/json

It's the first start ; it will create a conf file reqman.conf and a (basic) test file 0010_test.rml. Theses files are YAML, so ensure that your editor understand them ! (Following 'new' command will just create another fresh rml file if a reqman.conf exists)

Now, you can run/test it :

$ reqman .

It will scan your folder "." and run all test files (*.rml or *.yml) against the reqman.conf ;-)

It will show you what's happened in your console. And generate a reqman.html with more details (open it to have an idea)!

If you edit the reqman.conf, you will see :

root: https://pypi.org
headers:
    User-Agent: reqman (https://github.com/manatlan/reqman)

the root is a special var which will be prependded to all relative urls in your requests tests. the headers (which is a special var too) is a set of http headers which will be added to all your requests.

Change it to, and save it :

root: https://pypi.org
headers:
    User-Agent: reqman (https://github.com/manatlan/reqman)

switches:
    test:
        root: https://test.pypi.org

Now, you have created your first switch. And try to run your tests like this:

$ reqman.py . -test

It will run your tests against the root defined in test section ; and the test is KO, because reqman doesn't exist on test.pypi.org ! In fact; all declared things under test will replace those at the top ! So you can declare multiple environments, with multiple switches !

But you can declare what you want, now edit reqman.conf like this :

root: https://pypi.org
headers:
    User-Agent: reqman (https://github.com/manatlan/reqman)

package: reqman

switches:
    test:
        root: https://test.pypi.org

You have declared a var package ! let's edit the test file 0010_test.rml like this :

- GET: /pypi/<<package>>/json
  tests:
    - status: 200

Now, your test will use the package var which was declared in reqman.conf ! So, you can create a switch to change the package thru the command line, simply edit your reqman.conf like that :

root: https://pypi.org
headers:
    User-Agent: reqman (https://github.com/manatlan/reqman)

package: reqman

switches:
    test:
        root: https://test.pypi.org

    colorama:
        package: colorama

Now, you can check that 'colorama' exists on pypi.org, like that :

$ reqman . -colorama

And you can check that 'colorama' exists on test.pypi.org, like that :

$ reqman . -colorama -test

As you can imagine, it's possible to make a lot of fun things easily. (see a more complex reqman.conf)

Now, you can edit your rml file, and try the things available in this tuto. Organize your tests as you want : you can make many requests in a rml file, you can make many files with many requests, you can make folders which contain many rml files. Reqman will not scan sub-folders starting with "_" or ".".

reqman will return an exit code which contains the number of KO tests : 0 if everything is OK, or -1 if there is a trouble (tests can't be runned) : so it's easily scriptable in your automated workflows !

Ability to override reqman's features for your propers needs (reqman>=2.8.1)

Now, it's super easy to override reqman with your own features. Using 'reqman' as a lib/module for your python's code. You can declare your own methods, to fulfill your specials needs (hide special mechanism, use external libs, ...): (Thoses real python methods, just needs to respect the same signature as pyhon methods declared in confs.)

import reqman

reqman.__usage__ = "USAGE: reqmanBis ..."   # override usage or not ;-)

@reqman.expose
def SpecialMethod(x,ENV):
    """
    Do what you want ...

    Args:
        'x'   : the input var (any) or None.
        'ENV' : the current env (dict)

    Returns:
        any
    """
    ...
    return "What you need"

if __name__ == "__main__":
    sys.exit(reqman.main())

Now, you can use SpecialMethod in your scripts, ex: <<value|SpecialMethod>> or <<SpecialMethod>>!

Use and abuse !

huntr

Release files for reqman 3.5.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for reqman 3.5.3
File Size Uploaded
reqman-3.5.3.tar.gz 41.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for reqman 3.5.3
File Interpreter ABI Platform
reqman-3.5.3-py3-none-any.whl Python 3 none any Details

Total release size: 87.2 kB

Release files / reqman-3.5.3.tar.gz

Download URL reqman-3.5.3.tar.gz
Size 41.6 kB
Tags Source
SHA-256 checksum
How to use checksums
c323dd261ffaf87ba385f0efb0b812643902da7ac35f1dddc8beb78377fe7963
BLAKE2b-256 checksum
How to use checksums
36ede72a43ac06e40cf4d7f857821fa8b2f2bcf34985ee78a5c6e9ae6b340c37
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2025.

Transparency log

Release files / reqman-3.5.3-py3-none-any.whl

Download URL reqman-3.5.3-py3-none-any.whl
Size 45.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7ff08cb38183673d600703da409db28ce5b07a0788e276652ca05fb410ca10d6
BLAKE2b-256 checksum
How to use checksums
136f3587d8bb0b371a7d915c67baf40ec24285f028bdddfb59e965585ba59108
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

3.5.3 This release

2 release files

3.5.2

2 release files

3.5.1

2 release files

3.5.0

2 release files

3.4.9

2 release files

3.4.8

2 release files

3.4.3

2 release files

3.4.2

2 release files

3.4.1

2 release files

3.4.0

2 release files

3.3.3

2 release files

3.3.2

2 release files

3.3.1

2 release files

3.3.0

2 release files

3.2.0

2 release files

3.1.0

2 release files

3.0.4

2 release files

3.0.3

2 release files

3.0.2

2 release files

3.0.1

2 release files

3.0.0

2 release files

0.9.9.7

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page