10
10
from ..conftest import FORMED_DEVICES , CoroutineMock
11
11
12
12
13
- def awaitable_mock (return_value ):
13
+ def awaitable_mock (* , return_value = None , side_effect = None ):
14
+ assert (return_value or side_effect ) and not (return_value and side_effect )
15
+
14
16
mock_called = asyncio .get_running_loop ().create_future ()
15
17
16
- def side_effect (* args , ** kwargs ):
18
+ def side_effect_ (* args , ** kwargs ):
17
19
mock_called .set_result ((args , kwargs ))
18
20
19
- return return_value
21
+ if return_value is not None :
22
+ return return_value
23
+ else :
24
+ raise side_effect
20
25
21
- return mock_called , CoroutineMock (side_effect = side_effect )
26
+ return mock_called , CoroutineMock (side_effect = side_effect_ )
22
27
23
28
24
29
@pytest .mark .parametrize ("device" , FORMED_DEVICES )
@@ -45,7 +50,7 @@ async def test_on_zdo_relays_message_callback_unknown(
45
50
app , znp_server = make_application (server_cls = device )
46
51
await app .startup (auto_form = False )
47
52
48
- discover_called , discover_mock = awaitable_mock (return_value = None )
53
+ discover_called , discover_mock = awaitable_mock (side_effect = KeyError () )
49
54
mocker .patch .object (app , "_get_or_discover_device" , new = discover_mock )
50
55
51
56
caplog .set_level (logging .WARNING )
@@ -183,7 +188,7 @@ async def test_on_af_message_callback(device, make_application, mocker):
183
188
app .get_device .reset_mock ()
184
189
185
190
# Message from an unknown device
186
- discover_called , discover_mock = awaitable_mock (return_value = None )
191
+ discover_called , discover_mock = awaitable_mock (side_effect = KeyError () )
187
192
mocker .patch .object (app , "_get_or_discover_device" , new = discover_mock )
188
193
189
194
znp_server .send (af_message )
0 commit comments