【发布时间】:2021-01-31 18:20:06
【问题描述】:
在 Fast API 中进行单元测试时,我无法访问 SQLAlchemy。
def test_successful_register_ios():
response = client.post("/register/",headers={},json={})
assert response.status_code == 201
device = get_db().query(Device).get("a1")
assert device.expires_at == mydate
AttributeError: 'generator' 对象没有属性 'query'
在我的测试类中,我应用了所有的覆盖:
from database.database import Base
from main import app, get_db
settings = Settings()
engine = create_engine(settings.sqlalchemy_database_uri)
TestingSessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base.metadata.create_all(bind=engine)
client = TestClient(app)
def override_get_db():
try:
db = TestingSessionLocal()
yield db
finally:
db.close()
app.dependency_overrides[get_db] = override_get_db
我不认为get_db().query(Device).get("a1") 是正确的做法。但是我很困惑,文档没有涵盖这种情况。
【问题讨论】:
-
看起来 FastAPI 中的
dependency_overrides仅在使用Depends使用依赖注入时才有效。我在提供的代码中没有看到这一点。
标签: unit-testing sqlalchemy fastapi