Coverage for tests/test_generic_parameterless_depends.py: 100%

29 statements  

« prev     ^ index     » next       coverage.py v7.6.1, created at 2025-12-04 08:29 +0000

1from typing import TypeVar 1abcdefg

2 

3from fastapi import Depends, FastAPI 1abcdefg

4from fastapi.testclient import TestClient 1abcdefg

5from typing_extensions import Annotated 1abcdefg

6 

7app = FastAPI() 1abcdefg

8 

9T = TypeVar("T") 1abcdefg

10 

11Dep = Annotated[T, Depends()] 1abcdefg

12 

13 

14class A: 1abcdefg

15 pass 1abcdefg

16 

17 

18class B: 1abcdefg

19 pass 1abcdefg

20 

21 

22@app.get("/a") 1abcdefg

23async def a(dep: Dep[A]): 1abcdefg

24 return {"cls": dep.__class__.__name__} 1hijklmn

25 

26 

27@app.get("/b") 1abcdefg

28async def b(dep: Dep[B]): 1abcdefg

29 return {"cls": dep.__class__.__name__} 1hijklmn

30 

31 

32client = TestClient(app) 1abcdefg

33 

34 

35def test_generic_parameterless_depends(): 1abcdefg

36 response = client.get("/a") 1hijklmn

37 assert response.status_code == 200, response.text 1hijklmn

38 assert response.json() == {"cls": "A"} 1hijklmn

39 

40 response = client.get("/b") 1hijklmn

41 assert response.status_code == 200, response.text 1hijklmn

42 assert response.json() == {"cls": "B"} 1hijklmn

43 

44 

45def test_openapi_schema(): 1abcdefg

46 response = client.get("/openapi.json") 1opqrstu

47 assert response.status_code == 200, response.text 1opqrstu

48 assert response.json() == { 1opqrstu

49 "info": {"title": "FastAPI", "version": "0.1.0"}, 

50 "openapi": "3.1.0", 

51 "paths": { 

52 "/a": { 

53 "get": { 

54 "operationId": "a_a_get", 

55 "responses": { 

56 "200": { 

57 "content": {"application/json": {"schema": {}}}, 

58 "description": "Successful Response", 

59 } 

60 }, 

61 "summary": "A", 

62 } 

63 }, 

64 "/b": { 

65 "get": { 

66 "operationId": "b_b_get", 

67 "responses": { 

68 "200": { 

69 "content": {"application/json": {"schema": {}}}, 

70 "description": "Successful Response", 

71 } 

72 }, 

73 "summary": "B", 

74 } 

75 }, 

76 }, 

77 }