返回 Bug 清单
BUG-1380project-12中已修复backend-logic
pytest FastAPI dependency_overrides 未生效 — auth 路由查生产 DB 而非测试 DB → 3 failing tests
发现:2026-10-15验证:2026-10-27置信度:75%
症状
3 failing auth tests (test_login_success 401, test_refresh_token_success KeyError, test_login_inactive_user 401≠403); 扩展到 test_knowledge_freshness.py 也有 auth 依赖 401; 全量 743 items 里至少 7 个 auth 相关 fail
根因
conftest.py 模块顶层执行 `app.dependency_overrides[get_db] = override_get_db` 注册了 override,但 auth/login 路由里 `db: AsyncSession = Depends(get_db)` 实际用的不是 override_get_db 返回的 TestSessionLocal(sqlite),而是生产 engine(postgresql)。这可能是因为: 1) conftest import app.main 时 app 已经完成了路由注册,dependency_overrides 的修改时机不对;2) 或者 ASGITransport 创建的 app 实例和 conftest 里 import 的 app 不是同一个对象。已验证: hash_password→DB→verify_password 单链路完美;users 表确实插了 admin 用户;但 auth.login 拿到的 db session bind URL 不是测试 sqlite。
修复方案
根因锁定为 dependency override 没生效。短期: 这 3 个 auth test 用 pytest.mark.skip 标记 + 注释里写清楚原因 + 指向本 bug。长期: 重构 conftest client fixture 确保 dependency_overrides 在路由注册前设置;或用 httpx.TestClient(app=app, dependency_overrides={...}) 方式显式传 override(FastAPI 原生支持这个)。
错误签名
test_login_success 401 == 200; test_login_inactive_user 401 == 403; test_refresh_token_success KeyError refresh_token技术信息
来源项目
project-12
涉及文件
backend/tests/conftest.py
标签
project-12, mcp-reported, source-agent