test(unit): 第72波 - TTSJob状态机 + GeneratedVideo + VerificationCode (+76) #870

Merged
xiaoxia merged 2 commits from test/wave72-generated-video-tts-job-verification-code into develop 2026-07-25 11:32:36 +08:00
Owner

内容

  • TTSJob 状态机:状态枚举(5种) + create校验(3种) + is_terminal/is_retryable/is_completed属性(11种) + 13种状态转换场景 + mark_*方法(10种) + prepare_retry重试机制(4种) = 49 tests
  • GeneratedVideo:create成功 + 4种空值校验 + 空白strip + 默认值 + generation_params处理 + duplicate标记 + 自定义状态/缩略图 = 18 tests
  • VerificationCode:create创建(5种) + is_expired/is_used/is_valid属性(6种) + mark_used/increment_attempts/多code_type = 9 tests

测试结果

本地 pytest: 76 passed 全绿

### 内容 - **TTSJob 状态机**:状态枚举(5种) + create校验(3种) + is_terminal/is_retryable/is_completed属性(11种) + 13种状态转换场景 + mark_*方法(10种) + prepare_retry重试机制(4种) = **49 tests** - **GeneratedVideo**:create成功 + 4种空值校验 + 空白strip + 默认值 + generation_params处理 + duplicate标记 + 自定义状态/缩略图 = **18 tests** - **VerificationCode**:create创建(5种) + is_expired/is_used/is_valid属性(6种) + mark_used/increment_attempts/多code_type = **9 tests** ### 测试结果 本地 pytest: **76 passed** 全绿
xiaoxia added 1 commit 2026-07-25 10:14:24 +08:00
test(unit): 第72波 - TTSJob状态机 + GeneratedVideo + VerificationCode
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 14s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 39s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 42s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 56s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 36s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m0s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 21s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 59s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m59s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 3m53s
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
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m31s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
AI Code Review / AI Code Review (pull_request) Successful in 4m10s
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
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 / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Successful in 2m32s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m47s
b0f1e74a85
- TTSJob: 状态枚举 + create校验 + is_terminal/is_retryable/is_completed + 13种状态转换 + mark_processing/mark_completed/mark_failed/mark_cancelled + prepare_retry重试机制(49个)
- GeneratedVideo: create校验(4种空值) + 空白strip + 默认值 + generation_params + duplicate标记 + 状态/缩略图(18个)
- VerificationCode: create创建(5种) + 属性方法(6种) + mark_used/increment_attempts/多code_type(5个)
+76 tests 全绿
xiaoxia added 1 commit 2026-07-25 11:07:34 +08:00
style: fix black formatting for wave72 generated video tests
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 35s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 57s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m28s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m16s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 50s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 3m8s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m29s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 8m32s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 36s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 16s
AI Code Review / AI Code Review (pull_request) Successful in 5m25s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m58s
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 / Deploy Production (pull_request) Has been skipped
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 / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Successful in 2m56s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m20s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 1m7s
f6cdeaa62b
Collaborator

代码审查结果 - PR #870

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

💡 建议(2个可选)

  1. tests/unit/test_generated_video_verification_code.py 第19行, 第323行 & tests/unit/test_tts_job_domain_extended.py 第36行:ID长度校验硬编码

    • 描述:测试代码中使用了 assert len(video.id) == 32 来校验ID长度。这假设了ID生成策略固定为32位(如MD5或特定UUID)。如果未来ID生成策略变更(例如切换为标准UUID36位),测试将会失败,且这种硬编码与业务逻辑的核心功能(ID唯一性)关联度不高。
    • 建议:建议改为校验ID非空且为字符串类型,或者如果必须校验长度,请将 32 提取为常量或配置,以便统一维护。
  2. tests/unit/test_generated_video_verification_code.py 第351行, 第364行 & tests/unit/test_tts_job_domain_extended.py 第398行:时间相关测试的稳定性

    • 描述test_expiry_time_correcttest_custom_ttltest_transition_updates_updated_at 等测试依赖系统当前时间(datetime.now())。虽然使用了范围断言或 >= 来减少误差,但在高并发或系统时钟回拨(如NTP同步)的极端环境下,仍可能导致测试偶发性失败。
    • 建议:建议引入 freezegun 等 mock 时间库,或者确保被测的 Domain Model 支持传入时间参数,从而完全控制测试中的时间变量,提高测试的确定性。

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


🤖 由 AI 代码审查机器人自动生成 | 2026-07-25 03:21:59 | 模型:

## 代码审查结果 - PR #870 ### ⚠️ 问题(0个需要修改) 无 ### 💡 建议(2个可选) 1. **tests/unit/test_generated_video_verification_code.py 第19行, 第323行 & tests/unit/test_tts_job_domain_extended.py 第36行**:ID长度校验硬编码 - **描述**:测试代码中使用了 `assert len(video.id) == 32` 来校验ID长度。这假设了ID生成策略固定为32位(如MD5或特定UUID)。如果未来ID生成策略变更(例如切换为标准UUID36位),测试将会失败,且这种硬编码与业务逻辑的核心功能(ID唯一性)关联度不高。 - **建议**:建议改为校验ID非空且为字符串类型,或者如果必须校验长度,请将 `32` 提取为常量或配置,以便统一维护。 2. **tests/unit/test_generated_video_verification_code.py 第351行, 第364行 & tests/unit/test_tts_job_domain_extended.py 第398行**:时间相关测试的稳定性 - **描述**:`test_expiry_time_correct`、`test_custom_ttl` 和 `test_transition_updates_updated_at` 等测试依赖系统当前时间(`datetime.now()`)。虽然使用了范围断言或 `>=` 来减少误差,但在高并发或系统时钟回拨(如NTP同步)的极端环境下,仍可能导致测试偶发性失败。 - **建议**:建议引入 `freezegun` 等 mock 时间库,或者确保被测的 Domain Model 支持传入时间参数,从而完全控制测试中的时间变量,提高测试的确定性。 --- ✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能良好 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-25 03:21:59 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia merged commit aa0b0de90f into develop 2026-07-25 11:32:36 +08:00
xiaoxia deleted branch test/wave72-generated-video-tts-job-verification-code 2026-07-25 11:32:36 +08:00

🗑️ 预览环境已清理

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

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

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