Coverage for docs_src/dependency_testing/tutorial001_an.py: 100%
29 statements
« prev ^ index » next coverage.py v7.6.1, created at 2025-05-05 00:03 +0000
« prev ^ index » next coverage.py v7.6.1, created at 2025-05-05 00:03 +0000
1from typing import Union 1abcdef
3from fastapi import Depends, FastAPI 1abcdef
4from fastapi.testclient import TestClient 1abcdef
5from typing_extensions import Annotated 1abcdef
7app = FastAPI() 1abcdef
10async def common_parameters( 1abcdef
11 q: Union[str, None] = None, skip: int = 0, limit: int = 100
12):
13 return {"q": q, "skip": skip, "limit": limit} 1yzABCD
16@app.get("/items/") 1abcdef
17async def read_items(commons: Annotated[dict, Depends(common_parameters)]): 1abcdef
18 return {"message": "Hello Items!", "params": commons} 1yghizjklAmnoBpqrCstuDvwx
21@app.get("/users/") 1abcdef
22async def read_users(commons: Annotated[dict, Depends(common_parameters)]): 1abcdef
23 return {"message": "Hello Users!", "params": commons} 1EFGHIJKLMNOPQRSTUV
26client = TestClient(app) 1abcdef
29async def override_dependency(q: Union[str, None] = None): 1abcdef
30 return {"q": q, "skip": 5, "limit": 10} 1ghiEFGjklHIJmnoKLMpqrNOPstuQRSvwxTUV
33app.dependency_overrides[common_parameters] = override_dependency 1abcdef
36def test_override_in_items(): 1abcdef
37 response = client.get("/items/") 1gjmpsv
38 assert response.status_code == 200 1gjmpsv
39 assert response.json() == { 1gjmpsv
40 "message": "Hello Items!",
41 "params": {"q": None, "skip": 5, "limit": 10},
42 }
45def test_override_in_items_with_q(): 1abcdef
46 response = client.get("/items/?q=foo") 1ilorux
47 assert response.status_code == 200 1ilorux
48 assert response.json() == { 1ilorux
49 "message": "Hello Items!",
50 "params": {"q": "foo", "skip": 5, "limit": 10},
51 }
54def test_override_in_items_with_params(): 1abcdef
55 response = client.get("/items/?q=foo&skip=100&limit=200") 1hknqtw
56 assert response.status_code == 200 1hknqtw
57 assert response.json() == { 1hknqtw
58 "message": "Hello Items!",
59 "params": {"q": "foo", "skip": 5, "limit": 10},
60 }