Extension to the standard mock framework to support support async
Awaitable mocks for async code.
The package specifically only extends mock and not any other part of unittest.
Install using pip:
pip install asyncmock
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.
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()
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
asyncmock-0.4.2.tar.gz (3.2 kB view hashes)
Hashes for asyncmock-0.4.2-py3-none-any.whl