Skip to content

AigcImagePipelineTest - 火山生图链路测试

概述

AigcImagePipelineTest 是用于测试火山引擎(Volcengine)图片生成服务的全链路集成测试类。该测试模拟前端真实调用时序,验证从提交任务到获取最终图片的完整流程。

测试文件位置

api/tests/api/AigcImagePipelineTest.php

测试分组

php
/**
 * @group aigc-e2e
 */

包含的测试方法

1. testVolcengineImageGenerationPipeline

测试目标: 验证火山引擎图片生成的完整链路

测试流程:

Step 1: 提交图片生成任务

Step 2: 断言并提取 Task ID

Step 3: 长轮询查询任务状态 (最多30次,间隔2秒)

Step 4: 验证任务成功并获取图片 URL

Step 5: 验证图片 URL 可访问性

请求参数:

php
[
    '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

请求参数:

php
[
    'text' => '测试语音合成',
    'options' => [
        'voice_type' => 'zh_female_qingxin',
    ],
]

关键断言:

  • 响应为数组格式

预期输出:

=== Testing TTS Synthesize Connection ===
TTS API response received
✅ TTS Synthesize Connection test passed!

测试配置

环境变量

变量名默认值说明
API_BASE_URLhttp://localhost:8000API 服务器基础 URL

可配置参数

在测试代码中可以调整以下参数:

php
// 轮询配置
$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()


运行测试

运行整个测试类

bash
cd api
vendor/bin/phpunit tests/api/AigcImagePipelineTest.php

仅运行图片生成链路测试

bash
vendor/bin/phpunit tests/api/AigcImagePipelineTest.php --filter testVolcengineImageGenerationPipeline

仅运行模型列表测试

bash
vendor/bin/phpunit tests/api/AigcImagePipelineTest.php --filter testVolcengineModelsList

仅运行 TTS 连通性测试

bash
vendor/bin/phpunit tests/api/AigcImagePipelineTest.php --filter testTtsSynthesizeConnection

注意事项

⚠️ 重要提醒:

  1. 成本考虑 - 每次运行 testVolcengineImageGenerationPipeline 都会调用火山引擎 API 并产生费用
  2. 耗时较长 - 图片生成可能需要 30-60 秒,加上轮询时间可能超过 1 分钟
  3. 网络要求 - 需要能够访问火山引擎服务
  4. 配额限制 - 注意火山引擎的 API 调用配额限制

故障排查

问题: 测试被跳过

原因: API 服务器未运行或无法访问

解决:

  1. 确认 API 服务器正在运行
  2. 检查 API_BASE_URL 配置是否正确
  3. 检查网络连接

问题: 任务总是失败

原因: 可能是火山引擎配置问题或配额不足

解决:

  1. 检查火山引擎 API 密钥配置
  2. 确认账户有足够的配额
  3. 查看后端日志获取详细错误信息

问题: 轮询超时

原因: 任务处理时间超过预期

解决:

  1. 增加 $maxAttempts 参数
  2. 增加 $pollInterval 参数
  3. 检查火山引擎服务状态

扩展测试

如需扩展测试,可以考虑添加:

  1. 不同场景测试 - 测试不同的 scene_keyreq_key
  2. 尺寸变化测试 - 测试不同的图片尺寸
  3. 批量生成测试 - 测试 n > 1 的情况
  4. 负面提示词测试 - 验证 negative_prompt 的效果
  5. 错误处理测试 - 测试各种错误场景的处理

相关文档