Skip to content

Commit 761a16c

Browse files
authored
[PR #10910/36a2567 backport][3.12] Remove mocked coro from tests (#10914)
1 parent a61fcc6 commit 761a16c

18 files changed

+202
-191
lines changed

CONTRIBUTORS.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,7 @@ Pavol Vargovčík
287287
Pawel Kowalski
288288
Pawel Miech
289289
Pepe Osca
290+
Phebe Polk
290291
Philipp A.
291292
Pierre-Louis Peeters
292293
Pieter van Beek

tests/test_client_request.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
)
2525
from aiohttp.compression_utils import ZLibBackend
2626
from aiohttp.http import HttpVersion10, HttpVersion11
27-
from aiohttp.test_utils import make_mocked_coro
2827

2928

3029
class WriterMock(mock.AsyncMock):
@@ -806,7 +805,7 @@ async def test_content_encoding(loop, conn) -> None:
806805
"post", URL("http://python.org/"), data="foo", compress="deflate", loop=loop
807806
)
808807
with mock.patch("aiohttp.client_reqrep.StreamWriter") as m_writer:
809-
m_writer.return_value.write_headers = make_mocked_coro()
808+
m_writer.return_value.write_headers = mock.AsyncMock()
810809
resp = await req.send(conn)
811810
assert req.headers["TRANSFER-ENCODING"] == "chunked"
812811
assert req.headers["CONTENT-ENCODING"] == "deflate"
@@ -837,7 +836,7 @@ async def test_content_encoding_header(loop, conn) -> None:
837836
loop=loop,
838837
)
839838
with mock.patch("aiohttp.client_reqrep.StreamWriter") as m_writer:
840-
m_writer.return_value.write_headers = make_mocked_coro()
839+
m_writer.return_value.write_headers = mock.AsyncMock()
841840
resp = await req.send(conn)
842841

843842
assert not m_writer.return_value.enable_compression.called
@@ -887,7 +886,7 @@ async def test_chunked2(loop, conn) -> None:
887886
async def test_chunked_explicit(loop, conn) -> None:
888887
req = ClientRequest("post", URL("http://python.org/"), chunked=True, loop=loop)
889888
with mock.patch("aiohttp.client_reqrep.StreamWriter") as m_writer:
890-
m_writer.return_value.write_headers = make_mocked_coro()
889+
m_writer.return_value.write_headers = mock.AsyncMock()
891890
resp = await req.send(conn)
892891

893892
assert "chunked" == req.headers["TRANSFER-ENCODING"]

tests/test_client_response.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
from aiohttp import ClientSession, http
1515
from aiohttp.client_reqrep import ClientResponse, RequestInfo
1616
from aiohttp.helpers import TimerNoop
17-
from aiohttp.test_utils import make_mocked_coro
1817

1918

2019
class WriterMock(mock.AsyncMock):
@@ -1104,7 +1103,7 @@ def test_redirect_history_in_exception() -> None:
11041103

11051104
async def test_response_read_triggers_callback(loop, session) -> None:
11061105
trace = mock.Mock()
1107-
trace.send_response_chunk_received = make_mocked_coro()
1106+
trace.send_response_chunk_received = mock.AsyncMock()
11081107
response_method = "get"
11091108
response_url = URL("http://def-cl-resp.org")
11101109
response_body = b"This is response"

tests/test_client_session.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
from aiohttp.helpers import DEBUG
2424
from aiohttp.http import RawResponseMessage
2525
from aiohttp.pytest_plugin import AiohttpServer
26-
from aiohttp.test_utils import make_mocked_coro
2726
from aiohttp.tracing import Trace
2827

2928

@@ -738,10 +737,10 @@ async def handler(request: web.Request) -> web.Response:
738737
trace_config_ctx = mock.Mock()
739738
trace_request_ctx = {}
740739
body = "This is request body"
741-
gathered_req_headers = CIMultiDict()
742-
on_request_start = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
743-
on_request_redirect = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
744-
on_request_end = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
740+
gathered_req_headers: CIMultiDict[str] = CIMultiDict()
741+
on_request_start = mock.AsyncMock()
742+
on_request_redirect = mock.AsyncMock()
743+
on_request_end = mock.AsyncMock()
745744

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

@@ -809,7 +808,7 @@ async def redirect_handler(request):
809808
app.router.add_get("/", root_handler)
810809
app.router.add_get("/redirect", redirect_handler)
811810

812-
mocks = [mock.Mock(side_effect=make_mocked_coro(mock.Mock())) for _ in range(7)]
811+
mocks = [mock.AsyncMock() for _ in range(7)]
813812
(
814813
on_request_start,
815814
on_request_redirect,
@@ -900,8 +899,8 @@ def to_url(path: str) -> URL:
900899

901900
async def test_request_tracing_exception() -> None:
902901
loop = asyncio.get_event_loop()
903-
on_request_end = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
904-
on_request_exception = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
902+
on_request_end = mock.AsyncMock()
903+
on_request_exception = mock.AsyncMock()
905904

906905
trace_config = aiohttp.TraceConfig()
907906
trace_config.on_request_end.append(on_request_end)

tests/test_client_ws.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
from aiohttp import ClientConnectionResetError, ServerDisconnectedError, client, hdrs
1212
from aiohttp.http import WS_KEY
1313
from aiohttp.streams import EofStream
14-
from aiohttp.test_utils import make_mocked_coro
1514

1615

1716
async def test_ws_connect(ws_key: Any, loop: Any, key_data: Any) -> None:
@@ -352,7 +351,7 @@ async def test_close(loop, ws_key, key_data) -> None:
352351
m_req.return_value.set_result(resp)
353352
writer = mock.Mock()
354353
WebSocketWriter.return_value = writer
355-
writer.close = make_mocked_coro()
354+
writer.close = mock.AsyncMock()
356355

357356
session = aiohttp.ClientSession(loop=loop)
358357
resp = await session.ws_connect("http://test.org")
@@ -461,7 +460,7 @@ async def test_close_exc(
461460
m_req.return_value.set_result(mresp)
462461
writer = mock.Mock()
463462
WebSocketWriter.return_value = writer
464-
writer.close = make_mocked_coro()
463+
writer.close = mock.AsyncMock()
465464

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

596595
writer = mock.Mock()
597596
WebSocketWriter.return_value = writer
598-
writer.close = make_mocked_coro()
597+
writer.close = mock.AsyncMock()
599598

600599
session = aiohttp.ClientSession(loop=loop)
601600
resp = await session.ws_connect("http://test.org")
@@ -731,7 +730,7 @@ async def test_ws_connect_deflate_per_message(loop, ws_key, key_data) -> None:
731730
m_req.return_value = loop.create_future()
732731
m_req.return_value.set_result(resp)
733732
writer = WebSocketWriter.return_value = mock.Mock()
734-
send_frame = writer.send_frame = make_mocked_coro()
733+
send_frame = writer.send_frame = mock.AsyncMock()
735734

736735
session = aiohttp.ClientSession(loop=loop)
737736
resp = await session.ws_connect("http://test.org")

tests/test_connector.py

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
_DNSCacheTable,
4242
)
4343
from aiohttp.resolver import ResolveResult
44-
from aiohttp.test_utils import make_mocked_coro, unused_port
44+
from aiohttp.test_utils import unused_port
4545
from aiohttp.tracing import Trace
4646

4747

@@ -1347,10 +1347,10 @@ def exception_handler(loop, context):
13471347
async def test_tcp_connector_dns_tracing(loop, dns_response) -> None:
13481348
session = mock.Mock()
13491349
trace_config_ctx = mock.Mock()
1350-
on_dns_resolvehost_start = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
1351-
on_dns_resolvehost_end = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
1352-
on_dns_cache_hit = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
1353-
on_dns_cache_miss = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
1350+
on_dns_resolvehost_start = mock.AsyncMock()
1351+
on_dns_resolvehost_end = mock.AsyncMock()
1352+
on_dns_cache_hit = mock.AsyncMock()
1353+
on_dns_cache_miss = mock.AsyncMock()
13541354

13551355
trace_config = aiohttp.TraceConfig(
13561356
trace_config_ctx_factory=mock.Mock(return_value=trace_config_ctx)
@@ -1392,8 +1392,8 @@ async def test_tcp_connector_dns_tracing(loop, dns_response) -> None:
13921392
async def test_tcp_connector_dns_tracing_cache_disabled(loop, dns_response) -> None:
13931393
session = mock.Mock()
13941394
trace_config_ctx = mock.Mock()
1395-
on_dns_resolvehost_start = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
1396-
on_dns_resolvehost_end = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
1395+
on_dns_resolvehost_start = mock.AsyncMock()
1396+
on_dns_resolvehost_end = mock.AsyncMock()
13971397

13981398
trace_config = aiohttp.TraceConfig(
13991399
trace_config_ctx_factory=mock.Mock(return_value=trace_config_ctx)
@@ -1447,8 +1447,8 @@ async def test_tcp_connector_dns_tracing_cache_disabled(loop, dns_response) -> N
14471447
async def test_tcp_connector_dns_tracing_throttle_requests(loop, dns_response) -> None:
14481448
session = mock.Mock()
14491449
trace_config_ctx = mock.Mock()
1450-
on_dns_cache_hit = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
1451-
on_dns_cache_miss = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
1450+
on_dns_cache_hit = mock.AsyncMock()
1451+
on_dns_cache_miss = mock.AsyncMock()
14521452

14531453
trace_config = aiohttp.TraceConfig(
14541454
trace_config_ctx_factory=mock.Mock(return_value=trace_config_ctx)
@@ -1477,8 +1477,8 @@ async def test_tcp_connector_dns_tracing_throttle_requests(loop, dns_response) -
14771477

14781478
async def test_dns_error(loop) -> None:
14791479
connector = aiohttp.TCPConnector(loop=loop)
1480-
connector._resolve_host = make_mocked_coro(
1481-
raise_exception=OSError("dont take it serious")
1480+
connector._resolve_host = mock.AsyncMock(
1481+
side_effect=OSError("dont take it serious")
14821482
)
14831483

14841484
req = ClientRequest("GET", URL("http://www.python.org"), loop=loop)
@@ -1577,8 +1577,8 @@ async def test_connect(loop, key) -> None:
15771577
async def test_connect_tracing(loop) -> None:
15781578
session = mock.Mock()
15791579
trace_config_ctx = mock.Mock()
1580-
on_connection_create_start = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
1581-
on_connection_create_end = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
1580+
on_connection_create_start = mock.AsyncMock()
1581+
on_connection_create_end = mock.AsyncMock()
15821582

15831583
trace_config = aiohttp.TraceConfig(
15841584
trace_config_ctx_factory=mock.Mock(return_value=trace_config_ctx)
@@ -2573,8 +2573,8 @@ async def f():
25732573
async def test_connect_queued_operation_tracing(loop, key) -> None:
25742574
session = mock.Mock()
25752575
trace_config_ctx = mock.Mock()
2576-
on_connection_queued_start = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
2577-
on_connection_queued_end = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
2576+
on_connection_queued_start = mock.AsyncMock()
2577+
on_connection_queued_end = mock.AsyncMock()
25782578

25792579
trace_config = aiohttp.TraceConfig(
25802580
trace_config_ctx_factory=mock.Mock(return_value=trace_config_ctx)
@@ -2619,7 +2619,7 @@ async def f():
26192619
async def test_connect_reuseconn_tracing(loop, key) -> None:
26202620
session = mock.Mock()
26212621
trace_config_ctx = mock.Mock()
2622-
on_connection_reuseconn = mock.Mock(side_effect=make_mocked_coro(mock.Mock()))
2622+
on_connection_reuseconn = mock.AsyncMock()
26232623

26242624
trace_config = aiohttp.TraceConfig(
26252625
trace_config_ctx_factory=mock.Mock(return_value=trace_config_ctx)
@@ -3111,9 +3111,10 @@ async def test_unix_connector_not_found(loop) -> None:
31113111

31123112

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

31183119
req = ClientRequest("GET", URL("http://www.python.org"), loop=loop)
31193120
with pytest.raises(aiohttp.ClientConnectorError):
@@ -3142,11 +3143,13 @@ async def test_named_pipe_connector_not_found(proactor_loop, pipe_name) -> None:
31423143
@pytest.mark.skipif(
31433144
platform.system() != "Windows", reason="Proactor Event loop present only in Windows"
31443145
)
3145-
async def test_named_pipe_connector_permission(proactor_loop, pipe_name) -> None:
3146-
proactor_loop.create_pipe_connection = make_mocked_coro(
3147-
raise_exception=PermissionError()
3148-
)
3149-
connector = aiohttp.NamedPipeConnector(pipe_name, loop=proactor_loop)
3146+
async def test_named_pipe_connector_permission(
3147+
proactor_loop: asyncio.AbstractEventLoop, pipe_name: str
3148+
) -> None:
3149+
m = mock.AsyncMock(side_effect=PermissionError())
3150+
with mock.patch.object(proactor_loop, "create_pipe_connection", m):
3151+
asyncio.set_event_loop(proactor_loop)
3152+
connector = aiohttp.NamedPipeConnector(pipe_name)
31503153

31513154
req = ClientRequest("GET", URL("http://www.python.org"), loop=proactor_loop)
31523155
with pytest.raises(aiohttp.ClientConnectorError):

tests/test_http_writer.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
from aiohttp.base_protocol import BaseProtocol
1313
from aiohttp.compression_utils import ZLibBackend
1414
from aiohttp.http_writer import _serialize_headers
15-
from aiohttp.test_utils import make_mocked_coro
1615

1716

1817
@pytest.fixture
@@ -58,7 +57,7 @@ def writelines(chunks: Iterable[bytes]) -> None:
5857
@pytest.fixture
5958
def protocol(loop, transport):
6059
protocol = mock.Mock(transport=transport)
61-
protocol._drain_helper = make_mocked_coro()
60+
protocol._drain_helper = mock.AsyncMock()
6261
return protocol
6362

6463

@@ -732,7 +731,7 @@ async def test_write_payload_slicing_long_memoryview(buf, protocol, transport, l
732731

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

@@ -741,17 +740,25 @@ async def test_write_drain(protocol, transport, loop) -> None:
741740
assert msg.buffer_size == 0
742741

743742

744-
async def test_write_calls_callback(protocol, transport, loop) -> None:
745-
on_chunk_sent = make_mocked_coro()
743+
async def test_write_calls_callback(
744+
protocol: BaseProtocol,
745+
transport: asyncio.Transport,
746+
loop: asyncio.AbstractEventLoop,
747+
) -> None:
748+
on_chunk_sent = mock.AsyncMock()
746749
msg = http.StreamWriter(protocol, loop, on_chunk_sent=on_chunk_sent)
747750
chunk = b"1"
748751
await msg.write(chunk)
749752
assert on_chunk_sent.called
750753
assert on_chunk_sent.call_args == mock.call(chunk)
751754

752755

753-
async def test_write_eof_calls_callback(protocol, transport, loop) -> None:
754-
on_chunk_sent = make_mocked_coro()
756+
async def test_write_eof_calls_callback(
757+
protocol: BaseProtocol,
758+
transport: asyncio.Transport,
759+
loop: asyncio.AbstractEventLoop,
760+
) -> None:
761+
on_chunk_sent = mock.AsyncMock()
755762
msg = http.StreamWriter(protocol, loop, on_chunk_sent=on_chunk_sent)
756763
chunk = b"1"
757764
await msg.write_eof(chunk=chunk)

tests/test_multipart.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
from aiohttp.helpers import parse_mimetype
2020
from aiohttp.multipart import MultipartResponseWrapper
2121
from aiohttp.streams import StreamReader
22-
from aiohttp.test_utils import make_mocked_coro
2322

2423
BOUNDARY = b"--:"
2524

@@ -97,21 +96,21 @@ def test_at_eof(self) -> None:
9796

9897
async def test_next(self) -> None:
9998
wrapper = MultipartResponseWrapper(mock.Mock(), mock.Mock())
100-
wrapper.stream.next = make_mocked_coro(b"")
99+
wrapper.stream.next = mock.AsyncMock(b"")
101100
wrapper.stream.at_eof.return_value = False
102101
await wrapper.next()
103102
assert wrapper.stream.next.called
104103

105104
async def test_release(self) -> None:
106105
wrapper = MultipartResponseWrapper(mock.Mock(), mock.Mock())
107-
wrapper.resp.release = make_mocked_coro(None)
106+
wrapper.resp.release = mock.AsyncMock(None)
108107
await wrapper.release()
109108
assert wrapper.resp.release.called
110109

111110
async def test_release_when_stream_at_eof(self) -> None:
112111
wrapper = MultipartResponseWrapper(mock.Mock(), mock.Mock())
113-
wrapper.resp.release = make_mocked_coro(None)
114-
wrapper.stream.next = make_mocked_coro(b"")
112+
wrapper.resp.release = mock.AsyncMock(None)
113+
wrapper.stream.next = mock.AsyncMock(b"")
115114
wrapper.stream.at_eof.return_value = True
116115
await wrapper.next()
117116
assert wrapper.stream.next.called

0 commit comments

Comments
 (0)