A pseudo-functional API Testing library.
Project description
Assertio
Pseudo-functional Python api testing framework.
Installation
pip install assertio
Basic Usage
Assertio consists on create requests on a chain way, you can organize this requests within a Runner class in order to define test cases.
You can find below an example using the Pokemon API
# main.py
from assertio import Request, Runner
class MyRunner(Runner):
def test_get_pikachu(self):
Request()\
.to("/pokemon/pikachu")\
.with_method("GET")\
.perform()\
.assert_http_ok()\
.assert_response_field("name")\
.equals("pikachu")
MyRunner().start()
This will run all the defined methods within MyRunner
as long as they start
with test
.
Wait, where should I add my API URL? Well you can export an enviromnent variable for that!
$ export ASSERTIO_BASE_URL=https://pokeapi.co/api/v2
Once this environment variable is setup let's start the test!
$ python main.py
Should do the trick!
But that's not it!
Assertio has many assertions defined and is flexible enough to let you define your custom assertions and preconditions.
You can chain as many assertions and preconditions as you want, just remember to keep it simple, if your request chain is 15 lines long, maybe it's time to consider to split it in smaller tests.
Anyway, let's take a look to a more complex example using a POST to a custom API.
Remember to change the ASSERTIO_BASE_URL
environment variable
$ export ASSERTIO_BASE_URL=http://my-books-api-domain/api/v1
And let's try to add a new resource.
# main.py
from assertio import Request, Runner
DEFAULT_HEADERS = {"Content-Type": "application/json"}
BOOK_PAYLOAD = {
"id": 144,
"title": "The Divine Comedy",
"author": {
"id": 12,
"name": "Dante Alighieri",
"nationality": "Italian"
},
"year": 1472
}
class MyRunner(Runner):
def test_create_book(self):
Request()\
.to("/books/")\
.with_method("POST")\
.with_headers(DEFAULT_HEADERS)\
.with_body(BOOK_PAYLOAD)\
.perform()\
.assert_http_created()\
.assert_response_field("author.nationality")\
.equals("Italian")
MyRunner().start()
All the tests must start with test
!
Otherwise start()
method will not run it
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file assertio-1.5.11.tar.gz
.
File metadata
- Download URL: assertio-1.5.11.tar.gz
- Upload date:
- Size: 11.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.14
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0b82f3c3196c73991e87d6bef31f738e71c85d9e3802f5967409b8bd36e8b952 |
|
MD5 | e982ddfc6e4b49cc85455fb9725a82df |
|
BLAKE2b-256 | 34788a6304bcadcd082eba190f26e697b99589d7e1bb3f75d4e157be3bae4566 |
File details
Details for the file assertio-1.5.11-py3-none-any.whl
.
File metadata
- Download URL: assertio-1.5.11-py3-none-any.whl
- Upload date:
- Size: 14.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.14
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d465f1651de89ac8bb0fd65cbf3e2d00c5903a6e4494d81686b3440d2691b2dc |
|
MD5 | ae6f8e6dd52d1ab7d4f687103e6b442f |
|
BLAKE2b-256 | f5d48f796cd2382035f9db50b0ad5aca823d58a2711935fbc606ea2b08e3e4ce |