Coverage for tests / test_validate_response_recursive / app.py: 100%

21 statements  

« prev     ^ index     » next       coverage.py v7.13.3, created at 2026-02-12 18:15 +0000

1from fastapi import FastAPI 1abcd

2from pydantic import BaseModel 1abcd

3 

4app = FastAPI() 1abcd

5 

6 

7class RecursiveItem(BaseModel): 1abcd

8 sub_items: list["RecursiveItem"] = [] 1abcd

9 name: str 1abcd

10 

11 

12class RecursiveSubitemInSubmodel(BaseModel): 1abcd

13 sub_items2: list["RecursiveItemViaSubmodel"] = [] 1abcd

14 name: str 1abcd

15 

16 

17class RecursiveItemViaSubmodel(BaseModel): 1abcd

18 sub_items1: list[RecursiveSubitemInSubmodel] = [] 1abcd

19 name: str 1abcd

20 

21 

22RecursiveItem.model_rebuild() 1abcd

23RecursiveSubitemInSubmodel.model_rebuild() 1abcd

24RecursiveItemViaSubmodel.model_rebuild() 1abcd

25 

26 

27@app.get("/items/recursive", response_model=RecursiveItem) 1abcd

28def get_recursive(): 1abcd

29 return {"name": "item", "sub_items": [{"name": "subitem", "sub_items": []}]} 1efg

30 

31 

32@app.get("/items/recursive-submodel", response_model=RecursiveItemViaSubmodel) 1abcd

33def get_recursive_submodel(): 1abcd

34 return { 1efg

35 "name": "item", 

36 "sub_items1": [ 

37 { 

38 "name": "subitem", 

39 "sub_items2": [ 

40 { 

41 "name": "subsubitem", 

42 "sub_items1": [{"name": "subsubsubitem", "sub_items2": []}], 

43 } 

44 ], 

45 } 

46 ], 

47 }