mirror of https://github.com/tiangolo/fastapi.git
✅ Add tests for validation errors in response
This commit is contained in:
parent
613c3f3e95
commit
57ff677027
|
|
@ -0,0 +1,51 @@
|
||||||
|
from typing import List
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
from fastapi import FastAPI
|
||||||
|
from pydantic import BaseModel, ValidationError
|
||||||
|
from starlette.testclient import TestClient
|
||||||
|
|
||||||
|
app = FastAPI()
|
||||||
|
|
||||||
|
|
||||||
|
class Item(BaseModel):
|
||||||
|
name: str
|
||||||
|
price: float = None
|
||||||
|
owner_ids: List[int] = None
|
||||||
|
|
||||||
|
|
||||||
|
@app.get("/items/invalid", response_model=Item)
|
||||||
|
def get_invalid():
|
||||||
|
return {"name": "invalid", "price": "foo"}
|
||||||
|
|
||||||
|
|
||||||
|
@app.get("/items/innerinvalid", response_model=Item)
|
||||||
|
def get_innerinvalid():
|
||||||
|
return {"name": "double invalid", "price": "foo", "owner_ids": ["foo", "bar"]}
|
||||||
|
|
||||||
|
|
||||||
|
@app.get("/items/invalidlist", response_model=List[Item])
|
||||||
|
def get_invalidlist():
|
||||||
|
return [
|
||||||
|
{"name": "foo"},
|
||||||
|
{"name": "bar", "price": "bar"},
|
||||||
|
{"name": "baz", "price": "baz"},
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
client = TestClient(app)
|
||||||
|
|
||||||
|
|
||||||
|
def test_invalid():
|
||||||
|
with pytest.raises(ValidationError):
|
||||||
|
client.get("/items/invalid")
|
||||||
|
|
||||||
|
|
||||||
|
def test_double_invalid():
|
||||||
|
with pytest.raises(ValidationError):
|
||||||
|
client.get("/items/innerinvalid")
|
||||||
|
|
||||||
|
|
||||||
|
def test_invalid_list():
|
||||||
|
with pytest.raises(ValidationError):
|
||||||
|
client.get("/items/invalidlist")
|
||||||
Loading…
Reference in New Issue