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