Skip to content

[PR #10910/36a2567 backport][3.11] Remove mocked coro from tests #10912

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CONTRIBUTORS.txt
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,7 @@ Pavol Vargovčík
Pawel Kowalski
Pawel Miech
Pepe Osca
Phebe Polk
Philipp A.
Pierre-Louis Peeters
Pieter van Beek
Expand Down
7 changes: 3 additions & 4 deletions tests/test_client_request.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
_merge_ssl_params,
)
from aiohttp.http import HttpVersion10, HttpVersion11
from aiohttp.test_utils import make_mocked_coro


class WriterMock(mock.AsyncMock):
Expand Down Expand Up @@ -805,7 +804,7 @@ async def test_content_encoding(loop, conn) -> None:
"post", URL("http://python.org/"), data="foo", compress="deflate", loop=loop
)
with mock.patch("aiohttp.client_reqrep.StreamWriter") as m_writer:
m_writer.return_value.write_headers = make_mocked_coro()
m_writer.return_value.write_headers = mock.AsyncMock()
resp = await req.send(conn)
assert req.headers["TRANSFER-ENCODING"] == "chunked"
assert req.headers["CONTENT-ENCODING"] == "deflate"
Expand Down Expand Up @@ -835,7 +834,7 @@ async def test_content_encoding_header(loop, conn) -> None:
loop=loop,
)
with mock.patch("aiohttp.client_reqrep.StreamWriter") as m_writer:
m_writer.return_value.write_headers = make_mocked_coro()
m_writer.return_value.write_headers = mock.AsyncMock()
resp = await req.send(conn)

assert not m_writer.return_value.enable_compression.called
Expand Down Expand Up @@ -885,7 +884,7 @@ async def test_chunked2(loop, conn) -> None:
async def test_chunked_explicit(loop, conn) -> None:
req = ClientRequest("post", URL("http://python.org/"), chunked=True, loop=loop)
with mock.patch("aiohttp.client_reqrep.StreamWriter") as m_writer:
m_writer.return_value.write_headers = make_mocked_coro()
m_writer.return_value.write_headers = mock.AsyncMock()
resp = await req.send(conn)

assert "chunked" == req.headers["TRANSFER-ENCODING"]
Expand Down
3 changes: 1 addition & 2 deletions tests/test_client_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
from aiohttp import ClientSession, http
from aiohttp.client_reqrep import ClientResponse, RequestInfo
from aiohttp.helpers import TimerNoop
from aiohttp.test_utils import make_mocked_coro


class WriterMock(mock.AsyncMock):
Expand Down Expand Up @@ -1104,7 +1103,7 @@ def test_redirect_history_in_exception() -> None:

async def test_response_read_triggers_callback(loop, session) -> None:
trace = mock.Mock()
trace.send_response_chunk_received = make_mocked_coro()
trace.send_response_chunk_received = mock.AsyncMock()
response_method = "get"
response_url = URL("http://def-cl-resp.org")
response_body = b"This is response"
Expand Down
15 changes: 7 additions & 8 deletions tests/test_client_session.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
from aiohttp.helpers import DEBUG
from aiohttp.http import RawResponseMessage
from aiohttp.pytest_plugin import AiohttpServer
from aiohttp.test_utils import make_mocked_coro
from aiohttp.tracing import Trace


Expand Down Expand Up @@ -738,10 +737,10 @@ async def handler(request: web.Request) -> web.Response:
trace_config_ctx = mock.Mock()
trace_request_ctx = {}
body = "This is request body"
gathered_req_headers = CIMultiDict()
on_request_start = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
on_request_redirect = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
on_request_end = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
gathered_req_headers: CIMultiDict[str] = CIMultiDict()
on_request_start = mock.AsyncMock()
on_request_redirect = mock.AsyncMock()
on_request_end = mock.AsyncMock()

with io.BytesIO() as gathered_req_body, io.BytesIO() as gathered_res_body:

Expand Down Expand Up @@ -809,7 +808,7 @@ async def redirect_handler(request):
app.router.add_get("/", root_handler)
app.router.add_get("/redirect", redirect_handler)

mocks = [mock.Mock(side_effect=make_mocked_coro(mock.Mock())) for _ in range(7)]
mocks = [mock.AsyncMock() for _ in range(7)]
(
on_request_start,
on_request_redirect,
Expand Down Expand Up @@ -900,8 +899,8 @@ def to_url(path: str) -> URL:

async def test_request_tracing_exception() -> None:
loop = asyncio.get_event_loop()
on_request_end = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
on_request_exception = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
on_request_end = mock.AsyncMock()
on_request_exception = mock.AsyncMock()

trace_config = aiohttp.TraceConfig()
trace_config.on_request_end.append(on_request_end)
Expand Down
9 changes: 4 additions & 5 deletions tests/test_client_ws.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
from aiohttp import ClientConnectionResetError, ServerDisconnectedError, client, hdrs
from aiohttp.http import WS_KEY
from aiohttp.streams import EofStream
from aiohttp.test_utils import make_mocked_coro


async def test_ws_connect(ws_key: Any, loop: Any, key_data: Any) -> None:
Expand Down Expand Up @@ -352,7 +351,7 @@ async def test_close(loop, ws_key, key_data) -> None:
m_req.return_value.set_result(resp)
writer = mock.Mock()
WebSocketWriter.return_value = writer
writer.close = make_mocked_coro()
writer.close = mock.AsyncMock()

session = aiohttp.ClientSession(loop=loop)
resp = await session.ws_connect("http://test.org")
Expand Down Expand Up @@ -461,7 +460,7 @@ async def test_close_exc(
m_req.return_value.set_result(mresp)
writer = mock.Mock()
WebSocketWriter.return_value = writer
writer.close = make_mocked_coro()
writer.close = mock.AsyncMock()

session = aiohttp.ClientSession(loop=loop)
resp = await session.ws_connect("http://test.org")
Expand Down Expand Up @@ -595,7 +594,7 @@ async def test_reader_read_exception(ws_key, key_data, loop) -> None:

writer = mock.Mock()
WebSocketWriter.return_value = writer
writer.close = make_mocked_coro()
writer.close = mock.AsyncMock()

session = aiohttp.ClientSession(loop=loop)
resp = await session.ws_connect("http://test.org")
Expand Down Expand Up @@ -731,7 +730,7 @@ async def test_ws_connect_deflate_per_message(loop, ws_key, key_data) -> None:
m_req.return_value = loop.create_future()
m_req.return_value.set_result(resp)
writer = WebSocketWriter.return_value = mock.Mock()
send_frame = writer.send_frame = make_mocked_coro()
send_frame = writer.send_frame = mock.AsyncMock()

session = aiohttp.ClientSession(loop=loop)
resp = await session.ws_connect("http://test.org")
Expand Down
51 changes: 27 additions & 24 deletions tests/test_connector.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
_DNSCacheTable,
)
from aiohttp.resolver import ResolveResult
from aiohttp.test_utils import make_mocked_coro, unused_port
from aiohttp.test_utils import unused_port
from aiohttp.tracing import Trace


Expand Down Expand Up @@ -1337,10 +1337,10 @@ def exception_handler(loop, context):
async def test_tcp_connector_dns_tracing(loop, dns_response) -> None:
session = mock.Mock()
trace_config_ctx = mock.Mock()
on_dns_resolvehost_start = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
on_dns_resolvehost_end = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
on_dns_cache_hit = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
on_dns_cache_miss = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
on_dns_resolvehost_start = mock.AsyncMock()
on_dns_resolvehost_end = mock.AsyncMock()
on_dns_cache_hit = mock.AsyncMock()
on_dns_cache_miss = mock.AsyncMock()

trace_config = aiohttp.TraceConfig(
trace_config_ctx_factory=mock.Mock(return_value=trace_config_ctx)
Expand Down Expand Up @@ -1382,8 +1382,8 @@ async def test_tcp_connector_dns_tracing(loop, dns_response) -> None:
async def test_tcp_connector_dns_tracing_cache_disabled(loop, dns_response) -> None:
session = mock.Mock()
trace_config_ctx = mock.Mock()
on_dns_resolvehost_start = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
on_dns_resolvehost_end = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
on_dns_resolvehost_start = mock.AsyncMock()
on_dns_resolvehost_end = mock.AsyncMock()

trace_config = aiohttp.TraceConfig(
trace_config_ctx_factory=mock.Mock(return_value=trace_config_ctx)
Expand Down Expand Up @@ -1437,8 +1437,8 @@ async def test_tcp_connector_dns_tracing_cache_disabled(loop, dns_response) -> N
async def test_tcp_connector_dns_tracing_throttle_requests(loop, dns_response) -> None:
session = mock.Mock()
trace_config_ctx = mock.Mock()
on_dns_cache_hit = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
on_dns_cache_miss = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
on_dns_cache_hit = mock.AsyncMock()
on_dns_cache_miss = mock.AsyncMock()

trace_config = aiohttp.TraceConfig(
trace_config_ctx_factory=mock.Mock(return_value=trace_config_ctx)
Expand Down Expand Up @@ -1467,8 +1467,8 @@ async def test_tcp_connector_dns_tracing_throttle_requests(loop, dns_response) -

async def test_dns_error(loop) -> None:
connector = aiohttp.TCPConnector(loop=loop)
connector._resolve_host = make_mocked_coro(
raise_exception=OSError("dont take it serious")
connector._resolve_host = mock.AsyncMock(
side_effect=OSError("dont take it serious")
)

req = ClientRequest("GET", URL("http://www.python.org"), loop=loop)
Expand Down Expand Up @@ -1567,8 +1567,8 @@ async def test_connect(loop, key) -> None:
async def test_connect_tracing(loop) -> None:
session = mock.Mock()
trace_config_ctx = mock.Mock()
on_connection_create_start = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
on_connection_create_end = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
on_connection_create_start = mock.AsyncMock()
on_connection_create_end = mock.AsyncMock()

trace_config = aiohttp.TraceConfig(
trace_config_ctx_factory=mock.Mock(return_value=trace_config_ctx)
Expand Down Expand Up @@ -2563,8 +2563,8 @@ async def f():
async def test_connect_queued_operation_tracing(loop, key) -> None:
session = mock.Mock()
trace_config_ctx = mock.Mock()
on_connection_queued_start = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
on_connection_queued_end = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
on_connection_queued_start = mock.AsyncMock()
on_connection_queued_end = mock.AsyncMock()

trace_config = aiohttp.TraceConfig(
trace_config_ctx_factory=mock.Mock(return_value=trace_config_ctx)
Expand Down Expand Up @@ -2609,7 +2609,7 @@ async def f():
async def test_connect_reuseconn_tracing(loop, key) -> None:
session = mock.Mock()
trace_config_ctx = mock.Mock()
on_connection_reuseconn = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
on_connection_reuseconn = mock.AsyncMock()

trace_config = aiohttp.TraceConfig(
trace_config_ctx_factory=mock.Mock(return_value=trace_config_ctx)
Expand Down Expand Up @@ -3101,9 +3101,10 @@ async def test_unix_connector_not_found(loop) -> None:


@pytest.mark.skipif(not hasattr(socket, "AF_UNIX"), reason="requires UNIX sockets")
async def test_unix_connector_permission(loop) -> None:
loop.create_unix_connection = make_mocked_coro(raise_exception=PermissionError())
connector = aiohttp.UnixConnector("/" + uuid.uuid4().hex, loop=loop)
async def test_unix_connector_permission(loop: asyncio.AbstractEventLoop) -> None:
m = mock.AsyncMock(side_effect=PermissionError())
with mock.patch.object(loop, "create_unix_connection", m):
connector = aiohttp.UnixConnector("/" + uuid.uuid4().hex)

req = ClientRequest("GET", URL("http://www.python.org"), loop=loop)
with pytest.raises(aiohttp.ClientConnectorError):
Expand Down Expand Up @@ -3132,11 +3133,13 @@ async def test_named_pipe_connector_not_found(proactor_loop, pipe_name) -> None:
@pytest.mark.skipif(
platform.system() != "Windows", reason="Proactor Event loop present only in Windows"
)
async def test_named_pipe_connector_permission(proactor_loop, pipe_name) -> None:
proactor_loop.create_pipe_connection = make_mocked_coro(
raise_exception=PermissionError()
)
connector = aiohttp.NamedPipeConnector(pipe_name, loop=proactor_loop)
async def test_named_pipe_connector_permission(
proactor_loop: asyncio.AbstractEventLoop, pipe_name: str
) -> None:
m = mock.AsyncMock(side_effect=PermissionError())
with mock.patch.object(proactor_loop, "create_pipe_connection", m):
asyncio.set_event_loop(proactor_loop)
connector = aiohttp.NamedPipeConnector(pipe_name)

req = ClientRequest("GET", URL("http://www.python.org"), loop=proactor_loop)
with pytest.raises(aiohttp.ClientConnectorError):
Expand Down
21 changes: 14 additions & 7 deletions tests/test_http_writer.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
from aiohttp import ClientConnectionResetError, hdrs, http
from aiohttp.base_protocol import BaseProtocol
from aiohttp.http_writer import _serialize_headers
from aiohttp.test_utils import make_mocked_coro


@pytest.fixture
Expand Down Expand Up @@ -57,7 +56,7 @@ def writelines(chunks: Iterable[bytes]) -> None:
@pytest.fixture
def protocol(loop, transport):
protocol = mock.Mock(transport=transport)
protocol._drain_helper = make_mocked_coro()
protocol._drain_helper = mock.AsyncMock()
return protocol


Expand Down Expand Up @@ -443,7 +442,7 @@ async def test_write_payload_slicing_long_memoryview(buf, protocol, transport, l

async def test_write_drain(protocol, transport, loop) -> None:
msg = http.StreamWriter(protocol, loop)
msg.drain = make_mocked_coro()
msg.drain = mock.AsyncMock()
await msg.write(b"1" * (64 * 1024 * 2), drain=False)
assert not msg.drain.called

Expand All @@ -452,17 +451,25 @@ async def test_write_drain(protocol, transport, loop) -> None:
assert msg.buffer_size == 0


async def test_write_calls_callback(protocol, transport, loop) -> None:
on_chunk_sent = make_mocked_coro()
async def test_write_calls_callback(
protocol: BaseProtocol,
transport: asyncio.Transport,
loop: asyncio.AbstractEventLoop,
) -> None:
on_chunk_sent = mock.AsyncMock()
msg = http.StreamWriter(protocol, loop, on_chunk_sent=on_chunk_sent)
chunk = b"1"
await msg.write(chunk)
assert on_chunk_sent.called
assert on_chunk_sent.call_args == mock.call(chunk)


async def test_write_eof_calls_callback(protocol, transport, loop) -> None:
on_chunk_sent = make_mocked_coro()
async def test_write_eof_calls_callback(
protocol: BaseProtocol,
transport: asyncio.Transport,
loop: asyncio.AbstractEventLoop,
) -> None:
on_chunk_sent = mock.AsyncMock()
msg = http.StreamWriter(protocol, loop, on_chunk_sent=on_chunk_sent)
chunk = b"1"
await msg.write_eof(chunk=chunk)
Expand Down
9 changes: 4 additions & 5 deletions tests/test_multipart.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
from aiohttp.helpers import parse_mimetype
from aiohttp.multipart import MultipartResponseWrapper
from aiohttp.streams import StreamReader
from aiohttp.test_utils import make_mocked_coro

BOUNDARY = b"--:"

Expand Down Expand Up @@ -97,21 +96,21 @@ def test_at_eof(self) -> None:

async def test_next(self) -> None:
wrapper = MultipartResponseWrapper(mock.Mock(), mock.Mock())
wrapper.stream.next = make_mocked_coro(b"")
wrapper.stream.next = mock.AsyncMock(b"")
wrapper.stream.at_eof.return_value = False
await wrapper.next()
assert wrapper.stream.next.called

async def test_release(self) -> None:
wrapper = MultipartResponseWrapper(mock.Mock(), mock.Mock())
wrapper.resp.release = make_mocked_coro(None)
wrapper.resp.release = mock.AsyncMock(None)
await wrapper.release()
assert wrapper.resp.release.called

async def test_release_when_stream_at_eof(self) -> None:
wrapper = MultipartResponseWrapper(mock.Mock(), mock.Mock())
wrapper.resp.release = make_mocked_coro(None)
wrapper.stream.next = make_mocked_coro(b"")
wrapper.resp.release = mock.AsyncMock(None)
wrapper.stream.next = mock.AsyncMock(b"")
wrapper.stream.at_eof.return_value = True
await wrapper.next()
assert wrapper.stream.next.called
Expand Down
Loading
Loading