99
1010@pytest .fixture
1111def openai_client_cls ():
12- with unittest .mock .patch .object (strands .models .openai .openai , "OpenAI " ) as mock_client_cls :
12+ with unittest .mock .patch .object (strands .models .openai .openai , "AsyncOpenAI " ) as mock_client_cls :
1313 yield mock_client_cls
1414
1515
@@ -70,7 +70,7 @@ def test_update_config(model, model_id):
7070
7171
7272@pytest .mark .asyncio
73- async def test_stream (openai_client , model , alist ):
73+ async def test_stream (openai_client , model , agenerator , alist ):
7474 mock_tool_call_1_part_1 = unittest .mock .Mock (index = 0 )
7575 mock_tool_call_2_part_1 = unittest .mock .Mock (index = 1 )
7676 mock_delta_1 = unittest .mock .Mock (
@@ -102,8 +102,8 @@ async def test_stream(openai_client, model, alist):
102102 mock_event_5 = unittest .mock .Mock (choices = [unittest .mock .Mock (finish_reason = "tool_calls" , delta = mock_delta_5 )])
103103 mock_event_6 = unittest .mock .Mock ()
104104
105- openai_client .chat .completions .create . return_value = iter (
106- [mock_event_1 , mock_event_2 , mock_event_3 , mock_event_4 , mock_event_5 , mock_event_6 ]
105+ openai_client .chat .completions .create = unittest . mock . AsyncMock (
106+ return_value = agenerator ( [mock_event_1 , mock_event_2 , mock_event_3 , mock_event_4 , mock_event_5 , mock_event_6 ])
107107 )
108108
109109 request = {"model" : "m1" , "messages" : [{"role" : "user" , "content" : [{"type" : "text" , "text" : "calculate 2+2" }]}]}
@@ -133,7 +133,7 @@ async def test_stream(openai_client, model, alist):
133133
134134
135135@pytest .mark .asyncio
136- async def test_stream_empty (openai_client , model , alist ):
136+ async def test_stream_empty (openai_client , model , agenerator , alist ):
137137 mock_delta = unittest .mock .Mock (content = None , tool_calls = None , reasoning_content = None )
138138 mock_usage = unittest .mock .Mock (prompt_tokens = 0 , completion_tokens = 0 , total_tokens = 0 )
139139
@@ -142,7 +142,9 @@ async def test_stream_empty(openai_client, model, alist):
142142 mock_event_3 = unittest .mock .Mock ()
143143 mock_event_4 = unittest .mock .Mock (usage = mock_usage )
144144
145- openai_client .chat .completions .create .return_value = iter ([mock_event_1 , mock_event_2 , mock_event_3 , mock_event_4 ])
145+ openai_client .chat .completions .create = unittest .mock .AsyncMock (
146+ return_value = agenerator ([mock_event_1 , mock_event_2 , mock_event_3 , mock_event_4 ]),
147+ )
146148
147149 request = {"model" : "m1" , "messages" : [{"role" : "user" , "content" : []}]}
148150 response = model .stream (request )
@@ -161,7 +163,7 @@ async def test_stream_empty(openai_client, model, alist):
161163
162164
163165@pytest .mark .asyncio
164- async def test_stream_with_empty_choices (openai_client , model , alist ):
166+ async def test_stream_with_empty_choices (openai_client , model , agenerator , alist ):
165167 mock_delta = unittest .mock .Mock (content = "content" , tool_calls = None , reasoning_content = None )
166168 mock_usage = unittest .mock .Mock (prompt_tokens = 10 , completion_tokens = 20 , total_tokens = 30 )
167169
@@ -180,8 +182,8 @@ async def test_stream_with_empty_choices(openai_client, model, alist):
180182 # Final event with usage info
181183 mock_event_5 = unittest .mock .Mock (usage = mock_usage )
182184
183- openai_client .chat .completions .create . return_value = iter (
184- [mock_event_1 , mock_event_2 , mock_event_3 , mock_event_4 , mock_event_5 ]
185+ openai_client .chat .completions .create = unittest . mock . AsyncMock (
186+ return_value = agenerator ( [mock_event_1 , mock_event_2 , mock_event_3 , mock_event_4 , mock_event_5 ])
185187 )
186188
187189 request = {"model" : "m1" , "messages" : [{"role" : "user" , "content" : ["test" ]}]}
@@ -212,7 +214,7 @@ async def test_structured_output(openai_client, model, test_output_model_cls, al
212214 mock_response = unittest .mock .Mock ()
213215 mock_response .choices = [mock_choice ]
214216
215- openai_client .beta .chat .completions .parse . return_value = mock_response
217+ openai_client .beta .chat .completions .parse = unittest . mock . AsyncMock ( return_value = mock_response )
216218
217219 stream = model .structured_output (test_output_model_cls , messages )
218220 events = await alist (stream )
0 commit comments