From: Sebastián Ramírez Date: Sat, 22 Dec 2018 14:20:01 +0000 (+0400) Subject: :white_check_mark: Add tests for validation errors in response X-Git-Tag: 0.1.13~12 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=57ff677027eec19c0d659e050675e7a320123637;p=thirdparty%2Ffastapi%2Ffastapi.git :white_check_mark: Add tests for validation errors in response --- diff --git a/tests/test_serialize_response.py b/tests/test_serialize_response.py new file mode 100644 index 0000000000..c0382b8994 --- /dev/null +++ b/tests/test_serialize_response.py @@ -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")