test(wave152): duplication查重记录单测 +40 #1080

Merged
xiaoxia merged 2 commits from test/wave152-duplication into develop 2026-07-28 16:19:06 +08:00
Owner

概述

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

覆盖范围

  • DuplicateSegment.create:10个 - 正常创建/唯一ID/各边界校验
  • DuplicationRecord.create:11个 - 最简/带时长/strip/空值校验/文件大小校验
  • 状态流转:13个 - pending→processing→completed/failed 完整流转
  • 重试机制:4个 - can_retry 各状态 + reset_for_retry
  • segments 列表:3个 - 默认空/独立列表/多片段

验证

  • ruff: All checks passed
  • pytest: 40 passed
## 概述 为 domain/duplication.py 新增 40 个单测,纯逻辑 0 外部依赖。 ## 覆盖范围 - **DuplicateSegment.create**:10个 - 正常创建/唯一ID/各边界校验 - **DuplicationRecord.create**:11个 - 最简/带时长/strip/空值校验/文件大小校验 - **状态流转**:13个 - pending→processing→completed/failed 完整流转 - **重试机制**:4个 - can_retry 各状态 + reset_for_retry - **segments 列表**:3个 - 默认空/独立列表/多片段 ## 验证 - ruff: All checks passed - pytest: 40 passed
Collaborator

【阻塞级判定】

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

📊 审查概览

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

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

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

  1. [tests/unit/domain/test_quota.py: 37] 避免使用魔法数字硬编码枚举值数量

    • 具体内容:test_member_count 中断言 len(QuotaDimension) == 11。如果后续业务扩展新增枚举值,此测试将无故失败。建议改为断言数量大于某个最小值,或者遍历枚举进行存在性检查,以减少测试的脆弱性。
  2. [tests/unit/domain/test_duplication.py: 133] 避免依赖系统时钟进行断言

    • 具体内容:test_create_has_timestamps 中断言 abs(delta) < 1.0。虽然通常通过,但在高负载或系统时钟调整的情况下可能导致测试偶发性失败(Flaky Test)。建议仅断言 updated_at >= created_at,或者使用 unittest.mock.patch 冻结时间以确保测试的确定性。

良好实践

  • 边界条件覆盖充分:对 0负数刚好等于限制超过限制 等边界情况均有覆盖,测试用例设计严谨。
  • 防御性测试test_segments_independent_listtest_list_dimensions_returns_copy 验证了内部状态的封装性,防止可变对象泄露,这是高质量的测试实践。
  • 异常验证清晰:在 test_duplication.py 中对 ValueError 的捕获和消息校验,确保了校验逻辑的正确反馈。

格式检查通过 | 逻辑审查通过 | 性能良好


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

### 【阻塞级判定】 - 是否存在阻塞级问题:否 - 阻塞级问题数量:0 个 ### 📊 审查概览 - 整体评价:通过 - 建议级问题数量:2 个 ### 🔴 阻塞级问题(必须修复) 无 ### 💡 改进建议(不阻塞合并) 1. **[tests/unit/domain/test_quota.py: 37] 避免使用魔法数字硬编码枚举值数量** - 具体内容:`test_member_count` 中断言 `len(QuotaDimension) == 11`。如果后续业务扩展新增枚举值,此测试将无故失败。建议改为断言数量大于某个最小值,或者遍历枚举进行存在性检查,以减少测试的脆弱性。 2. **[tests/unit/domain/test_duplication.py: 133] 避免依赖系统时钟进行断言** - 具体内容:`test_create_has_timestamps` 中断言 `abs(delta) < 1.0`。虽然通常通过,但在高负载或系统时钟调整的情况下可能导致测试偶发性失败(Flaky Test)。建议仅断言 `updated_at >= created_at`,或者使用 `unittest.mock.patch` 冻结时间以确保测试的确定性。 ### ✅ 良好实践 - **边界条件覆盖充分**:对 `0`、`负数`、`刚好等于限制`、`超过限制` 等边界情况均有覆盖,测试用例设计严谨。 - **防御性测试**:`test_segments_independent_list` 和 `test_list_dimensions_returns_copy` 验证了内部状态的封装性,防止可变对象泄露,这是高质量的测试实践。 - **异常验证清晰**:在 `test_duplication.py` 中对 `ValueError` 的捕获和消息校验,确保了校验逻辑的正确反馈。 --- ✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能良好 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-28 06:11:16 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia changed target branch from main to develop 2026-07-28 16:09:27 +08:00
xiaoxia added 2 commits 2026-07-28 16:12:04 +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
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
ec92a864db
为 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/wave152-duplication from 2ef29f1981 to ec92a864db 2026-07-28 16:12:04 +08:00 Compare
xiaoxia merged commit 3859ce1750 into develop 2026-07-28 16:19:06 +08:00
Sign in to join this conversation.