test(wave132): TTS领域模型单测 +103 #1036

Closed
xiaoxia wants to merge 1 commits from test/wave132-wechat-oauth-unit into develop
Owner

变更内容

TTS 相关领域模块单测补充,共 +103 个测试:

text_splitter 文本分段(~26测试)

  • 基础功能:空文本/短文本/等于阈值/默认参数
  • 句子边界分段:句号/问号/感叹号/换行/分号
  • 长句硬切:超长单句强制切段、每段不超过max_chars、无空分段
  • 短段合并:<50字短段合并、末段合并
  • 边界用例:单字符/纯标点/中英混合/max_chars=1

TtsConfig 配置解析(~32测试)

  • 默认值 & 禁用态忽略其他字段
  • enabled/voice_id/speed/pitch/volume/text 各字段解析
  • align_mode/overlap_mode 枚举值校验与容错
  • 边界钳制:speed[0.5,2.0] / pitch[-12,12] / volume[0,1]
  • 类型容错:非预期类型回退默认值

TTSJob 领域模型(~45测试)

  • 创建:基础字段/音色ID/项目ID/克隆档案ID/格式/采样率/元数据
  • 状态属性:pending/processing/completed/failed/cancelled 终态判断
  • 状态转换:所有合法路径 + 非法转换拦截
  • 重试逻辑:递增计数/清除错误/重置时间/超过上限不可重试/is_retryable属性
  • 完成校验:空URL拒绝/is_completed依赖URL
  • 参数校验:空user_id/空文本/超长文本/非法格式
  • 序列化to_dict:各状态下字段完整性
## 变更内容 TTS 相关领域模块单测补充,共 +103 个测试: ### text_splitter 文本分段(~26测试) - 基础功能:空文本/短文本/等于阈值/默认参数 - 句子边界分段:句号/问号/感叹号/换行/分号 - 长句硬切:超长单句强制切段、每段不超过max_chars、无空分段 - 短段合并:<50字短段合并、末段合并 - 边界用例:单字符/纯标点/中英混合/max_chars=1 ### TtsConfig 配置解析(~32测试) - 默认值 & 禁用态忽略其他字段 - enabled/voice_id/speed/pitch/volume/text 各字段解析 - align_mode/overlap_mode 枚举值校验与容错 - 边界钳制:speed[0.5,2.0] / pitch[-12,12] / volume[0,1] - 类型容错:非预期类型回退默认值 ### TTSJob 领域模型(~45测试) - 创建:基础字段/音色ID/项目ID/克隆档案ID/格式/采样率/元数据 - 状态属性:pending/processing/completed/failed/cancelled 终态判断 - 状态转换:所有合法路径 + 非法转换拦截 - 重试逻辑:递增计数/清除错误/重置时间/超过上限不可重试/is_retryable属性 - 完成校验:空URL拒绝/is_completed依赖URL - 参数校验:空user_id/空文本/超长文本/非法格式 - 序列化to_dict:各状态下字段完整性

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1036 | | 预览链接 | [https://pr-1036.preview.xiaoxiajianji.com](https://pr-1036.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
Collaborator

代码审查结果 - PR #1036

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

💡 建议(2个可选)

  1. tests/unit/test_tts_domain_package.py 第687行:导入了 _VALID_TRANSITIONS 但在代码中并未使用,属于死代码。虽然添加了 # noqa 注释,但为了保持代码整洁,建议删除该行。
  2. tests/unit/test_tts_domain_package.py 第680-688行:测试用例 test_is_completed_requires_url 中通过直接赋值 job.status 来绕过状态机方法(mark_completed)。虽然这是为了测试特定边界条件(状态为 Completed 但 URL 为空)的必要手段,但这种“白盒”测试方式较为脆弱,依赖于内部实现细节。建议在注释中明确说明此处为何需要打破封装,或者考虑通过 unittest.mock 来模拟这种异常状态,以降低对内部实现的耦合。

格式检查通过 | 逻辑审查通过 | 性能无关注


🤖 由 AI 代码审查机器人自动生成 | 2026-07-27 10:03:30 | 模型:

## 代码审查结果 - PR #1036 ### ⚠️ 问题(0个需要修改) 无 ### 💡 建议(2个可选) 1. **tests/unit/test_tts_domain_package.py 第687行**:导入了 `_VALID_TRANSITIONS` 但在代码中并未使用,属于死代码。虽然添加了 `# noqa` 注释,但为了保持代码整洁,建议删除该行。 2. **tests/unit/test_tts_domain_package.py 第680-688行**:测试用例 `test_is_completed_requires_url` 中通过直接赋值 `job.status` 来绕过状态机方法(`mark_completed`)。虽然这是为了测试特定边界条件(状态为 Completed 但 URL 为空)的必要手段,但这种“白盒”测试方式较为脆弱,依赖于内部实现细节。建议在注释中明确说明此处为何需要打破封装,或者考虑通过 `unittest.mock` 来模拟这种异常状态,以降低对内部实现的耦合。 --- ✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能无关注 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-27 10:03:30 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia added 1 commit 2026-07-27 18:31:15 +08:00
test(wave132): TTS领域模型单测 +103
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
CI/CD Pipeline / Check if frontend-only change (pull_request) Failing after 1s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 0s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Failing after 1s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Failing after 0s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 0s
AI Code Review / AI Code Review (pull_request) Failing after 0s
PR Automation / Auto Approve on CI Green (pull_request) Failing after 0s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Failing after 0s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 0s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 0s
CI/CD Pipeline / Integration Tests (pull_request) Failing after 0s
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
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m26s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m23s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 2m18s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 23s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 7m17s
CI/CD Pipeline / CI Gate (pull_request) Failing after 0s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web 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 / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
2dfcb56679
覆盖 text_splitter 文本分段(句子边界/长句硬切/合并短段/边界用例)
覆盖 TtsConfig 配置解析(各字段解析/边界钳制/默认值/类型容错)
覆盖 TTSJob 状态机(创建/状态转换/重试/序列化/参数校验)
xiaoxia force-pushed test/wave132-wechat-oauth-unit from 1b3e634d08 to 2dfcb56679 2026-07-27 18:31:15 +08:00 Compare
xiaoxia closed this pull request 2026-07-27 18:31:42 +08:00

🗑️ 预览环境已清理

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

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

🗑️ **预览环境已清理** PR #1036 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Some checks are pending
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
CI/CD Pipeline / Check if frontend-only change (pull_request) Failing after 1s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 0s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Failing after 1s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Failing after 0s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 0s
AI Code Review / AI Code Review (pull_request) Failing after 0s
PR Automation / Auto Approve on CI Green (pull_request) Failing after 0s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Failing after 0s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 0s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 0s
CI/CD Pipeline / Integration Tests (pull_request) Failing after 0s
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
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m26s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m23s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 2m18s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 23s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 7m17s
CI/CD Pipeline / CI Gate (pull_request) Failing after 0s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web 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 / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped

Pull request closed

Sign in to join this conversation.