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

1import sys 1agbc

2import warnings 1agbc

3 

4import pytest 1agbc

5 

6from tests.utils import skip_module_if_py_gte_314 1agbc

7 

8if sys.version_info >= (3, 14): 1agbc

9 skip_module_if_py_gte_314() 1g

10 

11from fastapi import FastAPI 1abc

12from fastapi.exceptions import PydanticV1NotSupportedError 1abc

13 

14with warnings.catch_warnings(): 1abc

15 warnings.simplefilter("ignore", UserWarning) 1abc

16 from pydantic.v1 import BaseModel 1abc

17 

18 

19def test_raises_pydantic_v1_model_in_endpoint_param() -> None: 1abc

20 class ParamModelV1(BaseModel): 1hij

21 name: str 1hij

22 

23 app = FastAPI() 1hij

24 

25 with pytest.raises(PydanticV1NotSupportedError): 1hij

26 

27 @app.post("/param") 1hij

28 def endpoint(data: ParamModelV1): # pragma: no cover 1hij

29 return data 

30 

31 

32def test_raises_pydantic_v1_model_in_return_type() -> None: 1abc

33 class ReturnModelV1(BaseModel): 1klm

34 name: str 1klm

35 

36 app = FastAPI() 1klm

37 

38 with pytest.raises(PydanticV1NotSupportedError): 1klm

39 

40 @app.get("/return") 1klm

41 def endpoint() -> ReturnModelV1: # pragma: no cover 1klm

42 return ReturnModelV1(name="test") 

43 

44 

45def test_raises_pydantic_v1_model_in_response_model() -> None: 1abc

46 class ResponseModelV1(BaseModel): 1nop

47 name: str 1nop

48 

49 app = FastAPI() 1nop

50 

51 with pytest.raises(PydanticV1NotSupportedError): 1nop

52 

53 @app.get("/response-model", response_model=ResponseModelV1) 1nop

54 def endpoint(): # pragma: no cover 1nop

55 return {"name": "test"} 

56 

57 

58def test_raises_pydantic_v1_model_in_additional_responses_model() -> None: 1abc

59 class ErrorModelV1(BaseModel): 1def

60 detail: str 1def

61 

62 app = FastAPI() 1def

63 

64 with pytest.raises(PydanticV1NotSupportedError): 1def

65 

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} 

71 

72 

73def test_raises_pydantic_v1_model_in_union() -> None: 1abc

74 class ModelV1A(BaseModel): 1qrs

75 name: str 1qrs

76 

77 app = FastAPI() 1qrs

78 

79 with pytest.raises(PydanticV1NotSupportedError): 1qrs

80 

81 @app.post("/union") 1qrs

82 def endpoint(data: dict | ModelV1A): # pragma: no cover 1qrs

83 return data 

84 

85 

86def test_raises_pydantic_v1_model_in_sequence() -> None: 1abc

87 class ModelV1A(BaseModel): 1tuv

88 name: str 1tuv

89 

90 app = FastAPI() 1tuv

91 

92 with pytest.raises(PydanticV1NotSupportedError): 1tuv

93 

94 @app.post("/sequence") 1tuv

95 def endpoint(data: list[ModelV1A]): # pragma: no cover 1tuv

96 return data