fix(test): hevc 转码测试彻底移除 video_processing sys.modules mock 注入(39 用例跨文件污染修复) #1568
Reference in New Issue
Block a user
Delete Branch "fix/test-hevc-mock-no-sysmodules"
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?
背景
PR #1567 v3 修复后,CI Unit Tests 仍有 39 个用例失败(run 42831/42832)。根因:
test_ingest_hevc_transcode_task.py模块级向sys.modules注入video_processing.oss_helpers/video_processing.thumbnail_generator的 MagicMock,即使清理也因video_processing/__init__.py的from . import oss_helpers导致包属性残留,跨文件污染:normalize_storage_key()返回 MagicMockoss_bucket()返回 MagicMockoss_bucket()/upload_to_oss()返回 MagicMockupload_to_ossmock called 0 times修复
彻底不再向
sys.modules注入video_processing.*mock:sys.modules["video_processing.oss_helpers"] = MagicMock()和thumbnail_generator同款from video_processing import oss_helpers as _oss_helpers_real(CI 环境有 oss2 / requests 等依赖)_start_patches()中patch.object(_oss_helpers_real, "upload_to_oss", ...)打在真实模块属性上patch("video_processing.thumbnail_generator.extract_first_frame", ...)改为patch.object(_thumb_gen_real, "extract_first_frame", ...)worker_app.db/worker_app.celery_appmock 保留(独立包树,不影响共享工具包)影响面
patch.object().stop()自动还原模块属性,零跨文件副作用🤖 Generated by [构建服务器运维] agent
🚀 预览环境已部署
CI全绿,自动审批通过。
CI全绿,自动审批通过。
patch.object(_oss_helpers_real, ...) 对 ingest.py 函数体内的 from video_processing.oss_helpers import upload_to_oss 不生效, 改为 patch("video_processing.oss_helpers.upload_to_oss", ...) 与 thumb patcher 策略一致,确保 patch.start() 时从 sys.modules 解析模块对象再打补丁。【阻塞级判定】
📊 审查概览
🔴 阻塞级问题(必须修复)
无
💡 改进建议(不阻塞合并)
无
✅ 良好实践
sys.modules注入 Mock 导致的跨文件污染问题。通过移除对video_processing的 Mock 注入,改为导入真实模块并在测试时进行 patch,有效避免了因__init__.py导入机制导致的包属性残留为MagicMock的现象。sys.modules清理逻辑(跳过video_processing)与新的导入策略(保留真实模块)保持一致,逻辑自洽,确保了测试环境在执行前后状态的预期行为。✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能无明显问题
🤖 由 AI 代码审查机器人自动生成 | 2026-08-31 03:16:00 | 模型:
🗑️ 预览环境已清理
PR #1568 已关闭或合并,对应的预览环境已被清理。