-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_async_mocks.py
50 lines (29 loc) · 1.02 KB
/
test_async_mocks.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
"""
Example of how to test `Commands`_ in async-style code.
.. _`Commands`: https://martinfowler.com/bliki/CQRS.html
"""
import asyncio
from unittest import mock
import pytest
async def foo(awaitable, *args, **kwargs):
await awaitable(*args, **kwargs)
# NOTE: all three options are working. Which is better - I don't know...
@pytest.mark.asyncio
async def test_foo():
dep = mock.AsyncMock()
await foo(dep, 'spam', 42, a='eggs', b=4242)
assert dep.called
assert dep.call_args == mock.call('spam', 42, a='eggs', b=4242)
assert dep.awaited
def test_foo1():
dep = mock.AsyncMock()
asyncio.run(foo(dep, 'spam', 42, a='eggs', b=4242), debug=True)
assert dep.called
assert dep.call_args == mock.call('spam', 42, a='eggs', b=4242)
assert dep.awaited
def test_foo2(event_loop):
dep = mock.AsyncMock()
event_loop.run_until_complete(foo(dep, 'spam', 42, a='eggs', b=4242))
assert dep.called
assert dep.call_args == mock.call('spam', 42, a='eggs', b=4242)
assert dep.awaited