test(wave192): media_validation 媒体校验 +56测 #1154

Merged
xiaoxia merged 2 commits from test/wave192-media-validation into develop 2026-07-30 00:24:27 +08:00
Owner

wave192: media_validation 媒体校验单测

  • 模块:packages/domain/media_validation.py
  • 新增测试:56个
  • 覆盖:
    • safe_parse_fps FPS解析(小数/分数/除零/异常情况)
    • is_valid_media 视频校验(大小/时长/编码白名单)
    • is_valid_media 音频校验
    • is_valid_media 图片校验(宽高/大小)
    • 边界情况(无效类型/字符串转换/异常值)
  • 本地验证:ruff + black + pytest 56 passed
## wave192: media_validation 媒体校验单测 - 模块:packages/domain/media_validation.py - 新增测试:56个 - 覆盖: - safe_parse_fps FPS解析(小数/分数/除零/异常情况) - is_valid_media 视频校验(大小/时长/编码白名单) - is_valid_media 音频校验 - is_valid_media 图片校验(宽高/大小) - 边界情况(无效类型/字符串转换/异常值) - 本地验证:ruff + black + pytest 56 passed
xiaoxia added 1 commit 2026-07-29 18:59:42 +08:00
test(wave192): media_validation 媒体校验 +56测
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 / Check if frontend-only change (pull_request) Successful in 40s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m21s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m37s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 46s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m23s
CI/CD Pipeline / Validate - Code Quality (pull_request) Has been cancelled
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / PR Build API Image (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Web Image (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
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
AI Code Review / AI Code Review (pull_request) Has been cancelled
PR Automation / Auto Approve on CI Green (pull_request) Has been cancelled
3d274eaa87

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1154 | | 预览链接 | [https://pr-1154.preview.xiaoxiajianji.com](https://pr-1154.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot added 1 commit 2026-07-29 19:08:45 +08:00
style: auto-format with black + isort + prettier [skip ci-format-check]
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 7s
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
AI Code Review / AI Code Review (pull_request) Successful in 1m18s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m6s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 55s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 2m54s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 2m54s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m8s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 6m43s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (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 / PR Build API Image (pull_request) Successful in 4m31s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 4m17s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 8m34s
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
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 / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 6m7s
CI/CD Pipeline / CI Gate (pull_request) Successful in 6s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 58s
bc324baf3e
Collaborator

【阻塞级判定】

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

📊 审查概览

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

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

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

  1. [test_media_validation.py: 274-282] 建议优化异常处理逻辑的测试预期

    • 具体内容:在 test_invalid_size_string_raisestest_none_size_raises 中,测试预期 is_valid_media 会抛出 ValueErrorTypeError。通常作为校验函数,面对格式错误的输入(如无法转换的字符串或 None),更健壮的做法是捕获异常并返回 False,而不是让异常向上冒泡导致程序崩溃。除非业务逻辑明确要求“快速失败”,否则建议修改被测函数实现以优雅处理错误,并将测试用例的断言修改为期望返回 False
  2. [test_media_validation.py: 18-24] 建议避免硬编码常量值

    • 具体内容:TestConstants.test_min_sizes 中硬编码了 1024, 100 等数值。如果未来业务需求调整最小文件大小常量,该测试会非预期地失败。如果这些值是固定的业务契约,则无需修改;如果它们只是当前配置,建议仅校验常量是否存在或大于0,或者直接导入常量进行断言(虽然目前也是导入,但断言值与定义值耦合度较高)。
  3. [test_media_validation.py: 全局] 建议使用 pytest.fixture 减少重复代码

    • 具体内容:在 TestIsValidMediaVideo 等测试类中,metadata 字典的构造在多个测试用例中重复出现。建议使用 @pytest.fixture 装饰器定义通用的 valid_video_metadatavalid_audio_metadata 等固件,然后在测试用例中通过参数复用或修改,以提高代码的可维护性和简洁性。

良好实践

  • 测试覆盖面广,包含了正常场景、边界值(0、负数、空值)以及异常格式(分数、字符串转数字)的测试。
  • 使用了 pytest.approx 进行浮点数比较,避免了精度问题导致的测试失败。
  • 测试类结构清晰,按功能模块(常量、FPS解析、各类型媒体校验)分组,易于阅读和维护。
  • safe_parse_fps 的测试非常细致,覆盖了多种分数格式和非法输入情况。

🤖 由 AI 代码审查机器人自动生成 | 2026-07-29 11:18:51 | 模型:

### 【阻塞级判定】 - 是否存在阻塞级问题:否 - 阻塞级问题数量:0 个 ### 📊 审查概览 - 整体评价:通过 - 建议建议级问题数量:3 个 ### 🔴 阻塞级问题(必须修复) 无 ### 💡 改进建议(不阻塞合并) 1. **[test_media_validation.py: 274-282] 建议优化异常处理逻辑的测试预期** - 具体内容:在 `test_invalid_size_string_raises` 和 `test_none_size_raises` 中,测试预期 `is_valid_media` 会抛出 `ValueError` 或 `TypeError`。通常作为校验函数,面对格式错误的输入(如无法转换的字符串或 None),更健壮的做法是捕获异常并返回 `False`,而不是让异常向上冒泡导致程序崩溃。除非业务逻辑明确要求“快速失败”,否则建议修改被测函数实现以优雅处理错误,并将测试用例的断言修改为期望返回 `False`。 2. **[test_media_validation.py: 18-24] 建议避免硬编码常量值** - 具体内容:`TestConstants.test_min_sizes` 中硬编码了 `1024`, `100` 等数值。如果未来业务需求调整最小文件大小常量,该测试会非预期地失败。如果这些值是固定的业务契约,则无需修改;如果它们只是当前配置,建议仅校验常量是否存在或大于0,或者直接导入常量进行断言(虽然目前也是导入,但断言值与定义值耦合度较高)。 3. **[test_media_validation.py: 全局] 建议使用 pytest.fixture 减少重复代码** - 具体内容:在 `TestIsValidMediaVideo` 等测试类中,`metadata` 字典的构造在多个测试用例中重复出现。建议使用 `@pytest.fixture` 装饰器定义通用的 `valid_video_metadata`、`valid_audio_metadata` 等固件,然后在测试用例中通过参数复用或修改,以提高代码的可维护性和简洁性。 ### ✅ 良好实践 - 测试覆盖面广,包含了正常场景、边界值(0、负数、空值)以及异常格式(分数、字符串转数字)的测试。 - 使用了 `pytest.approx` 进行浮点数比较,避免了精度问题导致的测试失败。 - 测试类结构清晰,按功能模块(常量、FPS解析、各类型媒体校验)分组,易于阅读和维护。 - 对 `safe_parse_fps` 的测试非常细致,覆盖了多种分数格式和非法输入情况。 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-29 11:18:51 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia merged commit e8352227af into develop 2026-07-30 00:24:27 +08:00

🗑️ 预览环境已清理

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

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

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