1616MAXIMUM_IMAGES = 2
1717
1818# Test different image extensions (JPG/PNG) and formats (gray/RGB/RGBA)
19- TEST_IMAGE_URLS = [
20- "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg" ,
21- "https://upload.wikimedia.org/wikipedia/commons/f/fa/Grayscale_8bits_palette_sample_image.png" ,
22- "https://upload.wikimedia.org/wikipedia/commons/thumb/9/91/Venn_diagram_rgb.svg/1280px-Venn_diagram_rgb.svg.png" ,
23- "https://upload.wikimedia.org/wikipedia/commons/0/0b/RGBA_comp.png" ,
19+ TEST_IMAGE_ASSETS = [
20+ "2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg" , # " https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
21+ "Grayscale_8bits_palette_sample_image.png" , # " https://upload.wikimedia.org/wikipedia/commons/f/fa/Grayscale_8bits_palette_sample_image.png",
22+ "1280px-Venn_diagram_rgb.svg.png" , # " https://upload.wikimedia.org/wikipedia/commons/thumb/9/91/Venn_diagram_rgb.svg/1280px-Venn_diagram_rgb.svg.png",
23+ "RGBA_comp.png" , # " https://upload.wikimedia.org/wikipedia/commons/0/0b/RGBA_comp.png",
2424]
2525
2626EXPECTED_MM_BEAM_SEARCH_RES = [
@@ -69,10 +69,11 @@ async def client(server):
6969
7070
7171@pytest .fixture (scope = "session" )
72- def base64_encoded_image () -> dict [str , str ]:
72+ def base64_encoded_image (local_asset_server ) -> dict [str , str ]:
7373 return {
74- image_url : encode_image_base64 (fetch_image (image_url ))
75- for image_url in TEST_IMAGE_URLS
74+ image_asset :
75+ encode_image_base64 (local_asset_server .get_image_asset (image_asset ))
76+ for image_asset in TEST_IMAGE_ASSETS
7677 }
7778
7879
@@ -97,7 +98,7 @@ def get_hf_prompt_tokens(model_name, content, image_url):
9798
9899@pytest .mark .asyncio
99100@pytest .mark .parametrize ("model_name" , [MODEL_NAME ])
100- @pytest .mark .parametrize ("image_url" , TEST_IMAGE_URLS )
101+ @pytest .mark .parametrize ("image_url" , TEST_IMAGE_ASSETS , indirect = True )
101102async def test_single_chat_session_image (client : openai .AsyncOpenAI ,
102103 model_name : str , image_url : str ):
103104 content_text = "What's in this image?"
@@ -157,7 +158,7 @@ async def test_single_chat_session_image(client: openai.AsyncOpenAI,
157158
158159@pytest .mark .asyncio
159160@pytest .mark .parametrize ("model_name" , [MODEL_NAME ])
160- @pytest .mark .parametrize ("image_url" , TEST_IMAGE_URLS )
161+ @pytest .mark .parametrize ("image_url" , TEST_IMAGE_ASSETS , indirect = True )
161162async def test_error_on_invalid_image_url_type (client : openai .AsyncOpenAI ,
162163 model_name : str ,
163164 image_url : str ):
@@ -187,7 +188,7 @@ async def test_error_on_invalid_image_url_type(client: openai.AsyncOpenAI,
187188
188189@pytest .mark .asyncio
189190@pytest .mark .parametrize ("model_name" , [MODEL_NAME ])
190- @pytest .mark .parametrize ("image_url" , TEST_IMAGE_URLS )
191+ @pytest .mark .parametrize ("image_url" , TEST_IMAGE_ASSETS , indirect = True )
191192async def test_single_chat_session_image_beamsearch (client : openai .AsyncOpenAI ,
192193 model_name : str ,
193194 image_url : str ):
@@ -223,10 +224,11 @@ async def test_single_chat_session_image_beamsearch(client: openai.AsyncOpenAI,
223224
224225@pytest .mark .asyncio
225226@pytest .mark .parametrize ("model_name" , [MODEL_NAME ])
226- @pytest .mark .parametrize ("image_url" , TEST_IMAGE_URLS )
227+ @pytest .mark .parametrize ("raw_image_url" , TEST_IMAGE_ASSETS )
228+ @pytest .mark .parametrize ("image_url" , TEST_IMAGE_ASSETS , indirect = True )
227229async def test_single_chat_session_image_base64encoded (
228- client : openai .AsyncOpenAI , model_name : str , image_url : str ,
229- base64_encoded_image : dict [str , str ]):
230+ client : openai .AsyncOpenAI , model_name : str , raw_image_url : str ,
231+ image_url : str , base64_encoded_image : dict [str , str ]):
230232
231233 content_text = "What's in this image?"
232234 messages = [{
@@ -237,7 +239,7 @@ async def test_single_chat_session_image_base64encoded(
237239 "type" : "image_url" ,
238240 "image_url" : {
239241 "url" :
240- f"data:image/jpeg;base64,{ base64_encoded_image [image_url ]} "
242+ f"data:image/jpeg;base64,{ base64_encoded_image [raw_image_url ]} "
241243 }
242244 },
243245 {
@@ -287,12 +289,12 @@ async def test_single_chat_session_image_base64encoded(
287289
288290@pytest .mark .asyncio
289291@pytest .mark .parametrize ("model_name" , [MODEL_NAME ])
290- @pytest .mark .parametrize ("image_idx" , list (range (len (TEST_IMAGE_URLS ))))
292+ @pytest .mark .parametrize ("image_idx" , list (range (len (TEST_IMAGE_ASSETS ))))
291293async def test_single_chat_session_image_base64encoded_beamsearch (
292294 client : openai .AsyncOpenAI , model_name : str , image_idx : int ,
293295 base64_encoded_image : dict [str , str ]):
294296 # NOTE: This test also validates that we pass MM data through beam search
295- image_url = TEST_IMAGE_URLS [image_idx ]
297+ raw_image_url = TEST_IMAGE_ASSETS [image_idx ]
296298 expected_res = EXPECTED_MM_BEAM_SEARCH_RES [image_idx ]
297299
298300 messages = [{
@@ -303,7 +305,7 @@ async def test_single_chat_session_image_base64encoded_beamsearch(
303305 "type" : "image_url" ,
304306 "image_url" : {
305307 "url" :
306- f"data:image/jpeg;base64,{ base64_encoded_image [image_url ]} "
308+ f"data:image/jpeg;base64,{ base64_encoded_image [raw_image_url ]} "
307309 }
308310 },
309311 {
@@ -326,7 +328,7 @@ async def test_single_chat_session_image_base64encoded_beamsearch(
326328
327329@pytest .mark .asyncio
328330@pytest .mark .parametrize ("model_name" , [MODEL_NAME ])
329- @pytest .mark .parametrize ("image_url" , TEST_IMAGE_URLS )
331+ @pytest .mark .parametrize ("image_url" , TEST_IMAGE_ASSETS , indirect = True )
330332async def test_chat_streaming_image (client : openai .AsyncOpenAI ,
331333 model_name : str , image_url : str ):
332334 messages = [{
@@ -385,7 +387,8 @@ async def test_chat_streaming_image(client: openai.AsyncOpenAI,
385387@pytest .mark .parametrize ("model_name" , [MODEL_NAME ])
386388@pytest .mark .parametrize (
387389 "image_urls" ,
388- [TEST_IMAGE_URLS [:i ] for i in range (2 , len (TEST_IMAGE_URLS ))])
390+ [TEST_IMAGE_ASSETS [:i ] for i in range (2 , len (TEST_IMAGE_ASSETS ))],
391+ indirect = True )
389392async def test_multi_image_input (client : openai .AsyncOpenAI , model_name : str ,
390393 image_urls : list [str ]):
391394
0 commit comments