You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

5.3 KiB

分镜资源命名逻辑测试更新

日期: 2026-02-12
类型: 测试更新
影响范围: 单元测试、集成测试

概述

更新了分镜资源(图片和视频)的单元测试和集成测试,以验证新增的自动命名逻辑和 name/description 字段功能。

变更内容

1. 单元测试更新

文件: server/tests/unit/services/test_storyboard_resource_service.py

图片测试

  • test_create_image_success:

    • 新增分镜信息 mock(order_indextitle
    • 新增已有图片列表 mock(用于计算方案编号)
    • 验证自动生成的名称格式:005-开场镜头-方案03
  • test_create_image_with_custom_name (新增):

    • 测试使用自定义名称创建图片
    • 验证不查询已有图片列表
    • 验证使用用户提供的名称
  • test_create_image_deactivate_others:

    • 修复 mock 配置,添加分镜信息 mock
    • 验证激活图片时取消其他图片的逻辑

视频测试

  • test_create_video_success:

    • 新增分镜信息 mock(order_indextitle
    • 新增已有视频列表 mock(用于计算方案编号)
    • 验证自动生成的名称格式:010-结尾镜头-方案02
  • test_create_video_with_custom_name (新增):

    • 测试使用自定义名称创建视频
    • 验证不查询已有视频列表
    • 验证使用用户提供的名称

2. 集成测试更新

文件: server/tests/integration/test_storyboard_resource_api.py

图片 API 测试

  • test_create_storyboard_image_success:

    • 验证 API 返回的 name 字段不为空
    • 验证名称包含 -方案 标识
  • test_create_storyboard_image_with_custom_name (新增):

    • 测试使用自定义 namedescription 创建图片
    • 验证 API 返回的字段值正确

视频 API 测试

  • test_create_storyboard_video_success:

    • 验证 API 返回的 name 字段不为空
    • 验证名称包含 -方案 标识
  • test_create_storyboard_video_with_custom_name (新增):

    • 测试使用自定义 namedescription 创建视频
    • 验证 API 返回的字段值正确

测试覆盖

命名逻辑验证

自动生成名称格式正确(镜号-分镜名称-方案XX)
方案编号基于已有资源数量累计
图片和视频的方案编号独立计算
用户提供自定义名称时使用用户名称
自定义名称时不查询已有资源列表(性能优化)

API 响应验证

创建资源时返回 name 字段
创建资源时返回 description 字段
自动生成的名称符合预期格式
自定义名称正确保存和返回

测试结果

# 单元测试
$ docker exec jointo-server-app pytest tests/unit/services/test_storyboard_resource_service.py -v
============================== 18 passed in 0.31s ===============================

# 关键测试用例
✅ test_create_image_success - 自动生成名称
✅ test_create_image_with_custom_name - 自定义名称
✅ test_create_video_success - 自动生成名称
✅ test_create_video_with_custom_name - 自定义名称

# 集成测试
$ docker exec jointo-server-app pytest tests/integration/test_storyboard_resource_api.py::TestStoryboardResourceAPI::test_create_storyboard_image_success tests/integration/test_storyboard_resource_api.py::TestStoryboardResourceAPI::test_create_storyboard_image_with_custom_name -v
============================== 2 passed in 6.17s ===============================

$ docker exec jointo-server-app pytest tests/integration/test_storyboard_resource_api.py::TestStoryboardResourceAPI::test_create_storyboard_video_success tests/integration/test_storyboard_resource_api.py::TestStoryboardResourceAPI::test_create_storyboard_video_with_custom_name -v
============================== 2 passed in 5.75s ===============================

# API 测试验证
✅ test_create_storyboard_image_success - 自动生成名称(API 返回正确)
✅ test_create_storyboard_image_with_custom_name - 自定义名称(API 返回正确)
✅ test_create_storyboard_video_success - 自动生成名称(API 返回正确)
✅ test_create_storyboard_video_with_custom_name - 自定义名称(API 返回正确)

技术细节

Mock 配置

# 分镜信息 mock
mock_storyboard = MagicMock()
mock_storyboard.order_index = 5
mock_storyboard.title = "开场镜头"

# 已有资源列表 mock(用于计算方案编号)
existing_images = [MagicMock(), MagicMock()]  # 2个已有图片
mock_repository.get_images_by_storyboard.return_value = existing_images

# 预期生成名称:005-开场镜头-方案03

测试断言

# 验证自动生成的名称
assert result.name == "005-开场镜头-方案03"

# 验证自定义名称
assert result.name == "我的自定义图片名称"

# 验证不查询已有资源(性能优化)
mock_repository.get_images_by_storyboard.assert_not_called()

相关文档

后续工作

  • 运行集成测试验证 API 行为
  • 前端集成测试(验证 UI 显示和交互)
  • 性能测试(大量资源场景下的命名性能)