test_dependency_cache.py — fastapi Source File
Architecture documentation for test_dependency_cache.py, a python file in the fastapi codebase. 2 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR 0554cfc9_1137_9fcd_4a46_8c9f7095d7e7["test_dependency_cache.py"] 534f6e44_61b8_3c38_8b89_6934a6df9802["__init__.py"] 0554cfc9_1137_9fcd_4a46_8c9f7095d7e7 --> 534f6e44_61b8_3c38_8b89_6934a6df9802 a7c04dee_ee23_5891_b185_47ff6bed036d["testclient.py"] 0554cfc9_1137_9fcd_4a46_8c9f7095d7e7 --> a7c04dee_ee23_5891_b185_47ff6bed036d style 0554cfc9_1137_9fcd_4a46_8c9f7095d7e7 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
from fastapi import Depends, FastAPI, Security
from fastapi.testclient import TestClient
app = FastAPI()
counter_holder = {"counter": 0}
async def dep_counter():
counter_holder["counter"] += 1
return counter_holder["counter"]
async def super_dep(count: int = Depends(dep_counter)):
return count
@app.get("/counter/")
async def get_counter(count: int = Depends(dep_counter)):
return {"counter": count}
@app.get("/sub-counter/")
async def get_sub_counter(
subcount: int = Depends(super_dep), count: int = Depends(dep_counter)
):
return {"counter": count, "subcounter": subcount}
@app.get("/sub-counter-no-cache/")
async def get_sub_counter_no_cache(
subcount: int = Depends(super_dep),
count: int = Depends(dep_counter, use_cache=False),
):
return {"counter": count, "subcounter": subcount}
@app.get("/scope-counter")
async def get_scope_counter(
count: int = Security(dep_counter),
scope_count_1: int = Security(dep_counter, scopes=["scope"]),
scope_count_2: int = Security(dep_counter, scopes=["scope"]),
):
return {
"counter": count,
"scope_counter_1": scope_count_1,
"scope_counter_2": scope_count_2,
}
client = TestClient(app)
def test_normal_counter():
counter_holder["counter"] = 0
response = client.get("/counter/")
assert response.status_code == 200, response.text
assert response.json() == {"counter": 1}
response = client.get("/counter/")
assert response.status_code == 200, response.text
assert response.json() == {"counter": 2}
def test_sub_counter():
counter_holder["counter"] = 0
response = client.get("/sub-counter/")
assert response.status_code == 200, response.text
assert response.json() == {"counter": 1, "subcounter": 1}
response = client.get("/sub-counter/")
assert response.status_code == 200, response.text
assert response.json() == {"counter": 2, "subcounter": 2}
def test_sub_counter_no_cache():
counter_holder["counter"] = 0
response = client.get("/sub-counter-no-cache/")
assert response.status_code == 200, response.text
assert response.json() == {"counter": 2, "subcounter": 1}
response = client.get("/sub-counter-no-cache/")
assert response.status_code == 200, response.text
assert response.json() == {"counter": 4, "subcounter": 3}
def test_security_cache():
counter_holder["counter"] = 0
response = client.get("/scope-counter/")
assert response.status_code == 200, response.text
assert response.json() == {"counter": 1, "scope_counter_1": 2, "scope_counter_2": 2}
response = client.get("/scope-counter/")
assert response.status_code == 200, response.text
assert response.json() == {"counter": 3, "scope_counter_1": 4, "scope_counter_2": 4}
Domain
Subdomains
Functions
Dependencies
Source
Frequently Asked Questions
What does test_dependency_cache.py do?
test_dependency_cache.py is a source file in the fastapi codebase, written in python. It belongs to the FastAPI domain, Responses subdomain.
What functions are defined in test_dependency_cache.py?
test_dependency_cache.py defines 10 function(s): dep_counter, get_counter, get_scope_counter, get_sub_counter, get_sub_counter_no_cache, super_dep, test_normal_counter, test_security_cache, test_sub_counter, test_sub_counter_no_cache.
What does test_dependency_cache.py depend on?
test_dependency_cache.py imports 2 module(s): __init__.py, testclient.py.
Where is test_dependency_cache.py in the architecture?
test_dependency_cache.py is located at tests/test_dependency_cache.py (domain: FastAPI, subdomain: Responses, directory: tests).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free