test(p3-1): 第二十六波 - TTS workflow 工作流编排 25个单测 #732

Merged
xiaoxia merged 2 commits from test/p3-1-wave26-tts-workflow-tests into develop 2026-07-22 22:42:08 +08:00
Owner

P3-1 单元测试补充 - 第二十六波

新增测试文件

  • tests/unit/test_tts_workflow_service.py — 25个测试

覆盖范围

start_synthesis (8个)

  • 同步路径成功(直接返回audio_url → 转存OSS → completed)
  • job不存在抛异常
  • 先标记processing再提交
  • CosyVoiceError → failed
  • CosyVoiceAuthError → failed
  • ValueError → failed
  • OSS转存失败回退到临时URL
  • 异步路径保存task_id到metadata

poll_and_process_synthesis (4个)

  • 已completed直接返回(不重复提交)
  • job不存在抛异常
  • 无task_id → 重新同步合成
  • 旧task_id轮询失败 → 回退重新合成

process_synthesis_result (3个)

  • 成功标记completed
  • job不存在抛异常
  • OSS上传失败使用临时URL

process_synthesis_failure (2个)

  • 标记failed + 错误信息
  • job不存在抛异常

分段合成 (3个)

  • 长文本自动触发分段合成并合并
  • 单段失败 → 整个job失败
  • 异步分段 → task_ids保存到metadata

重新合成 (2个)

  • 重新合成成功
  • 重新合成失败标记failed

错误类 + 懒加载 (3个)

  • TTSWorkflowError继承Exception
  • TTSJobNotFoundError继承Exception
  • storage属性懒初始化

累计

  • 第二十六波:25个
  • 累计:约1390+个单测
## P3-1 单元测试补充 - 第二十六波 ### 新增测试文件 - `tests/unit/test_tts_workflow_service.py` — 25个测试 ### 覆盖范围 **start_synthesis (8个)** - 同步路径成功(直接返回audio_url → 转存OSS → completed) - job不存在抛异常 - 先标记processing再提交 - CosyVoiceError → failed - CosyVoiceAuthError → failed - ValueError → failed - OSS转存失败回退到临时URL - 异步路径保存task_id到metadata **poll_and_process_synthesis (4个)** - 已completed直接返回(不重复提交) - job不存在抛异常 - 无task_id → 重新同步合成 - 旧task_id轮询失败 → 回退重新合成 **process_synthesis_result (3个)** - 成功标记completed - job不存在抛异常 - OSS上传失败使用临时URL **process_synthesis_failure (2个)** - 标记failed + 错误信息 - job不存在抛异常 **分段合成 (3个)** - 长文本自动触发分段合成并合并 - 单段失败 → 整个job失败 - 异步分段 → task_ids保存到metadata **重新合成 (2个)** - 重新合成成功 - 重新合成失败标记failed **错误类 + 懒加载 (3个)** - TTSWorkflowError继承Exception - TTSJobNotFoundError继承Exception - storage属性懒初始化 ### 累计 - 第二十六波:25个 - 累计:约1390+个单测
xiaoxia added 1 commit 2026-07-22 18:38:58 +08:00
test(p3-1): add 25 unit tests for TTS workflow service
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 49s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 37s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 31s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m0s
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 - Code Quality (pull_request) Failing after 2m24s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m27s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 34s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Failing after 54s
AI Code Review / AI Code Review (pull_request) Successful in 4m52s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 7m12s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 11m13s
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / PR Build 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
0182274b28
Covers:
- start_synthesis: sync completion, job not found, processing state,
  CosyVoice error, auth error, ValueError, OSS transfer fallback,
  async task_id saved
- poll_and_process_synthesis: already completed, job not found,
  no task_id resynthesize, old task_id poll fail fallback
- process_synthesis_result: success, not found, OSS upload failure
- process_synthesis_failure: marks failed, not found
- segment synthesis: long text triggers segments, segment failure,
  async segment task_ids saved
- resynthesize: success and failure paths
- error classes + lazy storage property

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #732 | | 预览链接 | [https://pr-732.preview.xiaoxiajianji.com](https://pr-732.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
xiaoxia added 1 commit 2026-07-22 19:18:37 +08:00
fix(ci): auto-fix lint/format issues
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 18s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 33s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 37s
CI/CD Pipeline / Validate - Code Quality (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 / Validate - Migration (alembic) (pull_request) Successful in 33s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 49s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m8s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Failing after 1m18s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 50s
AI Code Review / AI Code Review (pull_request) Successful in 4m18s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 6m49s
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 / Unit Tests (pull_request) Successful in 26s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Failing after 2m36s
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 / PR Build Worker Image (pull_request) Successful in 29m17s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 57s
ddbe444cb6
auto-approve-bot approved these changes 2026-07-22 19:45:03 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

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

CI全绿,自动审批通过。

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

代码审查结果 - PR #732

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

💡 建议(2个可选)

  1. tests/unit/test_tts_workflow_service.py 第533行:未使用的导入

    • 问题描述:在 TestStoragePropertyLazyInit 测试类中导入了 SharedStorageService,但在测试方法中并未实际使用该类。
    • 修改建议:删除未使用的导入语句 from packages.shared.storage import SharedStorageService,保持代码整洁。
  2. tests/unit/test_tts_workflow_service.py 第429行:测试用例的健壮性风险

    • 问题描述:在 test_segment_failure_marks_job_failed 中,通过 call_count["n"] == 2 来控制第二次调用抛出异常。这种基于调用顺序的 Mock 逻辑假设了服务是串行处理分段的。如果未来 TTSWorkflowService 改为并行处理分段(例如使用线程池或异步并发),调用顺序将不再确定,导致测试变得不稳定。
    • 修改建议:建议根据输入参数(如 kwargs['text'] 的内容)来决定是否抛出异常,而不是依赖全局计数器,从而使测试逻辑与执行顺序解耦。

格式检查通过 | 逻辑审查需修改 | 建议关注性能


🤖 由 AI 代码审查机器人自动生成 | 2026-07-22 19:48:12 | 模型:

## 代码审查结果 - PR #732 ### ⚠️ 问题(0个需要修改) 无 ### 💡 建议(2个可选) 1. **tests/unit/test_tts_workflow_service.py 第533行**:未使用的导入 - 问题描述:在 `TestStoragePropertyLazyInit` 测试类中导入了 `SharedStorageService`,但在测试方法中并未实际使用该类。 - 修改建议:删除未使用的导入语句 `from packages.shared.storage import SharedStorageService`,保持代码整洁。 2. **tests/unit/test_tts_workflow_service.py 第429行**:测试用例的健壮性风险 - 问题描述:在 `test_segment_failure_marks_job_failed` 中,通过 `call_count["n"] == 2` 来控制第二次调用抛出异常。这种基于调用顺序的 Mock 逻辑假设了服务是串行处理分段的。如果未来 `TTSWorkflowService` 改为并行处理分段(例如使用线程池或异步并发),调用顺序将不再确定,导致测试变得不稳定。 - 修改建议:建议根据输入参数(如 `kwargs['text']` 的内容)来决定是否抛出异常,而不是依赖全局计数器,从而使测试逻辑与执行顺序解耦。 --- ✅ 格式检查通过 | ✅ 逻辑审查需修改 | ✅ 建议关注性能 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-22 19:48:12 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia merged commit 3e48248c83 into develop 2026-07-22 22:42:08 +08:00

🗑️ 预览环境已清理

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

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

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