test(wave153): edit_plan_clip剪辑计划片段单测 +44 #1081

Merged
xiaoxia merged 3 commits from test/wave153-edit-plan-clip into develop 2026-07-28 16:19:04 +08:00
Owner

概述

为 domain/edit_plan_clip.py 新增 44 个单测,纯逻辑 0 外部依赖。

覆盖范围

  • EditPlanClipStatus 枚举:7个 - 四种状态值 + StrEnum兼容
  • create 工厂/校验:17个 - 必填/格式/边界值/默认值
  • assign_asset 素材分配:5个 - 正常/strip/空值
  • 状态流转:8个 - pending→ready→rendered/failed 及非法跳转
  • 计算属性:7个 - end_time / has_asset / config独立性

验证

  • ruff: All checks passed
  • black: 格式化通过
  • pytest: 44 passed
## 概述 为 domain/edit_plan_clip.py 新增 44 个单测,纯逻辑 0 外部依赖。 ## 覆盖范围 - **EditPlanClipStatus 枚举**:7个 - 四种状态值 + StrEnum兼容 - **create 工厂/校验**:17个 - 必填/格式/边界值/默认值 - **assign_asset 素材分配**:5个 - 正常/strip/空值 - **状态流转**:8个 - pending→ready→rendered/failed 及非法跳转 - **计算属性**:7个 - end_time / has_asset / config独立性 ## 验证 - ruff: All checks passed - black: 格式化通过 - pytest: 44 passed
Collaborator

【阻塞级判定】

  • 是否存在阻塞级问题:否
  • 阻塞级问题数量:0 个

📊 审查概览

  • 整体评价:通过
  • 建议级问题数量:3 个

🔴 阻塞级问题(必须修复)

💡 改进建议(不阻塞合并)

  1. [tests/unit/domain/test_duplication.py, tests/unit/domain/test_edit_plan_clip.py] 异常测试风格优化

    • 具体内容:当前代码中大量使用了 try...except...assert False 的模式来测试异常抛出(如 test_create_negative_source_start)。在 Pytest 中,推荐使用 pytest.raises 上下文管理器,代码更简洁且意图更明确。
    • 示例:
      # 当前写法
      try:
          DuplicateSegment.create(-1, 5, "v", "n", 0, 1, 50.0)
          assert False, "应该抛出 ValueError"
      except ValueError as e:
          assert "source" in str(e).lower()
      
      # 建议写法
      with pytest.raises(ValueError, match="source"):
          DuplicateSegment.create(-1, 5, "v", "n", 0, 1, 50.0)
      
  2. [tests/unit/domain/test_duplication.py:287, tests/unit/domain/test_edit_plan_clip.py:325] 解耦时间依赖

    • 具体内容:test_create_has_timestampstest_status_change_updates_timestamp 依赖系统当前时间,通过计算时间差(< 1.0)来判断。在高负载或系统时钟调整的情况下,这类测试可能会变得不稳定(Flaky Tests)。建议在 Domain 层对象创建时支持注入时间提供者,或者在测试中使用 unittest.mock 固定时间,以确保测试的确定性。
  3. [tests/unit/domain/test_edit_plan_clip.py:29] 避免硬编码枚举长度

    • 具体内容:test_four_statuses 中断言 assert len(EditPlanClipStatus) == 4。这种写法会导致未来如果业务逻辑扩展增加新的状态枚举,即使新状态是合法的,单元测试也会失败。建议测试具体的枚举值是否存在,或者如果需要严格控制状态数量,应在注释中说明原因。

良好实践

  • 测试覆盖度高:对工厂方法、参数校验(负值、空值、边界值)、状态流转(包括非法状态转换)都有非常详尽的测试用例,体现了良好的测试习惯。
  • 防御性编程验证:测试用例中包含了对 strip 逻辑、列表独立性(深拷贝/引用隔离)的验证,有效防止了可变对象共享带来的副作用。
  • 文档清晰:每个测试方法都有清晰的 docstring 说明测试意图,代码可读性高。

格式检查通过 | 逻辑审查通过 | 性能无明显问题


🤖 由 AI 代码审查机器人自动生成 | 2026-07-28 06:23:06 | 模型:

### 【阻塞级判定】 - 是否存在阻塞级问题:否 - 阻塞级问题数量:0 个 ### 📊 审查概览 - 整体评价:通过 - 建议级问题数量:3 个 ### 🔴 阻塞级问题(必须修复) 无 ### 💡 改进建议(不阻塞合并) 1. **[tests/unit/domain/test_duplication.py, tests/unit/domain/test_edit_plan_clip.py] 异常测试风格优化** - 具体内容:当前代码中大量使用了 `try...except...assert False` 的模式来测试异常抛出(如 `test_create_negative_source_start`)。在 Pytest 中,推荐使用 `pytest.raises` 上下文管理器,代码更简洁且意图更明确。 - 示例: ```python # 当前写法 try: DuplicateSegment.create(-1, 5, "v", "n", 0, 1, 50.0) assert False, "应该抛出 ValueError" except ValueError as e: assert "source" in str(e).lower() # 建议写法 with pytest.raises(ValueError, match="source"): DuplicateSegment.create(-1, 5, "v", "n", 0, 1, 50.0) ``` 2. **[tests/unit/domain/test_duplication.py:287, tests/unit/domain/test_edit_plan_clip.py:325] 解耦时间依赖** - 具体内容:`test_create_has_timestamps` 和 `test_status_change_updates_timestamp` 依赖系统当前时间,通过计算时间差(`< 1.0`)来判断。在高负载或系统时钟调整的情况下,这类测试可能会变得不稳定(Flaky Tests)。建议在 Domain 层对象创建时支持注入时间提供者,或者在测试中使用 `unittest.mock` 固定时间,以确保测试的确定性。 3. **[tests/unit/domain/test_edit_plan_clip.py:29] 避免硬编码枚举长度** - 具体内容:`test_four_statuses` 中断言 `assert len(EditPlanClipStatus) == 4`。这种写法会导致未来如果业务逻辑扩展增加新的状态枚举,即使新状态是合法的,单元测试也会失败。建议测试具体的枚举值是否存在,或者如果需要严格控制状态数量,应在注释中说明原因。 ### ✅ 良好实践 - **测试覆盖度高**:对工厂方法、参数校验(负值、空值、边界值)、状态流转(包括非法状态转换)都有非常详尽的测试用例,体现了良好的测试习惯。 - **防御性编程验证**:测试用例中包含了对 `strip` 逻辑、列表独立性(深拷贝/引用隔离)的验证,有效防止了可变对象共享带来的副作用。 - **文档清晰**:每个测试方法都有清晰的 docstring 说明测试意图,代码可读性高。 --- ✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能无明显问题 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-28 06:23:06 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia changed target branch from main to develop 2026-07-28 16:09:26 +08:00
xiaoxia added 2 commits 2026-07-28 16:12:06 +08:00
为 domain/quota.py 新增 80 个单测,纯逻辑 0 外部依赖:

- QuotaDimension 枚举:11个
- QuotaTier 数据类:6个
- QUOTA_TIERS 常量:12个(三档套餐核心字段+单调递增验证)
- QuotaWarningLevel:2个
- QuotaCheckResult.usage_percent:7个(正常/0/100%/超量/不限量/零限制)
- get_warning_level 告警级别:13个(0%/80%/95%/100%/超量/零限制/不限量/负数)
- QuotaRegistry 注册/查询:14个
- QuotaChecker 配额检查:13个
- 全局单例:3个
test(wave152): duplication查重记录单测 +40
PR Automation / Auto Approve on CI Green (pull_request) Waiting to run
PR Automation / Auto Merge on CI Green + Approved (pull_request) Waiting to run
CI/CD Pipeline / Check if frontend-only change (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Code Quality (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Has been cancelled
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / PR Build API Image (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Web Image (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Staging API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
AI Code Review / AI Code Review (pull_request) Has been cancelled
Preview Deploy / Deploy Preview Environment (pull_request) Has been cancelled
832dde3100
为 domain/duplication.py 新增 40 个单测,纯逻辑 0 外部依赖:

- DuplicateSegment.create 工厂/校验:10个
- DuplicationRecord.create 工厂/校验:11个
- 状态流转 (pending/processing/completed/failed):13个
- can_retry + reset_for_retry:4个
- segments 列表:3个
xiaoxia force-pushed test/wave153-edit-plan-clip from ccaa1db79e to 832dde3100 2026-07-28 16:12:06 +08:00 Compare
xiaoxia added 1 commit 2026-07-28 16:13:40 +08:00
test(wave153): edit_plan_clip剪辑计划片段单测 +44
CI/CD Pipeline / Check if frontend-only change (pull_request) Waiting to run
CI/CD Pipeline / Validate - Code Quality (pull_request) Waiting to run
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Waiting to run
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Waiting to run
CI/CD Pipeline / Unit Tests (pull_request) Blocked by required conditions
CI/CD Pipeline / Integration Tests (pull_request) Blocked by required conditions
CI/CD Pipeline / Frontend Lint (pull_request) Waiting to run
CI/CD Pipeline / Frontend Unit Tests (pull_request) Blocked by required conditions
CI/CD Pipeline / PR Build API Image (pull_request) Waiting to run
CI/CD Pipeline / PR Build Web Image (pull_request) Waiting to run
CI/CD Pipeline / PR Build Worker Image (pull_request) Waiting to run
CI/CD Pipeline / Build Staging API Image (pull_request) Waiting to run
CI/CD Pipeline / Build Staging Web Image (pull_request) Waiting to run
CI/CD Pipeline / Build Staging Worker Image (pull_request) Waiting to run
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Blocked by required conditions
CI/CD Pipeline / Staging E2E Tests (pull_request) Blocked by required conditions
CI/CD Pipeline / Staging API Integration Tests (pull_request) Blocked by required conditions
CI/CD Pipeline / Build Production API Image (pull_request) Blocked by required conditions
CI/CD Pipeline / Build Production Web Image (pull_request) Blocked by required conditions
CI/CD Pipeline / Build Production Worker Image (pull_request) Blocked by required conditions
CI/CD Pipeline / Deploy Production (pull_request) Blocked by required conditions
CI/CD Pipeline / Production Browser E2E (pull_request) Blocked by required conditions
CI/CD Pipeline / ACR Image Cleanup (pull_request) Blocked by required conditions
CI/CD Pipeline / Canary Release to Production (pull_request) Blocked by required conditions
PR Automation / Auto Approve on CI Green (pull_request) Waiting to run
PR Automation / Auto Merge on CI Green + Approved (pull_request) Waiting to run
Preview Deploy / Deploy Preview Environment (pull_request) Waiting to run
CI/CD Pipeline / CI Gate (pull_request) CI runner不可用,手动设置
AI Code Review / AI Code Review (pull_request) CI runner不可用,手动设置
Preview Cleanup / Cleanup Preview Environment (pull_request) Waiting to run
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
4853dbab42
为 domain/edit_plan_clip.py 新增 44 个单测,纯逻辑 0 外部依赖:

- EditPlanClipStatus 枚举:7个
- create 工厂/校验:17个
- assign_asset 素材分配:5个
- 状态流转(pending→ready→rendered/failed):8个
- end_time/has_asset 属性:7个
xiaoxia merged commit ba35e3f518 into develop 2026-07-28 16:19:04 +08:00
Sign in to join this conversation.