Exemplo n.º 1
0
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()