test: P3-1 第45波单元测试(schema_guard/sms_service/job_use_cases) #827

Merged
xiaoxia merged 2 commits from test/unit-test-wave45 into develop 2026-07-24 16:44:39 +08:00
Owner

变更内容

  • 补充 schema_guard 测试 +12 个(normalize_environment/assert_auto_create_schema_allowed 各种场景)
  • 新增 sms_service 测试 16 个(Noop/Aliyun 初始化/发送/SDK缺失/工厂函数)
  • 新增 job_use_cases 测试 29 个(Create/Submit/UpdateProgress/Complete/Fail/Retry/Cancel/Get/List/Statistics 全链路)
  • 合计 +57 个测试

测试结果

  • 本地全量:4528 passed, 8 skipped
## 变更内容 - 补充 schema_guard 测试 +12 个(normalize_environment/assert_auto_create_schema_allowed 各种场景) - 新增 sms_service 测试 16 个(Noop/Aliyun 初始化/发送/SDK缺失/工厂函数) - 新增 job_use_cases 测试 29 个(Create/Submit/UpdateProgress/Complete/Fail/Retry/Cancel/Get/List/Statistics 全链路) - 合计 +57 个测试 ## 测试结果 - 本地全量:4528 passed, 8 skipped
xiaoxia added 2 commits 2026-07-24 13:34:55 +08:00
test: P3-1 第45波单元测试(schema_guard/sms_service/job_use_cases)
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 49s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 48s
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 49s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m23s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m27s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 38s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 2m11s
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m33s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m13s
AI Code Review / AI Code Review (pull_request) Successful in 3m28s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m23s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 4m57s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 3m29s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 9m17s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 12s
9d9ed9f378
Collaborator

代码审查结果 - PR #827

⚠️ 问题(2个需要修改)

  1. tests/unit/test_sms_service.py 第119行:无效的 Mock 代码块

    • 问题描述with patch.object(svc, "_AliyunSmsService__import_sdk", create=True): pass 这段代码没有任何实际作用。它 patch 了私有方法,但在上下文管理器内部没有进行任何操作或断言,退出后 patch 即失效。这通常是调试残留代码或对 patch 机制的误解。
    • 修改建议:删除该行代码及对应的缩进块。如果意图是阻止 SDK 导入,下方的 sys.modules 修改已经覆盖了该需求。
  2. tests/unit/test_sms_service.py 第137行:无效的 Mock 代码块

    • 问题描述with patch.object(svc, "send_template_sms"): pass 同样是无作用的代码。它 patch 了被测试方法本身,但随后立即退出上下文,对后续调用 svc.send_template_sms 没有任何影响。
    • 修改建议:删除该行代码及对应的缩进块。

💡 建议(1个可选)

  1. tests/unit/test_job_use_cases.py 第167行:状态机逻辑一致性存疑
    • 具体内容test_complete_from_pending 测试用例允许任务从 PENDING 状态直接流转到 SUCCESS 状态。然而,test_update_progress_wrong_status(第127行)明确禁止在 PENDING 状态下更新进度。这导致了逻辑上的不一致:一个从未开始运行(RUNNING)的任务可以直接完成,却不能报告进度。建议确认业务逻辑是否允许跳过 RUNNING 状态直接完成,如果不允许,该测试用例应当抛出异常。

格式检查通过 | 逻辑审查需修改 | 性能检查通过


🤖 由 AI 代码审查机器人自动生成 | 2026-07-24 05:39:13 | 模型:

## 代码审查结果 - PR #827 ### ⚠️ 问题(2个需要修改) 1. **tests/unit/test_sms_service.py 第119行**:无效的 Mock 代码块 - **问题描述**:`with patch.object(svc, "_AliyunSmsService__import_sdk", create=True): pass` 这段代码没有任何实际作用。它 patch 了私有方法,但在上下文管理器内部没有进行任何操作或断言,退出后 patch 即失效。这通常是调试残留代码或对 patch 机制的误解。 - **修改建议**:删除该行代码及对应的缩进块。如果意图是阻止 SDK 导入,下方的 `sys.modules` 修改已经覆盖了该需求。 2. **tests/unit/test_sms_service.py 第137行**:无效的 Mock 代码块 - **问题描述**:`with patch.object(svc, "send_template_sms"): pass` 同样是无作用的代码。它 patch 了被测试方法本身,但随后立即退出上下文,对后续调用 `svc.send_template_sms` 没有任何影响。 - **修改建议**:删除该行代码及对应的缩进块。 ### 💡 建议(1个可选) 1. **tests/unit/test_job_use_cases.py 第167行**:状态机逻辑一致性存疑 - **具体内容**:`test_complete_from_pending` 测试用例允许任务从 `PENDING` 状态直接流转到 `SUCCESS` 状态。然而,`test_update_progress_wrong_status`(第127行)明确禁止在 `PENDING` 状态下更新进度。这导致了逻辑上的不一致:一个从未开始运行(RUNNING)的任务可以直接完成,却不能报告进度。建议确认业务逻辑是否允许跳过 RUNNING 状态直接完成,如果不允许,该测试用例应当抛出异常。 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ✅ 性能检查通过 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-24 05:39:13 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia merged commit e9c5f2b78f into develop 2026-07-24 16:44:39 +08:00
xiaoxia deleted branch test/unit-test-wave45 2026-07-24 16:44:39 +08:00

🗑️ 预览环境已清理

PR #827 已关闭或合并,对应的预览环境已被清理。

如有需要,可以重新打开 PR 来重新生成预览环境。

🗑️ **预览环境已清理** PR #827 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Sign in to join this conversation.