Browse Source

🚸 Improve error message for invalid query parameter type annotations (#14479)

Co-authored-by: Anton.D <[email protected]>
Co-authored-by: Motov Yurii <[email protected]>
pull/14816/head
Anton 5 months ago
committed by GitHub
parent
commit
41352de24c
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 2
      fastapi/dependencies/utils.py
  2. 20
      tests/test_invalid_sequence_param.py

2
fastapi/dependencies/utils.py

@ -519,7 +519,7 @@ def analyze_param(
# For Pydantic v1 # For Pydantic v1
and getattr(field, "shape", 1) == 1 and getattr(field, "shape", 1) == 1
) )
) ), f"Query parameter {param_name!r} must be one of the supported types"
return ParamDetails(type_annotation=type_annotation, depends=depends, field=field) return ParamDetails(type_annotation=type_annotation, depends=depends, field=field)

20
tests/test_invalid_sequence_param.py

@ -6,7 +6,10 @@ from pydantic import BaseModel
def test_invalid_sequence(): def test_invalid_sequence():
with pytest.raises(AssertionError): with pytest.raises(
AssertionError,
match="Query parameter 'q' must be one of the supported types",
):
app = FastAPI() app = FastAPI()
class Item(BaseModel): class Item(BaseModel):
@ -18,7 +21,10 @@ def test_invalid_sequence():
def test_invalid_tuple(): def test_invalid_tuple():
with pytest.raises(AssertionError): with pytest.raises(
AssertionError,
match="Query parameter 'q' must be one of the supported types",
):
app = FastAPI() app = FastAPI()
class Item(BaseModel): class Item(BaseModel):
@ -30,7 +36,10 @@ def test_invalid_tuple():
def test_invalid_dict(): def test_invalid_dict():
with pytest.raises(AssertionError): with pytest.raises(
AssertionError,
match="Query parameter 'q' must be one of the supported types",
):
app = FastAPI() app = FastAPI()
class Item(BaseModel): class Item(BaseModel):
@ -42,7 +51,10 @@ def test_invalid_dict():
def test_invalid_simple_dict(): def test_invalid_simple_dict():
with pytest.raises(AssertionError): with pytest.raises(
AssertionError,
match="Query parameter 'q' must be one of the supported types",
):
app = FastAPI() app = FastAPI()
class Item(BaseModel): class Item(BaseModel):

Loading…
Cancel
Save