pyhttptest

by slaily

slaily / pyhttptest

A command-line tool for HTTP tests over RESTful APIs✨

131 Stars 9 Forks Last release: Not found BSD 3-Clause "New" or "Revised" License 186 Commits 0 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

pyhttptest: HTTP tests over RESTful APIs✨

.. image:: https://travis-ci.org/slaily/pyhttptest.svg?branch=master :target: https://travis-ci.org/slaily/pyhttptest

Pissed about writing test scripts against your RESTFul APIs anytime?

Describe an HTTP Requests test cases in a simplest and widely used format JSON within a file.

Run one command and gain a summary report.

📣

📣 Coverage measuring on Test Cases coming soon

📣

.. image:: https://www.dropbox.com/s/cd0g07dop4j1riq/pyhttptest-cli-table-of-results.png?raw=1 :alt: pyhttptest in the command line :width: 100% :align: center

Installation


Recommended installation method is to use

pip
:

.. code-block:: bash

$ pip install pyhttptest

Python version 3+ is required.

Usage


.. code-block:: bash

$ pyhttptest execute FILE

See also

pyhttptest --help
.

Examples


Single test case

Create a .json file and define a test case like an example:

FILE: HTTP_GET.json

.. code-block:: json

{
  "name": "TEST: List all users",
  "verb": "GET",
  "endpoint": "users",
  "host": "https://github.com",
  "headers": {
    "Accept-Language": "en-US"
  },
  "query_string": {
    "limit": 5
  }
}

Execute a test case:

.. code-block:: bash

$ pyhttptest execute FILE_PATH/HTTP_GET.json

Result:

.. image:: https://www.dropbox.com/s/0h56p3c4jm4sriy/pyhttptest-cli.png?raw=1 :alt: pyhttptest in the command line :width: 100% :align: center

Мultiple test cases

Create a .json file and define a test cases like an example:

FILE: requests.json

.. code-block:: json

[
  {
    "name":"TEST: List all users",
    "verb":"GET",
    "endpoint":"api/v1/users",
    "host":"http://localhost:8085/",
    "headers":{
       "Accept-Language":"en-US"
    },
    "query_string":{
       "limit":1
    }
  },
  {
    "name":"TEST: Add a new user",
    "verb":"POST",
    "endpoint":"api/v1/users",
    "host":"http://localhost:8085/",
    "payload":{
       "username":"pyhttptest",
       "email":"[email protected]"
    }
  },
  {
    "name":"TEST: Modify an existing user",
    "verb":"PUT",
    "endpoint":"api/v1/users/XeEsscGqweEttXsgY",
    "host":"http://localhost:8085/",
    "payload":{
       "username":"pyhttptest"
    }
  },
  {
    "name":"TEST: Delete an existing user",
    "verb":"DELETE",
    "endpoint":"api/v1/users/XeEsscGqweEttXsgY",
    "host":"http://localhost:8085/"
  }
]

Execute a test case:

.. code-block:: bash

$ pyhttptest execute FILE_PATH/requests.json

Result:

.. image:: https://www.dropbox.com/s/cd0g07dop4j1riq/pyhttptest-cli-table-of-results.png?raw=1 :alt: pyhttptest in the command line :width: 100% :align: center

Dependencies


Under the hood, pyhttptest uses these amazing libraries:

  • ijson 
    _ — Iterative JSON parser with a standard Python iterator interface
  • jsonschema 
    _ — An implementation of JSON Schema validation for Python
  • Requests 
    _ — Python HTTP library for humans
  • tabulate 
    _ — Pretty-print tabular data
  • click 
    _ — Composable command line interface toolkit

Contributing


See

CONTRIBUTING 
_.

Changelog


See

CHANGELOG 
_.

Licence


BSD-3-Clause:

LICENSE 
_.

Authors


Iliyan Slavov
_

.. _Iliyan Slavov: https://www.linkedin.com/in/iliyan-slavov-03478a157/

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.