]> git.ipfire.org Git - thirdparty/fastapi/fastapi.git/commitdiff
✅ Fix parameterized tests with snapshots (#14875)
authorMotov Yurii <109919500+YuriiMotov@users.noreply.github.com>
Mon, 9 Feb 2026 15:35:43 +0000 (16:35 +0100)
committerGitHub <noreply@github.com>
Mon, 9 Feb 2026 15:35:43 +0000 (16:35 +0100)
tests/test_request_params/test_path/test_required_str.py
tests/test_tutorial/test_body_nested_models/test_tutorial001_tutorial002_tutorial003.py
tests/test_tutorial/test_custom_response/test_tutorial002_tutorial003_tutorial004.py
tests/test_tutorial/test_path_operation_configurations/test_tutorial003_tutorial004.py
tests/test_tutorial/test_query_params_str_validations/test_tutorial010.py

index 5add058c2b3130ae15b475d2d689ef68856f9be4..aecc2eb6c9800311cdc13bb06f9342b403293754 100644 (file)
@@ -3,7 +3,7 @@ from typing import Annotated
 import pytest
 from fastapi import FastAPI, Path
 from fastapi.testclient import TestClient
-from inline_snapshot import snapshot
+from inline_snapshot import Is, snapshot
 
 app = FastAPI()
 
@@ -58,8 +58,8 @@ def test_schema(path: str, expected_name: str, expected_title: str):
         [
             {
                 "required": True,
-                "schema": {"title": expected_title, "type": "string"},
-                "name": expected_name,
+                "schema": {"title": Is(expected_title), "type": "string"},
+                "name": Is(expected_name),
                 "in": "path",
             }
         ]
index 78e5e53a20f9244148596efa0415d81458945166..18bce279b9d310a6cee51d6eb000da2ac3c31178 100644 (file)
@@ -3,7 +3,7 @@ import importlib
 import pytest
 from dirty_equals import IsList
 from fastapi.testclient import TestClient
-from inline_snapshot import snapshot
+from inline_snapshot import Is, snapshot
 
 from ...utils import needs_py310
 
@@ -212,7 +212,7 @@ def test_openapi_schema(client: TestClient, mod_name: str):
                                 "title": "Tax",
                                 "anyOf": [{"type": "number"}, {"type": "null"}],
                             },
-                            "tags": tags_schema,
+                            "tags": Is(tags_schema),
                         },
                         "required": [
                             "name",
index f79d38b831ff5546bf408d5373df79a9dd4bc180..68e046ac5aea84a991996ee5a611ea10fbf413a9 100644 (file)
@@ -2,7 +2,7 @@ import importlib
 
 import pytest
 from fastapi.testclient import TestClient
-from inline_snapshot import snapshot
+from inline_snapshot import Is, snapshot
 
 
 @pytest.fixture(
@@ -59,7 +59,7 @@ def test_openapi_schema(client: TestClient, mod_name: str):
                         "responses": {
                             "200": {
                                 "description": "Successful Response",
-                                "content": response_content,
+                                "content": Is(response_content),
                             }
                         },
                         "summary": "Read Items",
index 8e86cd8a516af13087465acaab48ad8c9e0b9f26..c13a3c38c834db99f839c209c177395d5fa3ec0b 100644 (file)
@@ -4,7 +4,7 @@ from textwrap import dedent
 import pytest
 from dirty_equals import IsList
 from fastapi.testclient import TestClient
-from inline_snapshot import snapshot
+from inline_snapshot import Is, snapshot
 
 from ...utils import needs_py310
 
@@ -75,7 +75,7 @@ def test_openapi_schema(client: TestClient, mod_name: str):
                 "/items/": {
                     "post": {
                         "summary": "Create an item",
-                        "description": DESCRIPTIONS[mod_name],
+                        "description": Is(DESCRIPTIONS[mod_name]),
                         "operationId": "create_item_items__post",
                         "requestBody": {
                             "content": {
index 395f795184dde87b8859f87b7853210b7c030c58..efe9f1fa6b8ba3d7ef615d395bd5771174e1e6d3 100644 (file)
@@ -3,7 +3,7 @@ import importlib
 import pytest
 from fastapi._compat import PYDANTIC_VERSION_MINOR_TUPLE
 from fastapi.testclient import TestClient
-from inline_snapshot import snapshot
+from inline_snapshot import Is, snapshot
 
 from ...utils import needs_py310
 
@@ -66,6 +66,23 @@ def test_query_params_str_validations_item_query_nonregexquery(client: TestClien
 def test_openapi_schema(client: TestClient):
     response = client.get("/openapi.json")
     assert response.status_code == 200, response.text
+
+    parameters_schema = {
+        "anyOf": [
+            {
+                "type": "string",
+                "minLength": 3,
+                "maxLength": 50,
+                "pattern": "^fixedquery$",
+            },
+            {"type": "null"},
+        ],
+        "title": "Query string",
+        "description": "Query string for the items to search in the database that have a good match",
+        # See https://github.com/pydantic/pydantic/blob/80353c29a824c55dea4667b328ba8f329879ac9f/tests/test_fastapi.sh#L25-L34.
+        **({"deprecated": True} if PYDANTIC_VERSION_MINOR_TUPLE >= (2, 10) else {}),
+    }
+
     assert response.json() == snapshot(
         {
             "openapi": "3.1.0",
@@ -96,25 +113,7 @@ def test_openapi_schema(client: TestClient):
                                 "description": "Query string for the items to search in the database that have a good match",
                                 "required": False,
                                 "deprecated": True,
-                                "schema": {
-                                    "anyOf": [
-                                        {
-                                            "type": "string",
-                                            "minLength": 3,
-                                            "maxLength": 50,
-                                            "pattern": "^fixedquery$",
-                                        },
-                                        {"type": "null"},
-                                    ],
-                                    "title": "Query string",
-                                    "description": "Query string for the items to search in the database that have a good match",
-                                    # See https://github.com/pydantic/pydantic/blob/80353c29a824c55dea4667b328ba8f329879ac9f/tests/test_fastapi.sh#L25-L34.
-                                    **(
-                                        {"deprecated": True}
-                                        if PYDANTIC_VERSION_MINOR_TUPLE >= (2, 10)
-                                        else {}
-                                    ),
-                                },
+                                "schema": Is(parameters_schema),
                                 "name": "item-query",
                                 "in": "query",
                             }