66import abc
77from unittest import mock
88
9- import httpretty
109import requests
10+ from mocket import Mocket , Mocketizer
11+ from mocket .mocks .mockhttp import Entry
1112from requests .adapters import BaseAdapter
1213from requests .models import Response
1314
@@ -131,16 +132,17 @@ def setUp(self):
131132 self .exclude_patch .start ()
132133
133134 RequestsInstrumentor ().instrument ()
134- httpretty .enable ()
135- httpretty .register_uri (httpretty .GET , self .URL , body = "Hello!" )
135+ self .mocketizer = Mocketizer (strict_mode = True )
136+ self .mocketizer .enter ()
137+ Entry .single_register (Entry .GET , self .URL , body = "Hello!" )
136138
137139 # pylint: disable=invalid-name
138140 def tearDown (self ):
139141 super ().tearDown ()
140142 self .env_patch .stop ()
141143 _OpenTelemetrySemanticConventionStability ._initialized = False
142144 RequestsInstrumentor ().uninstrument ()
143- httpretty . disable ()
145+ self . mocketizer . exit ()
144146
145147 def assert_span (self , exporter = None , num_spans = 1 ):
146148 if exporter is None :
@@ -189,8 +191,8 @@ def test_basic(self):
189191
190192 def test_basic_new_semconv (self ):
191193 url_with_port = "http://mock:80/status/200"
192- httpretty . register_uri (
193- httpretty .GET , url_with_port , status = 200 , body = "Hello!"
194+ Entry . single_register (
195+ Entry .GET , url_with_port , status = 200 , body = "Hello!"
194196 )
195197 result = self .perform_request (url_with_port )
196198 self .assertEqual (result .text , "Hello!" )
@@ -226,8 +228,8 @@ def test_basic_new_semconv(self):
226228
227229 def test_basic_both_semconv (self ):
228230 url_with_port = "http://mock:80/status/200"
229- httpretty . register_uri (
230- httpretty .GET , url_with_port , status = 200 , body = "Hello!"
231+ Entry . single_register (
232+ Entry .GET , url_with_port , status = 200 , body = "Hello!"
231233 )
232234 result = self .perform_request (url_with_port )
233235 self .assertEqual (result .text , "Hello!" )
@@ -267,9 +269,12 @@ def test_basic_both_semconv(self):
267269 span , opentelemetry .instrumentation .requests
268270 )
269271
270- @mock .patch ("httpretty.http.HttpBaseClass.METHODS" , ("NONSTANDARD" ,))
272+ @mock .patch (
273+ "mocket.mocks.mockhttp.Entry.METHODS" ,
274+ Entry .METHODS + ("NONSTANDARD" ,),
275+ )
271276 def test_nonstandard_http_method (self ):
272- httpretty . register_uri ("NONSTANDARD" , self .URL , status = 405 )
277+ Entry . single_register ("NONSTANDARD" , self .URL , status = 405 )
273278 session = requests .Session ()
274279 session .request ("NONSTANDARD" , self .URL )
275280 span = self .assert_span ()
@@ -287,9 +292,12 @@ def test_nonstandard_http_method(self):
287292
288293 self .assertIs (span .status .status_code , trace .StatusCode .ERROR )
289294
290- @mock .patch ("httpretty.http.HttpBaseClass.METHODS" , ("NONSTANDARD" ,))
295+ @mock .patch (
296+ "mocket.mocks.mockhttp.Entry.METHODS" ,
297+ Entry .METHODS + ("NONSTANDARD" ,),
298+ )
291299 def test_nonstandard_http_method_new_semconv (self ):
292- httpretty . register_uri ("NONSTANDARD" , self .URL , status = 405 )
300+ Entry . single_register ("NONSTANDARD" , self .URL , status = 405 )
293301 session = requests .Session ()
294302 session .request ("NONSTANDARD" , self .URL )
295303 span = self .assert_span ()
@@ -331,8 +339,8 @@ def response_hook(span, request_obj, response):
331339
332340 def test_excluded_urls_explicit (self ):
333341 url_404 = "http://mock/status/404"
334- httpretty . register_uri (
335- httpretty .GET ,
342+ Entry . single_register (
343+ Entry .GET ,
336344 url_404 ,
337345 status = 404 ,
338346 )
@@ -346,8 +354,8 @@ def test_excluded_urls_explicit(self):
346354
347355 def test_excluded_urls_from_env (self ):
348356 url = "http://localhost/env_excluded_arg/123"
349- httpretty . register_uri (
350- httpretty .GET ,
357+ Entry . single_register (
358+ Entry .GET ,
351359 url ,
352360 status = 200 ,
353361 )
@@ -373,8 +381,8 @@ def name_callback(method, url):
373381
374382 def test_not_foundbasic (self ):
375383 url_404 = "http://mock/status/404"
376- httpretty . register_uri (
377- httpretty .GET ,
384+ Entry . single_register (
385+ Entry .GET ,
378386 url_404 ,
379387 status = 404 ,
380388 )
@@ -392,8 +400,8 @@ def test_not_foundbasic(self):
392400
393401 def test_not_foundbasic_new_semconv (self ):
394402 url_404 = "http://mock/status/404"
395- httpretty . register_uri (
396- httpretty .GET ,
403+ Entry . single_register (
404+ Entry .GET ,
397405 url_404 ,
398406 status = 404 ,
399407 )
@@ -412,8 +420,8 @@ def test_not_foundbasic_new_semconv(self):
412420
413421 def test_not_foundbasic_both_semconv (self ):
414422 url_404 = "http://mock/status/404"
415- httpretty . register_uri (
416- httpretty .GET ,
423+ Entry . single_register (
424+ Entry .GET ,
417425 url_404 ,
418426 status = 404 ,
419427 )
@@ -498,7 +506,7 @@ def test_distributed_context(self):
498506
499507 span = self .assert_span ()
500508
501- headers = dict (httpretty .last_request ().headers )
509+ headers = dict (Mocket .last_request ().headers )
502510 self .assertIn (MockTextMapPropagator .TRACE_ID_KEY , headers )
503511 self .assertEqual (
504512 str (span .get_span_context ().trace_id ),
@@ -583,8 +591,8 @@ def test_requests_exception_without_response(self, *_, **__):
583591 )
584592 def test_requests_exception_new_semconv (self , * _ , ** __ ):
585593 url_with_port = "http://mock:80/status/200"
586- httpretty . register_uri (
587- httpretty .GET , url_with_port , status = 200 , body = "Hello!"
594+ Entry . single_register (
595+ Entry .GET , url_with_port , status = 200 , body = "Hello!"
588596 )
589597 with self .assertRaises (requests .RequestException ):
590598 self .perform_request (url_with_port )
@@ -703,6 +711,7 @@ def test_remove_sensitive_params(self):
703711 new_url = (
704712 "http://username:password@mock/status/200?AWSAccessKeyId=secret"
705713 )
714+ Entry .single_register (Entry .GET , new_url , body = "Hello!" )
706715 self .perform_request (new_url )
707716 span = self .assert_span ()
708717
@@ -732,7 +741,7 @@ def test_custom_request_headers_captured(self):
732741 "X-Another-Header" : "another-value" ,
733742 "X-Excluded-Header" : "excluded-value" ,
734743 }
735- httpretty . register_uri ( httpretty .GET , self .URL , body = "Hello!" )
744+ Entry . single_register ( Entry .GET , self .URL , body = "Hello!" )
736745 result = requests .get (self .URL , headers = headers , timeout = 5 )
737746 self .assertEqual (result .text , "Hello!" )
738747
@@ -763,8 +772,9 @@ def test_custom_response_headers_captured(self):
763772 "X-Another-Header" : "another-value" ,
764773 "X-Excluded-Header" : "excluded-value" ,
765774 }
766- httpretty .register_uri (
767- httpretty .GET , self .URL , body = "Hello!" , adding_headers = headers
775+ Mocket .reset ()
776+ Entry .single_register (
777+ Entry .GET , self .URL , body = "Hello!" , headers = headers
768778 )
769779 result = requests .get (self .URL , timeout = 5 )
770780 self .assertEqual (result .text , "Hello!" )
@@ -786,11 +796,12 @@ def test_custom_headers_not_captured_when_not_configured(self):
786796 RequestsInstrumentor ().uninstrument ()
787797 RequestsInstrumentor ().instrument ()
788798 headers = {"X-Request-Header" : "request-value" }
789- httpretty .register_uri (
790- httpretty .GET ,
799+ Mocket .reset ()
800+ Entry .single_register (
801+ Entry .GET ,
791802 self .URL ,
792803 body = "Hello!" ,
793- adding_headers = {"X-Response-Header" : "response-value" },
804+ headers = {"X-Response-Header" : "response-value" },
794805 )
795806 result = requests .get (self .URL , headers = headers , timeout = 5 )
796807 self .assertEqual (result .text , "Hello!" )
@@ -824,11 +835,12 @@ def test_sensitive_headers_sanitized(self):
824835 "Set-Cookie" : "session=abc123" ,
825836 "X-Secret" : "secret" ,
826837 }
827- httpretty .register_uri (
828- httpretty .GET ,
838+ Mocket .reset ()
839+ Entry .single_register (
840+ Entry .GET ,
829841 self .URL ,
830842 body = "Hello!" ,
831- adding_headers = response_headers ,
843+ headers = response_headers ,
832844 )
833845 result = requests .get (self .URL , headers = request_headers , timeout = 5 )
834846 self .assertEqual (result .text , "Hello!" )
@@ -872,11 +884,12 @@ def test_custom_headers_with_regex(self):
872884 "X-Custom-Response-B" : "value-B" ,
873885 "X-Other-Response-Header" : "other-value" ,
874886 }
875- httpretty .register_uri (
876- httpretty .GET ,
887+ Mocket .reset ()
888+ Entry .single_register (
889+ Entry .GET ,
877890 self .URL ,
878891 body = "Hello!" ,
879- adding_headers = response_headers ,
892+ headers = response_headers ,
880893 )
881894 result = requests .get (self .URL , headers = request_headers , timeout = 5 )
882895 self .assertEqual (result .text , "Hello!" )
@@ -918,11 +931,12 @@ def test_custom_headers_case_insensitive(self):
918931 RequestsInstrumentor ().instrument ()
919932 request_headers = {"X-ReQuESt-HeaDER" : "custom-value" }
920933 response_headers = {"X-ReSPoNse-HeaDER" : "custom-value" }
921- httpretty .register_uri (
922- httpretty .GET ,
934+ Mocket .reset ()
935+ Entry .single_register (
936+ Entry .GET ,
923937 self .URL ,
924938 body = "Hello!" ,
925- adding_headers = response_headers ,
939+ headers = response_headers ,
926940 )
927941 result = requests .get (self .URL , headers = request_headers , timeout = 5 )
928942 self .assertEqual (result .text , "Hello!" )
@@ -973,15 +987,16 @@ def setUp(self):
973987 _OpenTelemetrySemanticConventionStability ._initialized = False
974988 RequestsInstrumentor ().instrument (meter_provider = self .meter_provider )
975989
976- httpretty .enable ()
977- httpretty .register_uri (httpretty .GET , self .URL , body = "Hello!" )
990+ self .mocketizer = Mocketizer (strict_mode = True )
991+ self .mocketizer .enter ()
992+ Entry .single_register (Entry .GET , self .URL , body = "Hello!" )
978993
979994 def tearDown (self ):
980995 super ().tearDown ()
981996 self .env_patch .stop ()
982997 _OpenTelemetrySemanticConventionStability ._initialized = False
983998 RequestsInstrumentor ().uninstrument ()
984- httpretty . disable ()
999+ self . mocketizer . exit ()
9851000
9861001 @staticmethod
9871002 def perform_request (url : str ) -> requests .Response :
0 commit comments