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 | Provenance | Actions |
|---|---|---|---|---|
| async-responses-1.0.0_2.tar.gz | 5.3 kB | Without provenance | Details for async-responses-1.0.0_2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| async_responses-1.0.0_2-py3-none-any.whl | Details for async_responses-1.0.0_2-py3-none-any.whl |
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
|
Security for async-responses 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.