Extension to the standard mock framework to support support async
Project description
Awaitable mocks for async code.
The package specifically only extends mock and not any other part of unittest.
Installation
Install using pip:
pip install asyncmock
Usage
Async Mock is a drop in replacement for a Mock object eg:
my_mock = AsyncMock()
await my_mock("foo", bar=123)
my_mock.assert_called_with("foo", bar=123)
This also works with nested methods:
my_mock = AsyncMock()
await my_mock.my_method("foo", bar=123)
my_mock.my_method.assert_called_with("foo", bar=123)
Side effects and return values can also be awaited.
Including a non-awaitable item:
my_mock = AsyncMock()
my_mock.my_method.not_async = True
my_mock.my_method("foo", bar=123)
The not_async option can also be provided as an init argument. The not_async argument is not inherited by sub-mocks.
pytest Example
These examples use pytest along with the pytest-asyncio plugin.
Generating an exception:
@pytest.mark.asyncio
async def test_raise_exception():
my_mock = AsyncMock(side_effect=KeyError)
with pytest.raises(KeyError):
await my_mock()
my_mock.assert_called()
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
Built Distribution
File details
Details for the file asyncmock-0.4.2.tar.gz
.
File metadata
- Download URL: asyncmock-0.4.2.tar.gz
- Upload date:
- Size: 3.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.18.4 setuptools/41.4.0 requests-toolbelt/0.8.0 tqdm/4.32.2 CPython/3.6.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c251889d542e98fe5f7ece2b5b8643b7d62b50a5657d34a4cbce8a1d5170d750 |
|
MD5 | 81d051245651fe6f6cbc7b2ecdbc70b5 |
|
BLAKE2b-256 | c858fa6b3147951a8d82cc78e628dffee0aa5838328c52ebfee4e0ddceb5d92b |
File details
Details for the file asyncmock-0.4.2-py3-none-any.whl
.
File metadata
- Download URL: asyncmock-0.4.2-py3-none-any.whl
- Upload date:
- Size: 4.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.18.4 setuptools/41.4.0 requests-toolbelt/0.8.0 tqdm/4.32.2 CPython/3.6.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fd8bc4e7813251a8959d1140924ccba3adbbc7af885dba7047c67f73c0b664b1 |
|
MD5 | 5a288d2806d6b421539ca64a592be721 |
|
BLAKE2b-256 | 03e3873f433eca053c92d3cdb9336a379ee025bc1a86d4624ef87bf97a9ac7bc |