Coverage for tests / test_pydantic_v1_error.py: 100%
41 statements
« prev ^ index » next coverage.py v7.13.3, created at 2026-04-06 01:24 +0000
« prev ^ index » next coverage.py v7.13.3, created at 2026-04-06 01:24 +0000
1import sys 1agbc
2import warnings 1agbc
4import pytest 1agbc
6from tests.utils import skip_module_if_py_gte_314 1agbc
8if sys.version_info >= (3, 14): 1agbc
9 skip_module_if_py_gte_314() 1g
11from fastapi import FastAPI 1abc
12from fastapi.exceptions import PydanticV1NotSupportedError 1abc
14with warnings.catch_warnings(): 1abc
15 warnings.simplefilter("ignore", UserWarning) 1abc
16 from pydantic.v1 import BaseModel 1abc
19def test_raises_pydantic_v1_model_in_endpoint_param() -> None: 1abc
20 class ParamModelV1(BaseModel): 1hij
21 name: str 1hij
23 app = FastAPI() 1hij
25 with pytest.raises(PydanticV1NotSupportedError): 1hij
27 @app.post("/param") 1hij
28 def endpoint(data: ParamModelV1): # pragma: no cover 1hij
29 return data
32def test_raises_pydantic_v1_model_in_return_type() -> None: 1abc
33 class ReturnModelV1(BaseModel): 1klm
34 name: str 1klm
36 app = FastAPI() 1klm
38 with pytest.raises(PydanticV1NotSupportedError): 1klm
40 @app.get("/return") 1klm
41 def endpoint() -> ReturnModelV1: # pragma: no cover 1klm
42 return ReturnModelV1(name="test")
45def test_raises_pydantic_v1_model_in_response_model() -> None: 1abc
46 class ResponseModelV1(BaseModel): 1nop
47 name: str 1nop
49 app = FastAPI() 1nop
51 with pytest.raises(PydanticV1NotSupportedError): 1nop
53 @app.get("/response-model", response_model=ResponseModelV1) 1nop
54 def endpoint(): # pragma: no cover 1nop
55 return {"name": "test"}
58def test_raises_pydantic_v1_model_in_additional_responses_model() -> None: 1abc
59 class ErrorModelV1(BaseModel): 1def
60 detail: str 1def
62 app = FastAPI() 1def
64 with pytest.raises(PydanticV1NotSupportedError): 1def
66 @app.get( 1def
67 "/responses", response_model=None, responses={400: {"model": ErrorModelV1}} 1def
68 )
69 def endpoint(): # pragma: no cover 1def
70 return {"ok": True}
73def test_raises_pydantic_v1_model_in_union() -> None: 1abc
74 class ModelV1A(BaseModel): 1qrs
75 name: str 1qrs
77 app = FastAPI() 1qrs
79 with pytest.raises(PydanticV1NotSupportedError): 1qrs
81 @app.post("/union") 1qrs
82 def endpoint(data: dict | ModelV1A): # pragma: no cover 1qrs
83 return data
86def test_raises_pydantic_v1_model_in_sequence() -> None: 1abc
87 class ModelV1A(BaseModel): 1tuv
88 name: str 1tuv
90 app = FastAPI() 1tuv
92 with pytest.raises(PydanticV1NotSupportedError): 1tuv
94 @app.post("/sequence") 1tuv
95 def endpoint(data: list[ModelV1A]): # pragma: no cover 1tuv
96 return data