init the project
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
# 测试用例生成与导出接口
|
||||
|
||||
import logging
|
||||
|
||||
from fastapi import APIRouter, HTTPException
|
||||
from fastapi.responses import Response
|
||||
|
||||
from server.services.testcase_engine.generator import tc_generator
|
||||
from server.services.testcase_engine.exporter import tc_exporter
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.post("/generate")
|
||||
async def generate_testcases(ir_id: str):
|
||||
"""基于 IR 生成测试用例集"""
|
||||
result = await tc_generator.generate(ir_id)
|
||||
if "error" in result:
|
||||
raise HTTPException(500, result["error"])
|
||||
|
||||
return {
|
||||
"tc_set_id": result["tc_set_id"],
|
||||
"ir_id": result["ir_id"],
|
||||
"case_count": result["case_count"],
|
||||
"cases": result["cases"],
|
||||
"created_at": result["created_at"],
|
||||
}
|
||||
|
||||
|
||||
@router.get("/export/{format}")
|
||||
async def export_testcases(tc_set_id: str, format: str):
|
||||
"""导出测试用例为指定格式 (yaml/csv/json)"""
|
||||
if format not in ("yaml", "csv", "json"):
|
||||
raise HTTPException(400, f"Unsupported format: {format}")
|
||||
|
||||
try:
|
||||
content, mime_type, filename = await tc_exporter.export(tc_set_id, format)
|
||||
except ValueError as e:
|
||||
raise HTTPException(404, str(e))
|
||||
|
||||
content_bytes = content.encode("utf-8") if isinstance(content, str) else content
|
||||
return Response(
|
||||
content=content_bytes,
|
||||
media_type=mime_type,
|
||||
headers={"Content-Disposition": f"attachment; filename={filename}"},
|
||||
)
|
||||
Reference in New Issue
Block a user