返回 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