Skip to main content

wrapAPI

Requests wrapper for API testing

Usage

conftest

conftest.py

import pytest

from wrapapi import Application, Settings


@pytest.fixture(scope='session')
def settings() -> Settings:
    config = Settings()
    config.base_url = 'http://localhost:5555'
    config.headers['Autorization'] = 'Basic secret'
    return config


@pytest.fixture(scope='session')
def client(settings) -> Application:
    app = Application(settings)
    client = app.create()
    yield client
    client.close()


@pytest.fixture(scope='function')
def app(client) -> Application:
    yield client
    client.report.build()

tests with pytest fixture

def test_main(app):
    response = app.get('/api/main', status=200)
    response.json.should.be.is_instance(list)


def test_main_item(app):
    response = app.get('/api/main/666', status=200)
    response.json.should.be.equal({'id': 666, 'name': 'test'})

TestCase

with TestSuite

from wrapapi import TestSuite


class TestExample(TestSuite):

    def test_main(self):
        response = self.app.get('/api/main', status=200)
        response.json.should.be.is_instance(list)

    def test_main_item(self):
        response = self.app.get('/api/main/666', status=200)
        response.json.should.be.equal({'id': 666, 'name': 'test'})

AssertionErrors

If we have any errors, raise exception with full request data:

E           AssertionError: 
E           ===========================================================
E           GET: http://localhost:5555/api/main/666
E           -----------------------------------------------------------
E               Status: 200
E               Body: None
E               Headers: {'Date': 'Wed, 27 Mar 2019 12:17:48 GMT', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Content-Length': '51'....}
E           ===========================================================
E           Not equal: {'id': 666, 'name': 'test'} == {'id': 1, 'name': 'test'}
E                -> expected: {'id': 666, 'name': 'test'}
E                -> current: {'id': 1, 'name': 'test'}

Release files for wrapAPI 0.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wrapAPI 0.0.1
File Size Uploaded
wrapAPI-0.0.1.tar.gz 6.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for wrapAPI 0.0.1
File Interpreter ABI Platform
wrapAPI-0.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 15.9 kB

Release files / wrapAPI-0.0.1.tar.gz

Download URL wrapAPI-0.0.1.tar.gz
Size 6.7 kB
Tags Source
SHA-256 checksum
How to use checksums
fac82fae31a38df6d21d4b403188918a107d9a6c395e71c9ee165e620e04a369
BLAKE2b-256 checksum
How to use checksums
a50519a251c4fbfee36323cd958ab17849eb6545bd91941ace946030589c2611
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/39.1.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

Release files / wrapAPI-0.0.1-py3-none-any.whl

Download URL wrapAPI-0.0.1-py3-none-any.whl
Size 9.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
30566d70b37a29e089636016e304dc4f6669704d616c21feaba3eb474fcbbbd7
BLAKE2b-256 checksum
How to use checksums
ca84bf5ef92950b84cfc344b0c50e5cc56a11e1e8a3deb0b3707187ca9527b6e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/39.1.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

Release history Release notifications | RSS feed

This release

0.0.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page