1
0

feat: 优化兼容性检测脚本

- 重命名脚本为 detect_xxx.py 格式
- 移除所有装饰线,精简输出格式
- 请求/响应输出增加 URL/Headers/入参/响应 标题标记
- 为所有正面用例添加响应验证器
- 补充 OpenAI 版缺失的负面测试(max_tokens 负数/0、temperature 越界)
- 移除未使用的 format_validation_errors 导入
- 新增 scripts/README.md 文档
This commit is contained in:
2026-04-21 12:50:49 +08:00
parent 7f0f831226
commit 980875ecf3
4 changed files with 441 additions and 67 deletions

View File

@@ -237,8 +237,15 @@ def run_test(
TestResult 对象
"""
print(f"\n[{index}/{total}] {test_case.desc}")
print(f">>> {test_case.method} {test_case.url}")
print(f"\nURL: {test_case.method} {test_case.url}")
if test_case.headers:
print("\nHeaders:")
for k, v in test_case.headers.items():
print(f" {k}: {v}")
if test_case.body is not None:
print("\n入参:")
if isinstance(test_case.body, str):
print(test_case.body)
else:
@@ -261,18 +268,16 @@ def run_test(
)
if result.status is not None:
print(f"状态码: {result.status} | 耗时: {result.elapsed:.2f}s")
print(f"\n响应 ({result.status}, {result.elapsed:.2f}s):")
else:
print(f"请求失败 | 耗时: {result.elapsed:.2f}s")
print(f"\n请求失败 ({result.elapsed:.2f}s):")
if test_case.stream and result.status and result.status < 300:
# 流式响应按 SSE 行逐行输出
for line in result.response.split("\n"):
print(line)
else:
print(format_json(result.response))
# 执行响应验证
if test_case.validator and result.status and 200 <= result.status < 300:
is_valid, errors = test_case.validator(result.response)
if is_valid:
@@ -312,8 +317,7 @@ def run_test_suite(
count_server_error = 0
count_network_error = 0
print("=" * 60)
print(title)
print(f"\n{title}")
print(f"目标: {base_url}")
print(f"模型: {model}")
print(f"时间: {time.strftime('%Y-%m-%d %H:%M:%S')}")
@@ -321,7 +325,7 @@ def run_test_suite(
print(f"用例: {total} 个 | 扩展: {', '.join(flags)}")
else:
print(f"用例: {total}")
print("=" * 60)
print()
for i, test_case in enumerate(cases, 1):
result = run_test(i, total, test_case, ssl_ctx)
@@ -336,11 +340,9 @@ def run_test_suite(
count_network_error += 1
print()
print("=" * 60)
print(f"测试完成 | 总计: {total} | 成功: {count_success} | "
f"客户端错误: {count_client_error} | 服务端错误: {count_server_error} | "
f"网络错误: {count_network_error}")
print("=" * 60)
return total, count_success, count_client_error, count_server_error