Skip to main content

Asynchronously make and validate requests!

Project description

Quickbolt

Asynchronously make and validate requests!

This was forked from api-automation-tools.

Installation

$ pip install quickbolt

Usage

Pytest

The CorePytestBase loads json files from credentials and data folders during setup. Validations and reporting are performed during the teardown.

Async requests with aiohttp or httpx

Make single or batched style async requests using aiohttp or httpx. Each request method call will generate a csv containing useful data about the request(s). The usual request arguments of aiohttp and httpx are supported.

There's a nifty function called generate_batch that'll intake valid (200 type) request information and return a list of corruptions for execution.

from quickbolt.clients import AioRequests, HttpxRequests

aiohttp_requests = AioRequests()
httpx_requests = HttpxRequests()

batch = {'method': 'get', 'headers': {...}, 'url': '...'}
response = aiohttp_requests.request(batch)
response = httpx_requests.request(batch)

or

batch = [{'method': 'get', 'headers': {...}, 'url': '...'}, {...}, ...]
responses = aiohttp_requests.request(batch)
responses = httpx_requests.request(batch)

or 

from quickbolt.batch_generation import generate_batch

batch = generate_batch("get", ...)
responses = aiohttp_requests.request(batch)
responses = httpx_requests.request(batch)

Note: Both clients have an awaitable request method called async_request e.g. await aiohttp_requests.async_request(...) or await httpx_requests.async_request(...).

Note: You can indicate where the batch generator will start looking for path parameters by placing a semicolon (;) where the path parameters start (before a /) e.g. https://httpbin.org/get;/param/value.

Validations

After each request, a scrubbed copy of the csv history of the execution will be generated. This file (or the original) can be used to validate against executions over time. These files will have the same name as the running test, just with the csv extenstion instead. Any mismatches can be raised as errors and are reported in a separate csv. Historical csv files to be used as reference can be stored in a validations folder at the root level.

from quickbolt.validations import Validations

...requests were made and csv files were generated...

validations = Validations()
mismatches = await validations.validate_references(actual_refs={...})
mismatches => 
[
    {
        "values": [{"key": "ACTUAL_CODE", "d1": "404", "d2": "999"}, ...],
        "keys": [...],
        "skipped_keys": [...],
        "actual_refs": {...},
        "expected_refs": {...},
        "unscrubbed_refs": {...},
    },
    {...},
]

Examples

An example of a test - test_get.py

An example of a base class showing a setup and teardown - some_pytest_base.py

An example of the scrubbed csv report file generated from running the test - get_scrubbed.csv

Project structure

This package requires the following base structure for the project.

.
├── credentials                         # Optional - credentials
│   └── credentials.json                # Optional - credentials as json
├── tests                               # Required - test files
│   ├── data                            # Optional - test data
│   │   └── data.json                   # Optional - test data as json
│   └── test_some_request.py            # Required - pytest test
└── validations                         # Optional - validation data
    └── some_request.json               # Optional - validation data as json. the validation files 
                                                     directory structure must match the structure of the tests in the tests folder.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

quickbolt-0.2.0.tar.gz (21.0 kB view details)

Uploaded Source

Built Distribution

quickbolt-0.2.0-py3-none-any.whl (26.0 kB view details)

Uploaded Python 3

File details

Details for the file quickbolt-0.2.0.tar.gz.

File metadata

  • Download URL: quickbolt-0.2.0.tar.gz
  • Upload date:
  • Size: 21.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.11.4 Linux/5.15.49-linuxkit-pr

File hashes

Hashes for quickbolt-0.2.0.tar.gz
Algorithm Hash digest
SHA256 a2a272e3b7d8aff46eabcb5cdc59f36a3127d9559a4fbcf42d3a24579e30a3f1
MD5 b03c1118491a6e1b6ad47623a7ae8623
BLAKE2b-256 e387f4a37384845e935b02d94798fa22dd6a7228110780fe462057e2b67ff0fc

See more details on using hashes here.

File details

Details for the file quickbolt-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: quickbolt-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 26.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.11.4 Linux/5.15.49-linuxkit-pr

File hashes

Hashes for quickbolt-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 248e7f319cc5c04c0333295d4f52187009fc41554e5f1f9868df105f2dc00ee5
MD5 4d0d6ecb45d5fbfacfe8047d4268df83
BLAKE2b-256 d68fa41cc847d0c88f7963c9a3ecee23817d239bd30d65cf961bf72200e28b4a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page