Coverage for tests / test_validate_response_dataclass.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
1import pytest 1adbc
2from fastapi import FastAPI 1adbc
3from fastapi.exceptions import ResponseValidationError 1adbc
4from fastapi.testclient import TestClient 1adbc
5from pydantic.dataclasses import dataclass 1adbc
7app = FastAPI() 1adbc
10@dataclass 1adbc
11class Item: 1adbc
12 name: str 1abc
13 price: float | None = None 1adbc
14 owner_ids: list[int] | None = None 1adbc
17@app.get("/items/invalid", response_model=Item) 1adbc
18def get_invalid(): 1adbc
19 return {"name": "invalid", "price": "foo"} 1efgh
22@app.get("/items/innerinvalid", response_model=Item) 1adbc
23def get_innerinvalid(): 1adbc
24 return {"name": "double invalid", "price": "foo", "owner_ids": ["foo", "bar"]} 1ijkl
27@app.get("/items/invalidlist", response_model=list[Item]) 1adbc
28def get_invalidlist(): 1adbc
29 return [ 1mnop
30 {"name": "foo"},
31 {"name": "bar", "price": "bar"},
32 {"name": "baz", "price": "baz"},
33 ]
36client = TestClient(app) 1adbc
39def test_invalid(): 1adbc
40 with pytest.raises(ResponseValidationError): 1efgh
41 client.get("/items/invalid") 1efgh
44def test_double_invalid(): 1adbc
45 with pytest.raises(ResponseValidationError): 1ijkl
46 client.get("/items/innerinvalid") 1ijkl
49def test_invalid_list(): 1adbc
50 with pytest.raises(ResponseValidationError): 1mnop
51 client.get("/items/invalidlist") 1mnop