Gun*_*ald 6 python dependency-injection fastapi
FastAPI我面临着和的问题Depends。
下面的代码片段包含两个dependency_overrides语句,一个在 a 中,@app.get另一个在@app.on_event. 当第一个测试运行时,另一个测试失败:
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,
}
Run Code Online (Sandbox Code Playgroud)
查看 FAST-API 文档(https://fastapi.tiangolo.com/advanced/advanced-dependency/),在我看来,依赖注入是针对路由实现的,而不是针对事件实现的。但也许有一个解决方法。
提前非常感谢...
| 归档时间: |
|
| 查看次数: |
1990 次 |
| 最近记录: |