test(unit): P3-1 第五波 新增3个领域模块单元测试(54个用例) #683

Merged
auto-approve-bot merged 1 commits from test/p3-1-wave5-domain-tests into develop 2026-07-21 19:47:24 +08:00
Owner

P3-1 第五波领域层单元测试补充,覆盖3个模块,共54个测试用例。

  • preset_voices: 22个 - 数据类属性/默认值/frozen不可变/to_dict序列化/预置列表/按ID查询/8音色参数化
  • template: 20个 - TemplateSegment/Template/TemplateCategory 三类实体完整覆盖
  • template_version: 12个 - 创建工厂/默认值/config与clip_configs空值处理/完整字段/slots约束
P3-1 第五波领域层单元测试补充,覆盖3个模块,共54个测试用例。 - preset_voices: 22个 - 数据类属性/默认值/frozen不可变/to_dict序列化/预置列表/按ID查询/8音色参数化 - template: 20个 - TemplateSegment/Template/TemplateCategory 三类实体完整覆盖 - template_version: 12个 - 创建工厂/默认值/config与clip_configs空值处理/完整字段/slots约束

🚀 预览环境已部署

项目 详情
PR号 #683
预览链接 https://pr-683.preview.xiaoxiajianji.com
API环境 staging

💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。

🔄 每次提交新代码后预览环境会自动更新。

🗑️ PR 关闭或合并后,预览环境会自动清理。

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #683 | | 预览链接 | [https://pr-683.preview.xiaoxiajianji.com](https://pr-683.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot approved these changes 2026-07-21 19:33:04 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-07-21 19:33:04 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
Collaborator

代码审查结果 - PR #683

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

  1. tests/unit/test_generated_video_domain.py 第115-139行:验证错误消息语言不一致
    • 问题描述:该文件中的测试用例(如 test_create_empty_project_id_raises)期望的错误消息是英文(例如 "project_id cannot be empty"),而同 PR 中的其他测试文件(如 test_classification_domain.pytest_edit_plan_domain.py)均使用中文错误消息(例如 "project_id 不能为空")。这表明该模块的测试用例可能复制自其他项目或未本地化,如果领域模型抛出的是中文异常,这些测试将失败。
    • 修改建议:将 test_generated_video_domain.py 中所有 pytest.raises(ValueError, match="...") 的英文匹配字符串修改为中文,以保持代码库的一致性。例如将 "project_id cannot be empty" 改为 "project_id 不能为空"

💡 建议(2个可选)

  1. tests/unit/test_preset_voices_domain.py 第147行与第164行:测试样本 ID 使用不一致
    • 具体内容test_existing_voice 使用 longxiaochun_v3 (龙小淳) 作为测试样本,而 test_existing_is_preset 使用 longxiaochen_v3 (龙小晨)。虽然这两个 ID 在数据中都存在,但这种不一致容易导致维护混淆。建议定义一个常量 SAMPLE_VOICE_ID = "longxiaochun_v3" 供多个测试用例复用。
  2. tests/unit/test_preset_voices_domain.py 第156行:硬编码枚举数量
    • 具体内容test_total_count 断言 len(PRESET_VOICES) == 8。如果未来新增预置音色,此测试会无故失败。如果业务逻辑不强制限制音色数量为 8 个,建议移除此断言,或改为检查数量大于 0 即可。

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


🤖 由 AI 代码审查机器人自动生成 | 2026-07-21 19:35:05 | 模型:

## 代码审查结果 - PR #683 ### ⚠️ 问题(1个需要修改) 1. **tests/unit/test_generated_video_domain.py 第115-139行**:验证错误消息语言不一致 - **问题描述**:该文件中的测试用例(如 `test_create_empty_project_id_raises`)期望的错误消息是英文(例如 `"project_id cannot be empty"`),而同 PR 中的其他测试文件(如 `test_classification_domain.py` 和 `test_edit_plan_domain.py`)均使用中文错误消息(例如 `"project_id 不能为空"`)。这表明该模块的测试用例可能复制自其他项目或未本地化,如果领域模型抛出的是中文异常,这些测试将失败。 - **修改建议**:将 `test_generated_video_domain.py` 中所有 `pytest.raises(ValueError, match="...")` 的英文匹配字符串修改为中文,以保持代码库的一致性。例如将 `"project_id cannot be empty"` 改为 `"project_id 不能为空"`。 ### 💡 建议(2个可选) 1. **tests/unit/test_preset_voices_domain.py 第147行与第164行**:测试样本 ID 使用不一致 - **具体内容**:`test_existing_voice` 使用 `longxiaochun_v3` (龙小淳) 作为测试样本,而 `test_existing_is_preset` 使用 `longxiaochen_v3` (龙小晨)。虽然这两个 ID 在数据中都存在,但这种不一致容易导致维护混淆。建议定义一个常量 `SAMPLE_VOICE_ID = "longxiaochun_v3"` 供多个测试用例复用。 2. **tests/unit/test_preset_voices_domain.py 第156行**:硬编码枚举数量 - **具体内容**:`test_total_count` 断言 `len(PRESET_VOICES) == 8`。如果未来新增预置音色,此测试会无故失败。如果业务逻辑不强制限制音色数量为 8 个,建议移除此断言,或改为检查数量大于 0 即可。 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ✅ 性能良好 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-21 19:35:05 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia added 1 commit 2026-07-21 19:43:48 +08:00
test(unit): P3-1 第五波 新增3个领域模块单元测试(54个用例)
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 / Deploy Staging (Watchtower auto-deploy) (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 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 / Check if frontend-only change (pull_request) Successful in 13s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 47s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Successful in 37s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 2m10s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 2m18s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m39s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 3m35s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m3s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 20s
AI Code Review / AI Code Review (pull_request) Successful in 7m16s
d21b16aac7
- preset_voices: 22个 - 数据类属性/默认值/frozen不可变/to_dict序列化/预置列表/按ID查询/8音色参数化
- template: 20个 - TemplateSegment/Template/TemplateCategory 三类实体完整覆盖
- template_version: 12个 - 创建工厂/默认值/config与clip_configs空值处理/完整字段/slots约束

已rebase到最新develop(含第四波),解决合并冲突
xiaoxia force-pushed test/p3-1-wave5-domain-tests from aa350e2b1e to d21b16aac7 2026-07-21 19:43:48 +08:00 Compare
auto-approve-bot merged commit abc3fbea1b into develop 2026-07-21 19:47:24 +08:00
auto-approve-bot deleted branch test/p3-1-wave5-domain-tests 2026-07-21 19:47:24 +08:00

🗑️ 预览环境已清理

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

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

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