Reqman is the postman killer ;-)
Switch branches/tags
Nothing to show
Clone or download
Permalink
Failed to load latest commit information.
.vscode better names Jul 13, 2018
dist exe for 1.0.0.0 Jul 20, 2018
examples remove params as list -> replaced by foreach Jul 14, 2018
.gitignore add tasks file Jul 11, 2018
LICENSE Initial commit Jan 28, 2018
README.md color in readme Jul 22, 2018
changelog release a 1.0 Jul 19, 2018
reqman.py release a 1.0 Jul 19, 2018
setup.py u+x Jul 16, 2018
tests.py when None is present in <,<=,>,>= -> False Jul 16, 2018

README.md

reqman

Reqman is the postman killer ;-)

Create your http(s)-tests in simple yaml files, and run them with command line, against various environments. reqman is a python3 simple file (need PyYAML dependency). The changelog !

Features

  • Light (simple py3 file, 900 lines of code, and x3 lines for unittests, in TDD mind)
  • 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)
  • headers inherits
  • tests inherits
  • timed requests + average times
  • html tests renderer (with request/response contents)
  • encoding aware
  • 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)
  • versionning

and soon

  • doc & examples ;-)
  • postman converter ?

Getting started : installation

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

$ pip3 install reqman

it will install the reqman.py 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, 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.py with reqman.exe)

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

$ reqman.py 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.py .

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)

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 switchs !

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

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

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

colorama:
    package: colorama

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

$ reqman.py . -colorama

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

$ reqman.py . -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 !

Use and abuse !