@@ -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
369372if __name__ == "__main__" :
0 commit comments