Unit Tests红灯:test_dedup_pure.py收集阶段报错 - worker db模块import时触发PG连接 #881

Closed
opened 2026-07-25 15:52:50 +08:00 by xiaoxia · 0 comments
Owner

问题描述

Unit Tests在收集阶段就报错,导致所有测试都跑不起来:

ERROR tests/unit/test_dedup_pure.py - sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: pg_database

根因

tests/unit/test_dedup_pure.py import video_processing.dedup → import worker_app.db → 模块加载时执行 ensure_database_exists(settings.database_url) → 查询 pg_database 表 → sqlite 不支持该系统表 → 报错 → 整个测试收集中断。

Unit Tests用sqlite跑,不应该在模块import时就连接数据库。

影响

  • 整个Unit Tests job失败,CI门禁红灯
  • 所有测试都跑不了,不只是dedup相关

修复建议

  1. worker_app/db.py 延迟初始化数据库连接,不要在模块加载时就 ensure_database_exists
  2. 或者 video_processing/dedup.py 不要 import db 模块(纯算法模块不应该依赖数据库)
  3. 或者在测试conftest里更早地mock掉db相关模块

标签

  • P1
  • bug
## 问题描述 Unit Tests在收集阶段就报错,导致所有测试都跑不起来: ``` ERROR tests/unit/test_dedup_pure.py - sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: pg_database ``` ## 根因 `tests/unit/test_dedup_pure.py` import `video_processing.dedup` → import `worker_app.db` → 模块加载时执行 `ensure_database_exists(settings.database_url)` → 查询 `pg_database` 表 → sqlite 不支持该系统表 → 报错 → 整个测试收集中断。 Unit Tests用sqlite跑,不应该在模块import时就连接数据库。 ## 影响 - 整个Unit Tests job失败,CI门禁红灯 - 所有测试都跑不了,不只是dedup相关 ## 修复建议 1. `worker_app/db.py` 延迟初始化数据库连接,不要在模块加载时就 `ensure_database_exists` 2. 或者 `video_processing/dedup.py` 不要 import db 模块(纯算法模块不应该依赖数据库) 3. 或者在测试conftest里更早地mock掉db相关模块 ## 标签 - P1 - bug
xiaoxia added the bugP1 labels 2026-07-25 15:52:50 +08:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: xiaoxia/xiaoxia-saas#881