AigcImagePipelineTest - 火山生图链路测试
概述
AigcImagePipelineTest 是用于测试火山引擎(Volcengine)图片生成服务的全链路集成测试类。该测试模拟前端真实调用时序,验证从提交任务到获取最终图片的完整流程。
测试文件位置
api/tests/api/AigcImagePipelineTest.php测试分组
/**
* @group aigc-e2e
*/包含的测试方法
1. testVolcengineImageGenerationPipeline
测试目标: 验证火山引擎图片生成的完整链路
测试流程:
Step 1: 提交图片生成任务
↓
Step 2: 断言并提取 Task ID
↓
Step 3: 长轮询查询任务状态 (最多30次,间隔2秒)
↓
Step 4: 验证任务成功并获取图片 URL
↓
Step 5: 验证图片 URL 可访问性请求参数:
[
'req_key' => 'high_aes_generation',
'prompt' => '测试生成一张酒店海报,包含海景房元素,风格温馨',
'scene_key' => 'festival-poster',
'size' => '1280:720',
'n' => 1,
]关键断言:
- 提交任务返回 200 状态码
- task_id 不为空
- 轮询超时前任务状态变为 success
- image_url 不为空
- 图片 URL 可访问(可选)
预期输出:
=== Testing Volcengine Image Generation Pipeline ===
Step 1: Submitting image generation task...
✓ Task submitted successfully, task_id: xxx
Step 2: Polling for result...
Poll attempt 1/30...
Current status: processing
...
✓ Image generated successfully
✓ Image URL: https://...
✓ Image URL is accessible
✅ Volcengine Image Generation Pipeline test passed!2. testVolcengineModelsList
测试目标: 验证获取火山引擎模型列表接口
请求方法: GET /api/app/volcengine/models
关键断言:
- 响应为数组格式
- 若 code 为 0,data 字段为数组
预期输出:
=== Testing Volcengine Models List ===
✓ Models list retrieved, count: N
✅ Volcengine Models List test passed!3. testTtsSynthesizeConnection
测试目标: 验证 TTS 语音合成接口连通性
请求方法: POST /api/app/volcengine/tts/synthesize
请求参数:
[
'text' => '测试语音合成',
'options' => [
'voice_type' => 'zh_female_qingxin',
],
]关键断言:
- 响应为数组格式
预期输出:
=== Testing TTS Synthesize Connection ===
TTS API response received
✅ TTS Synthesize Connection test passed!测试配置
环境变量
| 变量名 | 默认值 | 说明 |
|---|---|---|
API_BASE_URL | http://localhost:8000 | API 服务器基础 URL |
可配置参数
在测试代码中可以调整以下参数:
// 轮询配置
$maxAttempts = 30; // 最大轮询次数
$pollInterval = 2; // 轮询间隔(秒)
// HTTP 客户端配置
'timeout' => 120, // 请求超时时间(秒)相关接口
提交视觉任务
接口: POST /api/app/volcengine/visual/submit
控制器: app/aigc/controller/ApiVolcengine.php::visualSubmit()
服务: app/aigc/service/VolcengineService.php::visualSubmit()
请求参数:
req_key- 请求类型标识prompt- 生成提示词negative_prompt- 负面提示词scene_key- 场景标识size- 图片尺寸n- 生成数量- 其他火山引擎支持的参数
查询视觉任务结果
接口: POST /api/app/volcengine/visual/result
控制器: app/aigc/controller/ApiVolcengine.php::visualResult()
服务: app/aigc/service/VolcengineService.php::visualResult()
请求参数:
req_key- 请求类型标识task_id- 任务 ID
响应状态:
success/succeeded- 任务成功processing- 处理中failed- 任务失败
获取模型列表
接口: GET /api/app/volcengine/models
控制器: app/aigc/controller/ApiVolcengine.php::models()
服务: app/aigc/service/VolcengineService.php::models()
TTS 语音合成
接口: POST /api/app/volcengine/tts/synthesize
控制器: app/aigc/controller/ApiVolcengine.php::ttsSynthesize()
服务: app/aigc/service/VolcengineService.php::ttsSynthesize()
运行测试
运行整个测试类
cd api
vendor/bin/phpunit tests/api/AigcImagePipelineTest.php仅运行图片生成链路测试
vendor/bin/phpunit tests/api/AigcImagePipelineTest.php --filter testVolcengineImageGenerationPipeline仅运行模型列表测试
vendor/bin/phpunit tests/api/AigcImagePipelineTest.php --filter testVolcengineModelsList仅运行 TTS 连通性测试
vendor/bin/phpunit tests/api/AigcImagePipelineTest.php --filter testTtsSynthesizeConnection注意事项
⚠️ 重要提醒:
- 成本考虑 - 每次运行
testVolcengineImageGenerationPipeline都会调用火山引擎 API 并产生费用 - 耗时较长 - 图片生成可能需要 30-60 秒,加上轮询时间可能超过 1 分钟
- 网络要求 - 需要能够访问火山引擎服务
- 配额限制 - 注意火山引擎的 API 调用配额限制
故障排查
问题: 测试被跳过
原因: API 服务器未运行或无法访问
解决:
- 确认 API 服务器正在运行
- 检查
API_BASE_URL配置是否正确 - 检查网络连接
问题: 任务总是失败
原因: 可能是火山引擎配置问题或配额不足
解决:
- 检查火山引擎 API 密钥配置
- 确认账户有足够的配额
- 查看后端日志获取详细错误信息
问题: 轮询超时
原因: 任务处理时间超过预期
解决:
- 增加
$maxAttempts参数 - 增加
$pollInterval参数 - 检查火山引擎服务状态
扩展测试
如需扩展测试,可以考虑添加:
- 不同场景测试 - 测试不同的
scene_key和req_key - 尺寸变化测试 - 测试不同的图片尺寸
- 批量生成测试 - 测试
n > 1的情况 - 负面提示词测试 - 验证
negative_prompt的效果 - 错误处理测试 - 测试各种错误场景的处理