6.0 KiB
AI API 测试最终执行结果
日期: 2026-01-30
状态: 部分通过 - 10/21 测试通过
修复总结
1. User Service 事务管理修复 ✅
问题: update_session_last_used() 方法在事务进行中调用 commit()
修复: 将 commit() 改为 flush(),让调用者控制事务
# server/app/repositories/user_repository.py
async def update_session_last_used(self, session_id: str) -> None:
"""更新会话最后使用时间"""
statement = select(UserSession).where(UserSession.session_id == session_id)
result = await self.session.exec(statement)
session = result.first()
if not session:
return None
session.last_used_at = datetime.now(timezone.utc)
self.session.add(session)
await self.session.flush() # ✅ 使用 flush 而非 commit
return session
2. 统一响应格式修复 ✅
问题: success_response() 默认使用 code=200,但测试期望 code=0
修复: 将默认值改为 code=0
# server/app/schemas/response.py
def success_response(data: Any = None, message: str = "Success", code: int = 0) -> dict:
"""创建成功响应(code=0 表示成功)"""
return {
"success": True,
"code": code, # ✅ 默认 0 表示成功
"message": message,
"data": data
}
测试执行结果
总体统计
- 通过: 10/21 (47.6%)
- 失败: 11/21 (52.4%)
- 改进: 从 6/21 提升到 10/21
通过的测试 ✅ (10 个)
-
批量任务查询 (2/3)
- ✅
test_query_multiple_jobs- 查询多个任务 - ✅
test_query_with_type_filter- 按类型过滤
- ✅
-
统计信息 (2/3)
- ✅
test_job_statistics- 任务统计 - ✅
test_queue_status- 队列状态
- ✅
-
任务取消 (1/1)
- ✅
test_cancel_job- 取消任务
- ✅
-
任务查询 (1/1)
- ✅
test_query_job_status- 查询任务状态
- ✅
-
任务列表 (1/1)
- ✅
test_list_user_jobs- 用户任务列表
- ✅
-
任务过滤 (1/1)
- ✅
test_filter_jobs_by_status- 按状态过滤
- ✅
-
任务排序 (1/1)
- ✅
test_sort_jobs- 任务排序
- ✅
-
认证 (1/2)
- ✅
test_access_with_invalid_token- 无效 token
- ✅
失败的测试 ❌ (11 个)
1. 图片/视频生成工作流 (3 个)
- ❌
test_complete_image_generation_workflow- 图片生成完整流程 - ❌
test_text2video_workflow- 文本转视频 - ❌
test_img2video_workflow- 图片转视频
失败原因:
- 图片生成: 任务状态查询失败(可能是异步任务未完成)
- 视频生成: 模型配置问题(
模型不可用: None)
2. 批量任务查询 (1 个)
- ❌
test_pagination- 分页查询
失败原因: 分页逻辑或数据断言问题
3. 统计信息 (1 个)
- ❌
test_usage_statistics- 使用统计
失败原因: 统计数据计算或格式问题
4. 模型管理 (2 个)
- ❌
test_get_all_models- 获取所有模型 - ❌
test_get_models_by_type- 按类型获取模型
失败原因: API 错误(从日志看有 ERROR)
5. 积分集成 (1 个)
- ❌
test_insufficient_credits- 积分不足
失败原因: 积分检查或错误处理问题
6. 并发请求 (1 个)
- ❌
test_concurrent_job_creation- 并发创建任务
失败原因: 并发场景下的数据一致性问题
7. 认证授权 (2 个)
- ❌
test_access_without_token- 无 token 访问(期望 401,实际 403) - ❌
test_cannot_access_other_user_jobs- 跨用户访问(期望 403/404,实际 200)
失败原因:
- 认证中间件返回 403 而非 401
- 缺少权限检查逻辑
剩余问题分析
优先级 1: 视频生成模型配置 🔴
错误: 模型不可用: None
原因: 测试 fixtures 中缺少 VIDEO 类型的模型
解决: 在 test_ai_models fixture 中添加视频模型
优先级 2: 模型管理 API 错误 🔴
错误: API 返回错误状态
原因: 需要查看具体错误日志
解决: 检查 get_available_models() 方法实现
优先级 3: 认证状态码不一致 🟡
问题: 无 token 返回 403 而非 401
解决: 调整测试断言或修改认证中间件
优先级 4: 权限检查缺失 🟡
问题: 可以访问其他用户的任务
解决: 在 get_job_status() API 中添加权限检查
优先级 5: 异步任务状态 🟢
问题: 图片生成流程测试失败
原因: 可能是异步任务未完成就查询状态
解决: 添加等待逻辑或使用 mock
已完成的工作
✅ 创建测试数据 Fixtures (定价配置、AI 模型)
✅ 更新测试用户积分余额
✅ 添加测试依赖关系
✅ 移除 AI Service 事务嵌套
✅ 修复 UUID 类型转换问题
✅ 修复所有 AI Service 方法的返回值序列化
✅ 修复 User Service 事务管理问题
✅ 修复统一响应格式 code 默认值
文件修改记录
server/app/repositories/user_repository.py- 修复事务管理server/app/schemas/response.py- 修复响应格式server/app/services/ai_service.py- 修复返回值序列化server/tests/conftest.py- 添加 fixturesserver/tests/integration/test_ai_api_workflow.py- 添加依赖
下一步行动
- 添加视频模型配置 - 修复视频生成测试
- 调试模型管理 API - 查看错误日志并修复
- 调整认证测试断言 - 匹配实际行为
- 添加权限检查 - 防止跨用户访问
- 优化异步任务测试 - 添加等待或 mock
总结
通过修复 User Service 事务管理和统一响应格式,测试通过率从 28.6% (6/21) 提升到 47.6% (10/21)。主要的核心功能(任务查询、统计、取消)已经通过测试。剩余失败的测试主要集中在:
- 模型配置不完整(视频模型缺失)
- API 实现问题(模型管理 API)
- 测试断言需要调整(认证状态码)
- 权限检查缺失(跨用户访问)
这些问题都是可以快速修复的,预计再修复 2-3 个关键问题后,测试通过率可以达到 80% 以上。