Coverage for tests / test_serialize_response.py: 100%
30 statements
« prev ^ index » next coverage.py v7.13.3, created at 2026-02-21 17:29 +0000
« prev ^ index » next coverage.py v7.13.3, created at 2026-02-21 17:29 +0000
1from fastapi import FastAPI 1abcd
2from fastapi.testclient import TestClient 1abcd
3from pydantic import BaseModel 1abcd
5app = FastAPI() 1abcd
8class Item(BaseModel): 1abcd
9 name: str 1abcd
10 price: float | None = None 1abcd
11 owner_ids: list[int] | None = None 1abcd
14@app.get("/items/valid", response_model=Item) 1abcd
15def get_valid(): 1abcd
16 return {"name": "valid", "price": 1.0} 1efg
19@app.get("/items/coerce", response_model=Item) 1abcd
20def get_coerce(): 1abcd
21 return {"name": "coerce", "price": "1.0"} 1hij
24@app.get("/items/validlist", response_model=list[Item]) 1abcd
25def get_validlist(): 1abcd
26 return [ 1klm
27 {"name": "foo"},
28 {"name": "bar", "price": 1.0},
29 {"name": "baz", "price": 2.0, "owner_ids": [1, 2, 3]},
30 ]
33client = TestClient(app) 1abcd
36def test_valid(): 1abcd
37 response = client.get("/items/valid") 1efg
38 response.raise_for_status() 1efg
39 assert response.json() == {"name": "valid", "price": 1.0, "owner_ids": None} 1efg
42def test_coerce(): 1abcd
43 response = client.get("/items/coerce") 1hij
44 response.raise_for_status() 1hij
45 assert response.json() == {"name": "coerce", "price": 1.0, "owner_ids": None} 1hij
48def test_validlist(): 1abcd
49 response = client.get("/items/validlist") 1klm
50 response.raise_for_status() 1klm
51 assert response.json() == [ 1klm
52 {"name": "foo", "price": None, "owner_ids": None},
53 {"name": "bar", "price": 1.0, "owner_ids": None},
54 {"name": "baz", "price": 2.0, "owner_ids": [1, 2, 3]},
55 ]