Python FastAPI:dependency_覆盖不会覆盖@app.on_事件中的依赖项
我面临Python FastAPI:dependency_覆盖不会覆盖@app.on_事件中的依赖项,python,dependency-injection,fastapi,Python,Dependency Injection,Fastapi,我面临FastAPI和依赖的问题 下面的代码段包含两个dependency\u overrides语句,一个在@app.get中,另一个在@app.on\u事件中。当第一个测试运行到另一个测试失败时: from fastapi import Depends, FastAPI from fastapi.testclient import TestClient app = FastAPI() values = {} def startup_parameters(): return {
FastAPI
和依赖的问题
下面的代码段包含两个dependency\u overrides
语句,一个在@app.get
中,另一个在@app.on\u事件中。当第一个测试运行到另一个测试失败时:
from fastapi import Depends, FastAPI
from fastapi.testclient import TestClient
app = FastAPI()
values = {}
def startup_parameters():
return {
"foo": None,
"bar": None
}
def update_parameters():
return {
"foo": 1,
"bar": 2
}
def override_parameters():
return {
"foo": 5,
"bar": 10
}
@app.on_event("startup")
async def on_startup(commons: dict = Depends(startup_parameters)) -> None:
global values
values = commons
@app.get("/update/")
async def set_items(commons: dict = Depends(update_parameters)) -> None:
global values
values = commons
@app.get("/items/")
async def read_items():
return values
# Test runs
def test_update_override():
with TestClient(app) as client:
app.dependency_overrides[update_parameters] = override_parameters
client.get("/update/")
response = client.get("/items/")
assert response.json() == {
"foo": 5,
"bar": 10,
}
# Test fails
def test_startup_override():
with TestClient(app) as client:
app.dependency_overrides[startup_parameters] = override_parameters
response = client.get("/items/")
assert response.json() == {
"foo": 5,
"bar": 10,
}
查看FAST-API文档()在我看来,依赖注入是针对路由而不是事件实现的。
但也许有一个解决办法
提前非常感谢…您可以使用基于设置/环境的方法,根据给定的环境(prod/test)加载不同的值,如下所述: