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

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

P3-1 第四波领域层单元测试补充

P3-1 第四波领域层单元测试补充

🚀 预览环境已部署

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

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

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

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

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

CI全绿,自动审批通过。

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

CI全绿,自动审批通过。

CI全绿,自动审批通过。
xiaoxia added 1 commit 2026-07-21 19:35:48 +08:00
test(unit): P3-1 第四波 新增3个领域模块单元测试(65个用例)
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 / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (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 / Deploy Production (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 15s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 44s
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 1m37s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 1m36s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m59s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m2s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 19s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 3m1s
AI Code Review / AI Code Review (pull_request) Successful in 5m4s
1cdd5cab46
- classification: 新增TestClassificationJobState状态操作测试
- generated_video: 新增TestGeneratedVideoProperties属性测试
- verification_code: 新增14个测试用例,覆盖创建/过期/使用/有效性/尝试次数/类型

已rebase到最新develop,解决与第三波的合并冲突
xiaoxia force-pushed test/p3-1-wave4-domain-tests from d92a335bdf to 1cdd5cab46 2026-07-21 19:35:48 +08:00 Compare
auto-approve-bot merged commit 07f6705534 into develop 2026-07-21 19:38:28 +08:00
auto-approve-bot deleted branch test/p3-1-wave4-domain-tests 2026-07-21 19:38:28 +08:00

🗑️ 预览环境已清理

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

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

🗑️ **预览环境已清理** PR #682 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Collaborator

代码审查结果 - PR #682

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

  1. tests/unit/test_verification_code_domain.py 第68-72行:时间计算逻辑存在缺陷,会导致测试不稳定。

    • 问题描述:在 test_create_custom_ttl 中,expected 变量是在 VerificationCode.create 执行之后计算的。这意味着 expected 包含了 create 方法的执行耗时。vc.expires_at 是在 create 方法内部生成的,因此 expected 必然晚于 vc.expires_at。如果 create 方法执行超过 2 秒(例如因 GC、IO 或系统负载高),diff 将超过 2,导致测试失败。
    • 修改建议:应参考 test_create_default_ttl_300s 的做法,在 create 调用前后分别记录时间点,构建一个时间窗口进行断言,或者使用 freeze_time 等 Mock 时间库来消除时间差。
  2. tests/unit/test_verification_code_domain.py 第124-131行:测试名称与断言逻辑矛盾,可能掩盖业务逻辑错误。

    • 问题描述:测试方法名为 test_mark_used_idempotent(幂等性),但断言 assert vc.used_at >= first_used_at 验证了第二次调用会更新时间戳。幂等性是指多次执行产生的效果与一次执行相同。如果 used_at 时间被更新,则该方法不具备幂等性。如果业务意图是“记录最后一次操作时间”,则不应命名为幂等测试;如果业务意图是“标记为已使用”,则通常应设计为幂等(忽略后续调用),当前的断言可能验证了错误的非幂等行为。
    • 修改建议:确认业务需求。如果要求幂等,应修改断言为 assert vc.used_at == first_used_at;如果不要求幂等,请重命名测试方法以准确反映其行为(如 test_mark_used_updates_time)。

💡 建议(2个可选)

  1. tests/unit/test_classification_domain.py 第119行:建议使用枚举常量而非硬编码字符串。

    • 具体内容:断言 assert job.classification == "scenic" 依赖字符串字面量。如果 AssetClassification 枚举的值发生变化,测试将失效。建议改为 assert job.classification == AssetClassification.SCENIC.value 或直接比较枚举对象(若框架支持)。
  2. tests/unit/test_generated_video_domain.py 第148, 154, 165行:建议使用常量定义状态字符串。

    • 具体内容:测试中多处直接使用 "completed", "pending_review", "failed" 等字符串。建议在测试类或模块中定义常量,以提高可维护性并避免拼写错误。

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


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

## 代码审查结果 - PR #682 ### ⚠️ 问题(2个需要修改) 1. **tests/unit/test_verification_code_domain.py 第68-72行**:时间计算逻辑存在缺陷,会导致测试不稳定。 - **问题描述**:在 `test_create_custom_ttl` 中,`expected` 变量是在 `VerificationCode.create` 执行**之后**计算的。这意味着 `expected` 包含了 `create` 方法的执行耗时。`vc.expires_at` 是在 `create` 方法内部生成的,因此 `expected` 必然晚于 `vc.expires_at`。如果 `create` 方法执行超过 2 秒(例如因 GC、IO 或系统负载高),`diff` 将超过 2,导致测试失败。 - **修改建议**:应参考 `test_create_default_ttl_300s` 的做法,在 `create` 调用前后分别记录时间点,构建一个时间窗口进行断言,或者使用 `freeze_time` 等 Mock 时间库来消除时间差。 2. **tests/unit/test_verification_code_domain.py 第124-131行**:测试名称与断言逻辑矛盾,可能掩盖业务逻辑错误。 - **问题描述**:测试方法名为 `test_mark_used_idempotent`(幂等性),但断言 `assert vc.used_at >= first_used_at` 验证了第二次调用会更新时间戳。幂等性是指多次执行产生的效果与一次执行相同。如果 `used_at` 时间被更新,则该方法不具备幂等性。如果业务意图是“记录最后一次操作时间”,则不应命名为幂等测试;如果业务意图是“标记为已使用”,则通常应设计为幂等(忽略后续调用),当前的断言可能验证了错误的非幂等行为。 - **修改建议**:确认业务需求。如果要求幂等,应修改断言为 `assert vc.used_at == first_used_at`;如果不要求幂等,请重命名测试方法以准确反映其行为(如 `test_mark_used_updates_time`)。 ### 💡 建议(2个可选) 1. **tests/unit/test_classification_domain.py 第119行**:建议使用枚举常量而非硬编码字符串。 - **具体内容**:断言 `assert job.classification == "scenic"` 依赖字符串字面量。如果 `AssetClassification` 枚举的值发生变化,测试将失效。建议改为 `assert job.classification == AssetClassification.SCENIC.value` 或直接比较枚举对象(若框架支持)。 2. **tests/unit/test_generated_video_domain.py 第148, 154, 165行**:建议使用常量定义状态字符串。 - **具体内容**:测试中多处直接使用 `"completed"`, `"pending_review"`, `"failed"` 等字符串。建议在测试类或模块中定义常量,以提高可维护性并避免拼写错误。 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ✅ 性能良好 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-21 19:40:53 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
Sign in to join this conversation.