pyhttptest: HTTP tests over RESTful APIs✨
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.
- WARNING
⚠️ - The project is in search of any kind of contributor. Due to my commitment to managing many other projects, still pyhttptest lacking introducing features requested from users. The project has a lot of potentials to be useful and used on a daily basis. Glad to receive any help and discuss the future of pyhttptest. Contact me by email: [email protected].
📣 Coverage measuring on Test Cases coming soon
Installation
Recommended installation method is to use pip
:
$ pip install pyhttptest
Python version 3+ is required.
Usage
$ 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
{
"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:
$ pyhttptest execute FILE_PATH/HTTP_GET.json
Result:
Мultiple test cases
Create a .json file and define a test cases like an example:
FILE: requests.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:
$ pyhttptest execute FILE_PATH/requests.json
Result:
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.