Skip to content

Commit a7d57e9

Browse files
committed
use @patch.object decorator consistently
1 parent 9573a42 commit a7d57e9

File tree

2 files changed

+52
-49
lines changed

2 files changed

+52
-49
lines changed

tests/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
import sys
33

44
# just in case include in path
5-
sys.path.insert(0, str(pathlib.Path(__file__).resolve().parents[1].joinpath('src')))
5+
sys.path.insert(0, str(pathlib.Path(__file__).resolve().parents[1].joinpath("src")))

tests/test_async.py

Lines changed: 51 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ class TestAsyncHttpClient(unittest.IsolatedAsyncioTestCase):
1212

1313
@staticmethod
1414
def create_mock_resp(
15-
method: str = "GET",
16-
url: str = "https://api.example.com",
15+
method: str,
16+
url: str,
1717
status_code: int = 200,
18-
json_data: dict | None = None,
18+
json_data: "dict | None" = None,
1919
):
2020
"""
2121
Helper method to create a properly configured mock response.
@@ -27,66 +27,67 @@ def create_mock_resp(
2727
mock_response._request = httpx.Request(method, url)
2828
return mock_response
2929

30-
async def test_get(self):
30+
@patch.object(httpx.AsyncClient, "request")
31+
async def test_get(self, mock_request):
3132
expected_response = {"message": "Success"}
32-
mock_response = self.create_mock_resp("GET", "https://api.example.com/endpoint", json_data=expected_response)
33+
endpoint_url = f"{self.base_url}/endpoint"
3334

34-
client = AsyncHttpClient(self.base_url, retries=self.retries)
35+
mock_request.return_value = self.create_mock_resp("GET", endpoint_url, json_data=expected_response)
3536

36-
with patch.object(httpx.AsyncClient, "request", return_value=mock_response) as mock_request:
37-
response = await client.get("/endpoint")
38-
self.assertEqual(response, expected_response)
39-
mock_request.assert_called_once_with("GET", url="https://api.example.com/endpoint")
37+
client = AsyncHttpClient(self.base_url, retries=self.retries)
38+
response = await client.get("/endpoint")
39+
self.assertEqual(response, expected_response)
40+
mock_request.assert_called_once_with("GET", url=endpoint_url)
4041

41-
async def test_post(self):
42+
@patch.object(httpx.AsyncClient, "request")
43+
async def test_post(self, mock_request):
4244
expected_response = {"message": "Success"}
43-
mock_response = self.create_mock_resp("POST", "https://api.example.com/endpoint", json_data=expected_response)
45+
endpoint_url = f"{self.base_url}/endpoint"
4446

45-
client = AsyncHttpClient(self.base_url, retries=self.retries)
47+
mock_request.return_value = self.create_mock_resp("POST", endpoint_url, json_data=expected_response)
4648

47-
with patch.object(httpx.AsyncClient, "request", return_value=mock_response) as mock_request:
48-
response = await client.post("/endpoint", json={"data": "example"})
49-
self.assertEqual(response, expected_response)
50-
mock_request.assert_called_once_with(
51-
"POST", url="https://api.example.com/endpoint", json={"data": "example"}
52-
)
49+
client = AsyncHttpClient(self.base_url, retries=self.retries)
50+
response = await client.post("/endpoint", json={"data": "example"})
51+
self.assertEqual(response, expected_response)
52+
mock_request.assert_called_once_with("POST", url=endpoint_url, json={"data": "example"})
5353

54-
async def test_handle_success_response(self):
54+
@patch.object(httpx.AsyncClient, "request")
55+
async def test_handle_success_response(self, mock_request):
5556
expected_response = {"message": "Success"}
56-
mock_response = self.create_mock_resp("GET", "https://api.example.com/endpoint", json_data=expected_response)
57+
endpoint_url = f"{self.base_url}/endpoint"
5758

58-
client = AsyncHttpClient(self.base_url, retries=self.retries)
59+
mock_request.return_value = self.create_mock_resp("GET", endpoint_url, json_data=expected_response)
5960

60-
with patch.object(httpx.AsyncClient, "request", return_value=mock_response) as mock_request:
61-
response = await client.get("/endpoint")
62-
self.assertEqual(response, expected_response)
63-
mock_request.assert_called_once_with("GET", url="https://api.example.com/endpoint")
61+
client = AsyncHttpClient(self.base_url, retries=self.retries)
62+
response = await client.get("/endpoint")
63+
self.assertEqual(response, expected_response)
64+
mock_request.assert_called_once_with("GET", url=endpoint_url)
6465

65-
async def test_handle_client_error_response(self):
66-
mock_response = self.create_mock_resp("GET", "https://api.example.com/endpoint", status_code=404)
66+
@patch.object(httpx.AsyncClient, "request")
67+
async def test_handle_client_error_response(self, mock_request):
68+
endpoint_url = f"{self.base_url}/endpoint"
69+
mock_request.return_value = self.create_mock_resp("GET", endpoint_url, status_code=404)
6770

6871
client = AsyncHttpClient(self.base_url, retries=self.retries, retry_status_codes=[404])
6972

70-
with patch.object(httpx.AsyncClient, "request", return_value=mock_response) as mock_request:
71-
with self.assertRaises(httpx.HTTPStatusError):
72-
await client.get("/endpoint")
73-
74-
assert mock_request.call_count == self.retries + 1
73+
with self.assertRaises(httpx.HTTPStatusError):
74+
await client.get("/endpoint")
7575

76-
mock_request.assert_called_with("GET", url="https://api.example.com/endpoint")
76+
assert mock_request.call_count == self.retries + 1
77+
mock_request.assert_called_with("GET", url=endpoint_url)
7778

78-
async def test_handle_server_error_response(self):
79-
mock_response = self.create_mock_resp("GET", "https://api.example.com/endpoint", status_code=500)
79+
@patch.object(httpx.AsyncClient, "request")
80+
async def test_handle_server_error_response(self, mock_request):
81+
endpoint_url = f"{self.base_url}/endpoint"
82+
mock_request.return_value = self.create_mock_resp("GET", endpoint_url, status_code=500)
8083

8184
client = AsyncHttpClient(self.base_url, retries=self.retries, retry_status_codes=[500])
8285

83-
with patch.object(httpx.AsyncClient, "request", return_value=mock_response) as mock_request:
84-
with self.assertRaises(httpx.HTTPStatusError):
85-
await client.get("/endpoint")
86-
87-
assert mock_request.call_count == self.retries + 1
86+
with self.assertRaises(httpx.HTTPStatusError):
87+
await client.get("/endpoint")
8888

89-
mock_request.assert_called_with("GET", url="https://api.example.com/endpoint")
89+
assert mock_request.call_count == self.retries + 1
90+
mock_request.assert_called_with("GET", url=endpoint_url)
9091

9192
@patch.object(httpx.AsyncClient, "request")
9293
async def test_post_raw_default_pars_with_none_custom_pars_passes(self, mock_request):
@@ -353,17 +354,19 @@ async def test_update_existing_auth_header(self):
353354
await cl.update_auth_header(new_header, overwrite=False)
354355
self.assertDictEqual(cl._auth_header, {**existing_header, **new_header})
355356

356-
async def test_detailed_exception(self):
357-
mock_response = self.create_mock_resp("GET", "https://api.example.com/endpoint", status_code=404)
357+
@patch.object(httpx.AsyncClient, "request")
358+
async def test_detailed_exception(self, mock_request):
359+
endpoint_url = f"{self.base_url}/endpoint"
360+
mock_response = self.create_mock_resp("GET", endpoint_url, status_code=404)
358361
mock_response._content = b"Not Found Because of x"
362+
mock_request.return_value = mock_response
359363

360364
client = AsyncHttpClient(self.base_url)
361365

362-
with patch.object(httpx.AsyncClient, "request", return_value=mock_response) as _:
363-
with self.assertRaises(httpx.HTTPStatusError) as e:
364-
await client.get("/endpoint")
366+
with self.assertRaises(httpx.HTTPStatusError) as e:
367+
await client.get("/endpoint")
365368

366-
assert "Client error '404 Not Found' for url 'https://api.example.com/endpoint'" in str(e.exception)
369+
assert f"Client error '404 Not Found' for url '{endpoint_url}'" in str(e.exception)
367370

368371

369372
if __name__ == "__main__":

0 commit comments

Comments
 (0)