async def test_request_tracing_exception(loop) -> None: on_request_end = mock.Mock(side_effect=asyncio.coroutine(mock.Mock())) on_request_exception = mock.Mock( side_effect=asyncio.coroutine(mock.Mock())) trace_config = aiohttp.TraceConfig() trace_config.on_request_end.append(on_request_end) trace_config.on_request_exception.append(on_request_exception) with mock.patch("aiohttp.client.TCPConnector.connect") as connect_patched: error = Exception() f = loop.create_future() f.set_exception(error) connect_patched.return_value = f session = aiohttp.ClientSession(loop=loop, trace_configs=[trace_config]) try: await session.get('http://example.com') except Exception: pass on_request_exception.assert_called_once_with( session, mock.ANY, aiohttp.TraceRequestExceptionParams(hdrs.METH_GET, URL("http://example.com"), CIMultiDict(), error)) assert not on_request_end.called
async def test_request_tracing_exception() -> None: on_request_end = mock.Mock(side_effect=make_mocked_coro(mock.Mock())) on_request_exception = mock.Mock(side_effect=make_mocked_coro(mock.Mock())) trace_config = aiohttp.TraceConfig() trace_config.on_request_end.append(on_request_end) trace_config.on_request_exception.append(on_request_exception) with mock.patch("aiohttp.client.TCPConnector.connect") as connect_patched: error = Exception() if sys.version_info >= (3, 8, 1): connect_patched.side_effect = error else: loop = asyncio.get_event_loop() f = loop.create_future() f.set_exception(error) connect_patched.return_value = f session = aiohttp.ClientSession(trace_configs=[trace_config]) try: await session.get("http://example.com") except Exception: pass on_request_exception.assert_called_once_with( session, mock.ANY, aiohttp.TraceRequestExceptionParams( hdrs.METH_GET, URL("http://example.com"), CIMultiDict(), error ), ) assert not on_request_end.called await session.close()