fix(api+tests): CI unit-test failures for WS progress endpoint #2104
Reference in New Issue
Block a user
Delete Branch "feat/2051-ws-ci-fix"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
问题
#2103 合入后,CI Unit Tests job 仍然失败(两个原因):
app/db.py和app/dependencies.py没有 honoursettings.effective_database_url:这两个文件在模块级初始化 engine/SessionLocal 时硬编码用了settings.DATABASE_URL(Postgres 地址),而 CI 的 unit-tests job 不启动 Postgres 服务(靠USE_IN_MEMORY_DB=true走 SQLite)。worker 的worker_app/db.py早就正确使用了effective_database_url属性,API 这两个文件没跟上,导致单测 import app.db 时连不上 Postgres → OperationalError。test_viral_video_ws.py 用全局
_SRC_PATCHES双路 patch sqlalchemy_impl 包:作为 workaround 我之前加了模块级 patch,但这会污染 sys.modules 导致同进程跑其他 viral_video 测试时拿到 MagicMock 而非真实 session factory;另外from worker_app.tasks import viral_video走了另一条 sys.modules 路径创建了第二个 module 对象,patch 通过apps.worker.*路径打上去的东西在worker_app.*路径下看不到,造成跨文件测试隔离失败。修复
apps/api/app/db.py、apps/api/app/dependencies.py:将settings.DATABASE_URL改为settings.effective_database_url,与 worker_app 对齐。tests/unit/test_viral_video_ws.py:移除所有全局_SRC_PATCHEShack;改在各测试内部用patch.object(_app_db, "SessionLocal", ...)局部 patch;worker 模块 import 改为from apps.worker.worker_app.tasks import viral_video与其他测试保持一致。关联
🚀 预览环境已部署
🗑️ 预览环境已清理
PR #2104 已关闭或合并,对应的预览环境已被清理。