Coverage for tests/test_dependency_class.py: 100%
61 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 AsyncGenerator, Generator 1abcdef
3import pytest 1abcdef
4from fastapi import Depends, FastAPI 1abcdef
5from fastapi.testclient import TestClient 1abcdef
7app = FastAPI() 1abcdef
10class CallableDependency: 1abcdef
11 def __call__(self, value: str) -> str: 1abcdef
12 return value 1ghijkl
15class CallableGenDependency: 1abcdef
16 def __call__(self, value: str) -> Generator[str, None, None]: 1abcdef
17 yield value 1ghijkl
20class AsyncCallableDependency: 1abcdef
21 async def __call__(self, value: str) -> str: 1abcdef
22 return value 1ghijkl
25class AsyncCallableGenDependency: 1abcdef
26 async def __call__(self, value: str) -> AsyncGenerator[str, None]: 1abcdef
27 yield value 1ghijkl
30class MethodsDependency: 1abcdef
31 def synchronous(self, value: str) -> str: 1abcdef
32 return value 1ghijkl
34 async def asynchronous(self, value: str) -> str: 1abcdef
35 return value 1ghijkl
37 def synchronous_gen(self, value: str) -> Generator[str, None, None]: 1abcdef
38 yield value 1ghijkl
40 async def asynchronous_gen(self, value: str) -> AsyncGenerator[str, None]: 1abcdef
41 yield value 1ghijkl
44callable_dependency = CallableDependency() 1abcdef
45callable_gen_dependency = CallableGenDependency() 1abcdef
46async_callable_dependency = AsyncCallableDependency() 1abcdef
47async_callable_gen_dependency = AsyncCallableGenDependency() 1abcdef
48methods_dependency = MethodsDependency() 1abcdef
51@app.get("/callable-dependency") 1abcdef
52async def get_callable_dependency(value: str = Depends(callable_dependency)): 1abcdef
53 return value 1ghijkl
56@app.get("/callable-gen-dependency") 1abcdef
57async def get_callable_gen_dependency(value: str = Depends(callable_gen_dependency)): 1abcdef
58 return value 1ghijkl
61@app.get("/async-callable-dependency") 1abcdef
62async def get_async_callable_dependency( 1abcdef
63 value: str = Depends(async_callable_dependency),
64):
65 return value 1ghijkl
68@app.get("/async-callable-gen-dependency") 1abcdef
69async def get_async_callable_gen_dependency( 1abcdef
70 value: str = Depends(async_callable_gen_dependency),
71):
72 return value 1ghijkl
75@app.get("/synchronous-method-dependency") 1abcdef
76async def get_synchronous_method_dependency( 1abcdef
77 value: str = Depends(methods_dependency.synchronous),
78):
79 return value 1ghijkl
82@app.get("/synchronous-method-gen-dependency") 1abcdef
83async def get_synchronous_method_gen_dependency( 1abcdef
84 value: str = Depends(methods_dependency.synchronous_gen),
85):
86 return value 1ghijkl
89@app.get("/asynchronous-method-dependency") 1abcdef
90async def get_asynchronous_method_dependency( 1abcdef
91 value: str = Depends(methods_dependency.asynchronous),
92):
93 return value 1ghijkl
96@app.get("/asynchronous-method-gen-dependency") 1abcdef
97async def get_asynchronous_method_gen_dependency( 1abcdef
98 value: str = Depends(methods_dependency.asynchronous_gen),
99):
100 return value 1ghijkl
103client = TestClient(app) 1abcdef
106@pytest.mark.parametrize( 1abcdef
107 "route,value",
108 [
109 ("/callable-dependency", "callable-dependency"),
110 ("/callable-gen-dependency", "callable-gen-dependency"),
111 ("/async-callable-dependency", "async-callable-dependency"),
112 ("/async-callable-gen-dependency", "async-callable-gen-dependency"),
113 ("/synchronous-method-dependency", "synchronous-method-dependency"),
114 ("/synchronous-method-gen-dependency", "synchronous-method-gen-dependency"),
115 ("/asynchronous-method-dependency", "asynchronous-method-dependency"),
116 ("/asynchronous-method-gen-dependency", "asynchronous-method-gen-dependency"),
117 ],
118)
119def test_class_dependency(route, value): 1abcdef
120 response = client.get(route, params={"value": value}) 1ghijkl
121 assert response.status_code == 200, response.text 1ghijkl
122 assert response.json() == value 1ghijkl