【发布时间】:2019-11-13 11:08:53
【问题描述】:
下面的 FastApi 测试应该使用我的 get_mock_db 函数而不是 get_db 函数,但事实并非如此。目前测试失败,因为它使用了真实的数据库。
def get_mock_db():
example_todo = Todo(title="test title", done=True, id=1)
class MockDb:
def query(self, _model):
mock = Mock()
mock.get = lambda _param: example_todo
def all(self):
return [example_todo]
def add(self):
pass
def commit(self):
pass
def refresh(self, todo: CreateTodo):
return Todo(title=todo.title, done=todo.done, id=1)
return MockDb()
client = TestClient(app)
app.dependency_overrides[get_db] = get_mock_db
def test_get_all():
response = client.get("/api/v1/todo")
assert response.status_code == 200
assert response.json() == [
{
"title": "test title",
"done": True,
"id": 1,
}
]
【问题讨论】:
-
您可能必须添加使用 get_db 的代码才能查看发生了什么。
标签: python python-3.x dependency-injection fastapi