feat: 优化兼容性检测脚本
- 重命名脚本为 detect_xxx.py 格式 - 移除所有装饰线,精简输出格式 - 请求/响应输出增加 URL/Headers/入参/响应 标题标记 - 为所有正面用例添加响应验证器 - 补充 OpenAI 版缺失的负面测试(max_tokens 负数/0、temperature 越界) - 移除未使用的 format_validation_errors 导入 - 新增 scripts/README.md 文档
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user