8.3 KiB
8.3 KiB
🧪 API 配置功能测试指南
📋 测试前准备
1. 启动后端服务
cd backend
uvicorn main:app --reload --port 8000
确保看到:
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:8000
2. (可选)启动 ComfyUI
如果要测试 ComfyUI 连接:
# 本地运行
python comfyui/main.py --listen 0.0.0.0 --port 8188
# 或 Docker
docker-compose up -d comfyui
🚀 运行测试
方法 1: 使用 Python 脚本(推荐)
# 在项目根目录运行
python test_api_config.py
预期输出:
============================================================
ComfyUI API 配置测试
============================================================
============================================================
测试 1: 列出工作流
============================================================
✅ 成功获取 1 个工作流
📄 default_txt2img.json
节点数: 7, 大小: 1234 bytes
...
============================================================
测试总结
============================================================
✅ 通过 - 列出工作流
✅ 通过 - 获取工作流详情
✅ 通过 - 上传工作流
✅ 通过 - 删除工作流
✅ 通过 - 测试 ComfyUI 连接
✅ 通过 - 测试云端 API 连接
总计: 6/6 通过
🎉 所有测试通过!
方法 2: 使用 cURL 手动测试
测试 1: 列出工作流
curl http://localhost:8000/api/api-config/comfyui/workflows | jq
预期响应:
[
{
"filename": "default_txt2img.json",
"name": "default_txt2img",
"nodes_count": 7,
"size": 1234
}
]
测试 2: 获取工作流详情
curl http://localhost:8000/api/api-config/comfyui/workflows/default_txt2img.json | jq
预期响应:
{
"3": {
"inputs": {...},
"class_type": "KSampler",
"_meta": {"title": "K采样器"}
},
...
}
测试 3: 上传工作流
创建一个测试文件 test_workflow.json:
cat > test_workflow.json << 'EOF'
{
"3": {
"inputs": {
"seed": 42,
"steps": 20,
"cfg": 8,
"sampler_name": "euler",
"scheduler": "normal",
"denoise": 1,
"model": ["4", 0],
"positive": ["6", 0],
"negative": ["7", 0],
"latent_image": ["5", 0]
},
"class_type": "KSampler"
},
"4": {
"inputs": {"ckpt_name": "test.safetensors"},
"class_type": "CheckpointLoaderSimple"
},
"5": {
"inputs": {"width": 512, "height": 512, "batch_size": 1},
"class_type": "EmptyLatentImage"
},
"6": {
"inputs": {"text": "test", "clip": ["4", 1]},
"class_type": "CLIPTextEncode"
},
"7": {
"inputs": {"text": "bad", "clip": ["4", 1]},
"class_type": "CLIPTextEncode"
},
"8": {
"inputs": {"samples": ["3", 0], "vae": ["4", 2]},
"class_type": "VAEDecode"
},
"9": {
"inputs": {"images": ["8", 0], "filename_prefix": "Test"},
"class_type": "SaveImage"
}
}
EOF
上传:
curl -X POST http://localhost:8000/api/api-config/comfyui/workflows/upload \
-F "file=@test_workflow.json" | jq
预期响应:
{
"message": "Workflow uploaded successfully",
"filename": "test_workflow.json",
"size": 1234
}
测试 4: 删除工作流
curl -X DELETE http://localhost:8000/api/api-config/comfyui/workflows/test_workflow.json | jq
预期响应:
{
"message": "Workflow 'test_workflow.json' deleted successfully"
}
测试 5: 测试 ComfyUI 连接
curl -X POST http://localhost:8000/api/api-config/test-comfyui-connection \
-H "Content-Type: application/json" \
-d '{"apiUrl": "http://localhost:8188"}' | jq
如果 ComfyUI 正在运行:
{
"success": true,
"message": "连接成功",
"stats": {
"vram_total": 25769803776,
"vram_free": 24696061952,
"torch_version": "2.1.0+cu121",
"device": "cuda"
}
}
如果 ComfyUI 未运行:
{
"success": false,
"message": "无法连接到 ComfyUI,请检查地址和端口"
}
测试 6: 测试云端 API 连接
curl -X POST http://localhost:8000/api/api-config/test-cloud-connection \
-H "Content-Type: application/json" \
-d '{
"provider": "dall-e",
"apiKey": "sk-your-api-key-here",
"model": "dall-e-3"
}' | jq
预期响应(如果 API Key 有效):
{
"success": true,
"message": "连接成功,模型 dall-e-3 可用"
}
✅ 测试检查清单
后端 API
- 列出工作流返回正确的列表
- 获取工作流详情返回完整的 JSON
- 上传工作流成功保存文件
- 上传的工作流可以通过列表看到
- 删除工作流成功移除文件
- 默认工作流不可删除(返回 403)
- ComfyUI 连接测试正确检测状态
- 云端 API 连接测试验证 Key
前端 UI
- 可以切换到"🎨 生图"标签
- 模式切换卡片正常显示
- 点击"本地 ComfyUI"显示本地配置
- 点击"在线 API"显示云端配置
- 表单输入正常工作
- 工作流管理器显示默认工作流
- 可以上传工作流文件
- 可以删除工作流(非默认)
- 测试连接按钮正常工作
- 保存配置功能正常
响应式设计
- 大屏幕(>768px)双列布局
- 小屏幕(<768px)单列布局
- 无页面级滚动条
- 侧边栏可独立滚动
- 无横向滚动
🐛 常见问题
Q1: 测试脚本提示"Connection refused"
原因:后端服务未启动
解决:
cd backend
uvicorn main:app --reload --port 8000
Q2: 上传工作流提示"Invalid ComfyUI workflow"
原因:JSON 格式不正确或缺少必要节点
解决:
- 确保包含
KSampler节点 - 使用 ComfyUI 的 "Save (API Format)" 导出
- 检查 JSON 语法是否正确
Q3: 删除工作流提示"Cannot delete default workflow"
这是正常的!默认工作流受保护,不可删除。
要测试删除功能,请先上传一个自定义工作流,然后删除它。
Q4: ComfyUI 连接测试失败
可能原因:
- ComfyUI 未启动
- 地址或端口错误
- Docker 网络问题
解决:
# 检查 ComfyUI 是否运行
curl http://localhost:8188/system_stats
# Docker 环境下
docker ps | grep comfyui
docker logs comfyui
📊 测试结果解读
全部通过 ✅
总计: 6/6 通过
🎉 所有测试通过!
→ API 配置功能完全正常,可以开始使用
部分失败 ⚠️
总计: 4/6 通过
⚠️ 2 个测试失败,请检查日志
→ 查看失败的测试项,根据错误信息排查
全部失败 ❌
总计: 0/6 通过
→ 检查后端服务是否正常运行 → 检查端口是否正确(8000) → 查看后端日志
🎯 下一步
测试通过后,你可以:
-
启动前端
cd frontend npm run dev -
访问应用
- 打开浏览器访问
http://localhost:5173 - 进入 API 配置页面
- 配置你的生图服务
- 打开浏览器访问
-
开始生图
- 配置完成后
- 在聊天界面输入生图请求
- 等待图片生成
📝 附录
工作流文件格式
必须是 ComfyUI API 格式的 JSON:
{
"node_id": {
"inputs": {...},
"class_type": "NodeType",
"_meta": {"title": "Display Name"}
}
}
必需的节点类型
KSampler- 采样器(必需)CheckpointLoaderSimple- 模型加载器EmptyLatentImage- 潜变量图像CLIPTextEncode- 文本编码器(正向和负向)VAEDecode- VAE 解码器SaveImage- 保存图像
API 端点列表
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/api-config/comfyui/workflows |
列出工作流 |
| POST | /api/api-config/comfyui/workflows/upload |
上传工作流 |
| DELETE | /api/api-config/comfyui/workflows/{filename} |
删除工作流 |
| GET | /api/api-config/comfyui/workflows/{filename} |
获取工作流详情 |
| POST | /api/api-config/test-comfyui-connection |
测试 ComfyUI |
| POST | /api/api-config/test-cloud-connection |
测试云端 API |
祝测试顺利! 🎉