1 changed files with 51 additions and 0 deletions
@ -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