Async Responses
Async Responses is a library providing an easy way to mock aiohttp responses inspired by aioresponses.
Installation
Library is available on PyPi, you can simply install it using pip.
$ pip install async-responses
Usage
As an instance
ar = AsyncResponses()
ar.get(...)
As a context manager
with AsyncResponses() as ar:
ar.get(...)
With dict as handler
Passing dict as handler argument to async-responses would result in it being
returned as a JSON payload.
import aiohttp
from async_responses import AsyncResponses
async def test_response():
ar = AsyncResponses()
payload = {'status': 'ok'}
ar.get('http://mock.url', '/v1/status', handler=payload)
async with aiohttp.ClientSession() as session:
response = await session.get('http://mock.url/v1/status')
assert await response.json() == payload
With exception as handler
Calling Async Responses with an exception as handler argument would result in
it being raised.
import aiohttp
from async_responses import AsyncResponses
import pytest
async def test_response():
ar = AsyncResponses()
ar.get('http://mock.url', '/v1/status', handler=ZeroDivisionError)
with pytest.raises(ZeroDivisionError):
async with aiohttp.ClientSession() as session:
await session.get('http://mock.url/v1/status')
With string as handler
import aiohttp
from async_responses import AsyncResponses
async def test_response():
ar = AsyncResponses()
payload = 'ok'
ar.get('http://mock.url', '/v1/status', handler=payload)
async with aiohttp.ClientSession() as session:
response = await session.get('http://mock.url/v1/status')
assert await response.text() == payload
With callable as handler
import aiohttp
from async_responses import AsyncResponses
async def test_response():
def handler(data, **kwargs):
return {'status': 'ok'}
ar = AsyncResponses()
ar.get('http://mock.url', '/v1/status', handler=payload)
async with aiohttp.ClientSession() as session:
response = await session.get('http://mock.url/v1/status')
assert await response.json() == {'status': 'ok'}
With a custom status code
import aiohttp
from async_responses import AsyncResponses
async def test_response():
payload = {'status': 'not good'}
ar = AsyncResponses()
ar.get('http://mock.url', '/v1/status', handler=payload, status=500)
async with aiohttp.ClientSession() as session:
response = await session.get('http://mock.url/v1/status')
assert response.status == 500
assert await response.json() == payload
With a custom response class
async-responses will make use of a response class passed as an argument to ClientSession, so you can use things like custom JSON serializer.
import aiohttp
async def test_response():
class CustomResponse(aiohttp.ClientResponse):
async def json(self, *args, **kwargs):
return {'hello': 'world'}
ar = AsyncResponses()
ar.get('http://mock.url', '/v1/status', handler='')
async with aiohttp.ClientSession(response_class=CustomResponse) as session:
response = await session.get('http://mock.url/v1/status')
assert await response.json() == {'hello': 'world'}
assert isinstance(response, CustomResponse)
Metadata
Release files for async-responses 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| async-responses-1.0.0_2.tar.gz | 5.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| async_responses-1.0.0_2-py3-none-any.whl | Details |
Total release size: 10.7 kB
Release files / async-responses-1.0.0_2.tar.gz
| Download URL | async-responses-1.0.0_2.tar.gz |
|---|---|
| Size | 5.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7669ea9765aba429406f61ec196b7cf016448e1285dc3adb8431d7182ce92055
|
|
BLAKE2b-256 checksum How to use checksums |
f34d42303987b6c9a9e861d1d9b219289cc61e387613dd84af2f0228ab0a29a4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/40.8.0 requests-toolbelt/0.8.0 tqdm/4.44.1 CPython/3.7.4
|
Release files / async_responses-1.0.0_2-py3-none-any.whl
| Download URL | async_responses-1.0.0_2-py3-none-any.whl |
|---|---|
| Size | 5.3 kB |
|
SHA-256 checksum How to use checksums |
e6c9fe6f38b634c63eb79b6148a31e9a852f0ab77790d7549205aa89fa7f90a7
|
|
BLAKE2b-256 checksum How to use checksums |
2446ab394d59d743220a681b77d231b3daee055af4200bc795ff124531bf017f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/40.8.0 requests-toolbelt/0.8.0 tqdm/4.44.1 CPython/3.7.4
|