# 分镜资源命名逻辑测试更新 **日期**: 2026-02-12 **类型**: 测试更新 **影响范围**: 单元测试、集成测试 ## 概述 更新了分镜资源(图片和视频)的单元测试和集成测试,以验证新增的自动命名逻辑和 `name`/`description` 字段功能。 ## 变更内容 ### 1. 单元测试更新 **文件**: `server/tests/unit/services/test_storyboard_resource_service.py` #### 图片测试 - **`test_create_image_success`**: - 新增分镜信息 mock(`order_index`、`title`) - 新增已有图片列表 mock(用于计算方案编号) - 验证自动生成的名称格式:`005-开场镜头-方案03` - **`test_create_image_with_custom_name`** (新增): - 测试使用自定义名称创建图片 - 验证不查询已有图片列表 - 验证使用用户提供的名称 - **`test_create_image_deactivate_others`**: - 修复 mock 配置,添加分镜信息 mock - 验证激活图片时取消其他图片的逻辑 #### 视频测试 - **`test_create_video_success`**: - 新增分镜信息 mock(`order_index`、`title`) - 新增已有视频列表 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`** (新增): - 测试使用自定义 `name` 和 `description` 创建图片 - 验证 API 返回的字段值正确 #### 视频 API 测试 - **`test_create_storyboard_video_success`**: - 验证 API 返回的 `name` 字段不为空 - 验证名称包含 `-方案` 标识 - **`test_create_storyboard_video_with_custom_name`** (新增): - 测试使用自定义 `name` 和 `description` 创建视频 - 验证 API 返回的字段值正确 ## 测试覆盖 ### 命名逻辑验证 ✅ 自动生成名称格式正确(镜号-分镜名称-方案XX) ✅ 方案编号基于已有资源数量累计 ✅ 图片和视频的方案编号独立计算 ✅ 用户提供自定义名称时使用用户名称 ✅ 自定义名称时不查询已有资源列表(性能优化) ### API 响应验证 ✅ 创建资源时返回 `name` 字段 ✅ 创建资源时返回 `description` 字段 ✅ 自动生成的名称符合预期格式 ✅ 自定义名称正确保存和返回 ## 测试结果 ```bash # 单元测试 $ 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 配置 ```python # 分镜信息 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 ``` ### 测试断言 ```python # 验证自动生成的名称 assert result.name == "005-开场镜头-方案03" # 验证自定义名称 assert result.name == "我的自定义图片名称" # 验证不查询已有资源(性能优化) mock_repository.get_images_by_storyboard.assert_not_called() ``` ## 相关文档 - [资源命名逻辑实现](./2026-02-12-implement-resource-naming-logic.md) - [新增 name 和 description 字段](./2026-02-12-add-name-description-to-resources.md) - [数据库迁移](../../alembic/versions/20260212_1900_add_name_description_to_resources.py) ## 后续工作 - [ ] 运行集成测试验证 API 行为 - [ ] 前端集成测试(验证 UI 显示和交互) - [ ] 性能测试(大量资源场景下的命名性能)