4475 lines
234 KiB
JSON
4475 lines
234 KiB
JSON
{
|
||
"start_time": "2025-07-11T18:57:44.878856",
|
||
"end_time": "2025-07-11T18:57:45.058583",
|
||
"duration_seconds": "0.18",
|
||
"overall_summary": {
|
||
"total_endpoints_defined": 10,
|
||
"endpoints_tested": 10,
|
||
"endpoints_passed": 8,
|
||
"endpoints_failed": 2,
|
||
"endpoints_error": 0,
|
||
"endpoints_skipped": 0,
|
||
"endpoints_partial_success": 0,
|
||
"endpoint_success_rate": "80.00%",
|
||
"total_test_cases_applicable": 200,
|
||
"total_test_cases_executed": 200,
|
||
"test_cases_passed": 112,
|
||
"test_cases_failed": 50,
|
||
"test_cases_error": 0,
|
||
"test_cases_skipped_in_endpoint": 38,
|
||
"test_case_success_rate": "56.00%",
|
||
"total_stages_defined": 1,
|
||
"total_stages_executed": 2,
|
||
"stages_passed": 0,
|
||
"stages_failed": 2,
|
||
"stages_error": 0,
|
||
"stages_skipped": 0,
|
||
"stage_success_rate": "0.00%"
|
||
},
|
||
"errors": [],
|
||
"endpoint_results": [
|
||
{
|
||
"endpoint_id": "POST /api/dms/wb_ml/v1/lujing_test",
|
||
"endpoint_name": "Create lujing_test",
|
||
"overall_status": "通过",
|
||
"duration_seconds": 0.024396,
|
||
"start_time": "2025-07-11T18:57:44.892251",
|
||
"end_time": "2025-07-11T18:57:44.916647",
|
||
"executed_test_cases": [
|
||
{
|
||
"test_case_id": "TC-STATUS-001",
|
||
"test_case_name": "基本状态码 200 检查",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "响应状态码为 200,符合预期 200。",
|
||
"duration_seconds": 0.0012566250079544261,
|
||
"timestamp": "2025-07-11T18:57:44.893669",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "响应状态码为 200,符合预期 200。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-HEADER-001",
|
||
"test_case_name": "必需请求头Schema验证",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "缺少必需的请求头 X-Tenant-ID;缺少必需的请求头 X-Data-Domain;缺少必需的请求头 Authorization",
|
||
"duration_seconds": 0.0011614999966695905,
|
||
"timestamp": "2025-07-11T18:57:44.894875",
|
||
"validation_points": [
|
||
{
|
||
"header": "X-Tenant-ID",
|
||
"possible_names": [
|
||
"X-Tenant-ID"
|
||
],
|
||
"endpoint": "POST /api/dms/wb_ml/v1/lujing_test"
|
||
},
|
||
{
|
||
"header": "X-Data-Domain",
|
||
"possible_names": [
|
||
"X-Data-Domain"
|
||
],
|
||
"endpoint": "POST /api/dms/wb_ml/v1/lujing_test"
|
||
},
|
||
{
|
||
"header": "Authorization",
|
||
"possible_names": [
|
||
"Authorization"
|
||
],
|
||
"endpoint": "POST /api/dms/wb_ml/v1/lujing_test"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-002",
|
||
"test_case_name": "敏感字段加密检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "未在响应中找到需要检查的敏感字段。",
|
||
"duration_seconds": 0.0011051670007873327,
|
||
"timestamp": "2025-07-11T18:57:44.896014",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "未在响应中找到需要检查的敏感字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-LLM-COMPLIANCE-001",
|
||
"test_case_name": "LLM合规性综合检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "合规性标准列表为空,跳过LLM合规性检查。",
|
||
"duration_seconds": 0.0013287079927977175,
|
||
"timestamp": "2025-07-11T18:57:44.897380",
|
||
"validation_points": [
|
||
{
|
||
"reason": "compliance_criteria.json is empty or contains an empty list."
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-001",
|
||
"test_case_name": "核心命名与结构规范检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。",
|
||
"duration_seconds": 0.0011127920006401837,
|
||
"timestamp": "2025-07-11T18:57:44.898534",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-PAGINATION-001",
|
||
"test_case_name": "分页参数检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount",
|
||
"duration_seconds": 0.0009296670032199472,
|
||
"timestamp": "2025-07-11T18:57:44.899497",
|
||
"validation_points": [
|
||
{
|
||
"path": "/api/dms/wb_ml/v1/lujing_test",
|
||
"method": "POST",
|
||
"missing_params": [
|
||
"pageNo",
|
||
"pageSize",
|
||
"isSearchCount"
|
||
],
|
||
"found_params": {
|
||
"pageNo": false,
|
||
"pageSize": false,
|
||
"isSearchCount": false
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-004",
|
||
"test_case_name": "资源集合复数命名检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "路径 '/api/dms/wb_ml/v1/lujing_test' 的最后一个路径分段 'lujing_test' 可能不是复数形式,建议对资源集合使用复数命名。",
|
||
"duration_seconds": 0.000998208997771144,
|
||
"timestamp": "2025-07-11T18:57:44.900535",
|
||
"validation_points": [
|
||
{
|
||
"path": "/api/dms/wb_ml/v1/lujing_test",
|
||
"segment": "lujing_test"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-002",
|
||
"test_case_name": "资源路径名词检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "路径 '/api/dms/wb_ml/v1/lujing_test' 符合资源名词命名规范。",
|
||
"duration_seconds": 0.0009581670019542798,
|
||
"timestamp": "2025-07-11T18:57:44.901533",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "路径 '/api/dms/wb_ml/v1/lujing_test' 符合资源名词命名规范。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-CORE-SCHEMA-001",
|
||
"test_case_name": "DMS核心存储服务API响应格式检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}",
|
||
"duration_seconds": 0.0009748750017024577,
|
||
"timestamp": "2025-07-11T18:57:44.902554",
|
||
"validation_points": [
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-001",
|
||
"test_case_name": "返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "针对 POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test (状态码 200) 的响应体 conforms to the JSON schema.",
|
||
"duration_seconds": 0.0020924580021528527,
|
||
"timestamp": "2025-07-11T18:57:44.904688",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "针对 POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test (状态码 200) 的响应体 conforms to the JSON schema."
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-003",
|
||
"test_case_name": "时间字段ISO 8601格式检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。",
|
||
"duration_seconds": 0.0009897080017253757,
|
||
"timestamp": "2025-07-11T18:57:44.905715",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-URL-VERSION-001",
|
||
"test_case_name": "DMS API URL版本号检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "API路径 '/api/dms/wb_ml/v1/lujing_test' 正确以'/api/'开头;API路径 '/api/dms/wb_ml/v1/lujing_test' 包含版本标识: 'v1'",
|
||
"duration_seconds": 0.0011015420022886246,
|
||
"timestamp": "2025-07-11T18:57:44.906875",
|
||
"validation_points": [
|
||
{
|
||
"full_path": "/api/dms/wb_ml/v1/lujing_test"
|
||
},
|
||
{
|
||
"pattern_matched": "/v\\d+/",
|
||
"version_string": "v1",
|
||
"full_path": "/api/dms/wb_ml/v1/lujing_test"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-002",
|
||
"test_case_name": "灵活的返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0009206669928971678,
|
||
"timestamp": "2025-07-11T18:57:44.907837",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-001",
|
||
"test_case_name": "HTTPS 协议强制性检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "API通过HTTP (http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test) 响应了成功的状态码 200,这违反了HTTPS强制策略。",
|
||
"duration_seconds": 0.000993541005300358,
|
||
"timestamp": "2025-07-11T18:57:44.908870",
|
||
"validation_points": [
|
||
{
|
||
"status_code": 200
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-QUERY",
|
||
"test_case_name": "查询参数类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。",
|
||
"duration_seconds": 0.001166707996162586,
|
||
"timestamp": "2025-07-11T18:57:44.910075",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-BODY",
|
||
"test_case_name": "请求体字段类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "当请求体字段 'version' 类型不匹配时, 业务错误码应为 -1,但实际为 0。",
|
||
"duration_seconds": 0.0012812500062864274,
|
||
"timestamp": "2025-07-11T18:57:44.911390",
|
||
"validation_points": [
|
||
{
|
||
"expected_code": -1,
|
||
"actual_code": 0,
|
||
"response_body": {
|
||
"code": 0,
|
||
"data": true,
|
||
"message": "创建成功"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4002",
|
||
"test_case_name": "数值参数越界检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "当 body 字段 'record_count' 值为 10001 (超出范围: min=0, max=10000) 时, 业务错误码应为 -1,但实际为 0。",
|
||
"duration_seconds": 0.0014582500007236376,
|
||
"timestamp": "2025-07-11T18:57:44.912889",
|
||
"validation_points": [
|
||
{
|
||
"expected_code": -1,
|
||
"actual_code": 0,
|
||
"response_body": {
|
||
"code": 0,
|
||
"data": true,
|
||
"message": "创建成功"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4006",
|
||
"test_case_name": "非法枚举值检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。",
|
||
"duration_seconds": 0.0014327079989016056,
|
||
"timestamp": "2025-07-11T18:57:44.914360",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-BODY",
|
||
"test_case_name": "缺失必填请求体字段检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "当移除必填请求体字段 'data' 时, API应返回状态码 200,但实际为 400。",
|
||
"duration_seconds": 0.001076708998880349,
|
||
"timestamp": "2025-07-11T18:57:44.915478",
|
||
"validation_points": [
|
||
{
|
||
"expected_status": 200,
|
||
"actual_status": 400
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-QUERY",
|
||
"test_case_name": "缺失必填查询参数检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。",
|
||
"duration_seconds": 0.0010988750000251457,
|
||
"timestamp": "2025-07-11T18:57:44.916618",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"endpoint_id": "POST /api/dms/wb_ml/v1/lujing_test/1.0.0",
|
||
"endpoint_name": "List lujing_test",
|
||
"overall_status": "通过",
|
||
"duration_seconds": 0.018525,
|
||
"start_time": "2025-07-11T18:57:44.916723",
|
||
"end_time": "2025-07-11T18:57:44.935248",
|
||
"executed_test_cases": [
|
||
{
|
||
"test_case_id": "TC-STATUS-001",
|
||
"test_case_name": "基本状态码 200 检查",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "响应状态码为 200,符合预期 200。",
|
||
"duration_seconds": 0.0009192500001518056,
|
||
"timestamp": "2025-07-11T18:57:44.917836",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "响应状态码为 200,符合预期 200。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-HEADER-001",
|
||
"test_case_name": "必需请求头Schema验证",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "缺少必需的请求头 X-Tenant-ID;缺少必需的请求头 X-Data-Domain;缺少必需的请求头 Authorization",
|
||
"duration_seconds": 0.001042749994667247,
|
||
"timestamp": "2025-07-11T18:57:44.918913",
|
||
"validation_points": [
|
||
{
|
||
"header": "X-Tenant-ID",
|
||
"possible_names": [
|
||
"X-Tenant-ID"
|
||
],
|
||
"endpoint": "POST /api/dms/wb_ml/v1/lujing_test/1.0.0"
|
||
},
|
||
{
|
||
"header": "X-Data-Domain",
|
||
"possible_names": [
|
||
"X-Data-Domain"
|
||
],
|
||
"endpoint": "POST /api/dms/wb_ml/v1/lujing_test/1.0.0"
|
||
},
|
||
{
|
||
"header": "Authorization",
|
||
"possible_names": [
|
||
"Authorization"
|
||
],
|
||
"endpoint": "POST /api/dms/wb_ml/v1/lujing_test/1.0.0"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-002",
|
||
"test_case_name": "敏感字段加密检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "未在响应中找到需要检查的敏感字段。",
|
||
"duration_seconds": 0.0008760420023463666,
|
||
"timestamp": "2025-07-11T18:57:44.919821",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "未在响应中找到需要检查的敏感字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-LLM-COMPLIANCE-001",
|
||
"test_case_name": "LLM合规性综合检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "合规性标准列表为空,跳过LLM合规性检查。",
|
||
"duration_seconds": 0.00094449998869095,
|
||
"timestamp": "2025-07-11T18:57:44.920796",
|
||
"validation_points": [
|
||
{
|
||
"reason": "compliance_criteria.json is empty or contains an empty list."
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-001",
|
||
"test_case_name": "核心命名与结构规范检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。;响应中包含一个主列表,但其键名 'data' 不是 'list'。",
|
||
"duration_seconds": 0.0009832920040935278,
|
||
"timestamp": "2025-07-11T18:57:44.921827",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。"
|
||
},
|
||
{
|
||
"keys": [
|
||
"code",
|
||
"data",
|
||
"message"
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-PAGINATION-001",
|
||
"test_case_name": "分页参数检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount",
|
||
"duration_seconds": 0.0008101249986793846,
|
||
"timestamp": "2025-07-11T18:57:44.922673",
|
||
"validation_points": [
|
||
{
|
||
"path": "/api/dms/wb_ml/v1/lujing_test/1.0.0",
|
||
"method": "POST",
|
||
"missing_params": [
|
||
"pageNo",
|
||
"pageSize",
|
||
"isSearchCount"
|
||
],
|
||
"found_params": {
|
||
"pageNo": false,
|
||
"pageSize": false,
|
||
"isSearchCount": false
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-004",
|
||
"test_case_name": "资源集合复数命名检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "路径 '/api/dms/wb_ml/v1/lujing_test/1.0.0' 的最后一个路径分段 '1.0.0' 可能不是复数形式,建议对资源集合使用复数命名。",
|
||
"duration_seconds": 0.0008099169936031103,
|
||
"timestamp": "2025-07-11T18:57:44.923523",
|
||
"validation_points": [
|
||
{
|
||
"path": "/api/dms/wb_ml/v1/lujing_test/1.0.0",
|
||
"segment": "1.0.0"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-002",
|
||
"test_case_name": "资源路径名词检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "路径 '/api/dms/wb_ml/v1/lujing_test/1.0.0' 符合资源名词命名规范。",
|
||
"duration_seconds": 0.0008066659938776866,
|
||
"timestamp": "2025-07-11T18:57:44.924369",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "路径 '/api/dms/wb_ml/v1/lujing_test/1.0.0' 符合资源名词命名规范。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-CORE-SCHEMA-001",
|
||
"test_case_name": "DMS核心存储服务API响应格式检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}",
|
||
"duration_seconds": 0.0007651250052731484,
|
||
"timestamp": "2025-07-11T18:57:44.925175",
|
||
"validation_points": [
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-001",
|
||
"test_case_name": "返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "针对 POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 (状态码 200) 的响应体 conforms to the JSON schema.",
|
||
"duration_seconds": 0.0009727500000735745,
|
||
"timestamp": "2025-07-11T18:57:44.926186",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "针对 POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 (状态码 200) 的响应体 conforms to the JSON schema."
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-003",
|
||
"test_case_name": "时间字段ISO 8601格式检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "时间字段 'data[].update_date' (format: date-time) 缺少建议的 `pattern` (^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}([+-]\\d{2}:\\d{2}|Z)$) 来强制执行ISO 8601格式。",
|
||
"duration_seconds": 0.0009119160094996914,
|
||
"timestamp": "2025-07-11T18:57:44.927137",
|
||
"validation_points": [
|
||
{
|
||
"field": "data[].update_date"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-URL-VERSION-001",
|
||
"test_case_name": "DMS API URL版本号检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "API路径 '/api/dms/wb_ml/v1/lujing_test/1.0.0' 正确以'/api/'开头;API路径 '/api/dms/wb_ml/v1/lujing_test/1.0.0' 包含版本标识: 'v1'",
|
||
"duration_seconds": 0.000884416003827937,
|
||
"timestamp": "2025-07-11T18:57:44.928063",
|
||
"validation_points": [
|
||
{
|
||
"full_path": "/api/dms/wb_ml/v1/lujing_test/1.0.0"
|
||
},
|
||
{
|
||
"pattern_matched": "/v\\d+/",
|
||
"version_string": "v1",
|
||
"full_path": "/api/dms/wb_ml/v1/lujing_test/1.0.0"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-002",
|
||
"test_case_name": "灵活的返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0008037920051719993,
|
||
"timestamp": "2025-07-11T18:57:44.928907",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-001",
|
||
"test_case_name": "HTTPS 协议强制性检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "API通过HTTP (http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0) 响应了成功的状态码 200,这违反了HTTPS强制策略。",
|
||
"duration_seconds": 0.000828709002234973,
|
||
"timestamp": "2025-07-11T18:57:44.929778",
|
||
"validation_points": [
|
||
{
|
||
"status_code": 200
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-QUERY",
|
||
"test_case_name": "查询参数类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。",
|
||
"duration_seconds": 0.0009267499990528449,
|
||
"timestamp": "2025-07-11T18:57:44.930738",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-BODY",
|
||
"test_case_name": "请求体字段类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:在请求体中未找到合适的字段来测试类型不匹配。",
|
||
"duration_seconds": 0.00095795800734777,
|
||
"timestamp": "2025-07-11T18:57:44.931725",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在请求体中未找到合适的字段来测试类型不匹配。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4002",
|
||
"test_case_name": "数值参数越界检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:未找到具有明确范围限制的数值字段。",
|
||
"duration_seconds": 0.0009083750046556816,
|
||
"timestamp": "2025-07-11T18:57:44.932666",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确范围限制的数值字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4006",
|
||
"test_case_name": "非法枚举值检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。",
|
||
"duration_seconds": 0.0008869170123944059,
|
||
"timestamp": "2025-07-11T18:57:44.933585",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-BODY",
|
||
"test_case_name": "缺失必填请求体字段检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "跳过测试:在API规范中未找到合适的必填请求体字段用于移除测试。",
|
||
"duration_seconds": 0.0008115410018945113,
|
||
"timestamp": "2025-07-11T18:57:44.934433",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在API规范中未找到合适的必填请求体字段用于移除测试。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-QUERY",
|
||
"test_case_name": "缺失必填查询参数检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。",
|
||
"duration_seconds": 0.0007599999953527004,
|
||
"timestamp": "2025-07-11T18:57:44.935224",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"endpoint_id": "GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}",
|
||
"endpoint_name": "Read lujing_test",
|
||
"overall_status": "失败",
|
||
"duration_seconds": 0.001521,
|
||
"start_time": "2025-07-11T18:57:44.935306",
|
||
"end_time": "2025-07-11T18:57:44.936827",
|
||
"executed_test_cases": [
|
||
{
|
||
"test_case_id": "TC-STATUS-001",
|
||
"test_case_name": "基本状态码 200 检查",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "失败",
|
||
"message": "期望状态码 200,但收到 404。",
|
||
"duration_seconds": 0.0008493750065099448,
|
||
"timestamp": "2025-07-11T18:57:44.936315",
|
||
"validation_points": [
|
||
{
|
||
"expected_status": 200,
|
||
"actual_status": 404,
|
||
"request_url": "http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0/param_id",
|
||
"response_body_sample": "{\"code\": 404, \"message\": \"资源 'lujing_test' with ID 'param_id' 未找到.\"}"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-HEADER-001",
|
||
"test_case_name": "必需请求头Schema验证",
|
||
"test_case_severity": "HIGH",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 9.333991329185665e-06,
|
||
"timestamp": "2025-07-11T18:57:44.936366",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-002",
|
||
"test_case_name": "敏感字段加密检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.957991329021752e-06,
|
||
"timestamp": "2025-07-11T18:57:44.936392",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-LLM-COMPLIANCE-001",
|
||
"test_case_name": "LLM合规性综合检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 9.16598946787417e-06,
|
||
"timestamp": "2025-07-11T18:57:44.936419",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-001",
|
||
"test_case_name": "核心命名与结构规范检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 8.25000461190939e-06,
|
||
"timestamp": "2025-07-11T18:57:44.936448",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-PAGINATION-001",
|
||
"test_case_name": "分页参数检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 8.12498910818249e-06,
|
||
"timestamp": "2025-07-11T18:57:44.936475",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-004",
|
||
"test_case_name": "资源集合复数命名检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.916998583823442e-06,
|
||
"timestamp": "2025-07-11T18:57:44.936501",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-002",
|
||
"test_case_name": "资源路径名词检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 8.458999218419194e-06,
|
||
"timestamp": "2025-07-11T18:57:44.936530",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-CORE-SCHEMA-001",
|
||
"test_case_name": "DMS核心存储服务API响应格式检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.1250105975195765e-06,
|
||
"timestamp": "2025-07-11T18:57:44.936553",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-001",
|
||
"test_case_name": "返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.0829992182552814e-06,
|
||
"timestamp": "2025-07-11T18:57:44.936576",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-003",
|
||
"test_case_name": "时间字段ISO 8601格式检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.1250105975195765e-06,
|
||
"timestamp": "2025-07-11T18:57:44.936599",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-URL-VERSION-001",
|
||
"test_case_name": "DMS API URL版本号检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 6.95799826644361e-06,
|
||
"timestamp": "2025-07-11T18:57:44.936622",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-002",
|
||
"test_case_name": "灵活的返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.041002390906215e-06,
|
||
"timestamp": "2025-07-11T18:57:44.936644",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-001",
|
||
"test_case_name": "HTTPS 协议强制性检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 6.95799826644361e-06,
|
||
"timestamp": "2025-07-11T18:57:44.936667",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-QUERY",
|
||
"test_case_name": "查询参数类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.084003300406039e-06,
|
||
"timestamp": "2025-07-11T18:57:44.936691",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-BODY",
|
||
"test_case_name": "请求体字段类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 6.95799826644361e-06,
|
||
"timestamp": "2025-07-11T18:57:44.936713",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4002",
|
||
"test_case_name": "数值参数越界检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.084003300406039e-06,
|
||
"timestamp": "2025-07-11T18:57:44.936736",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4006",
|
||
"test_case_name": "非法枚举值检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.50001345295459e-06,
|
||
"timestamp": "2025-07-11T18:57:44.936760",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-BODY",
|
||
"test_case_name": "缺失必填请求体字段检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.374997949227691e-06,
|
||
"timestamp": "2025-07-11T18:57:44.936784",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-QUERY",
|
||
"test_case_name": "缺失必填查询参数检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.20900425221771e-06,
|
||
"timestamp": "2025-07-11T18:57:44.936807",
|
||
"validation_points": []
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"endpoint_id": "PUT /api/dms/wb_ml/v1/lujing_test",
|
||
"endpoint_name": "Update lujing_test",
|
||
"overall_status": "通过",
|
||
"duration_seconds": 0.020745,
|
||
"start_time": "2025-07-11T18:57:44.936892",
|
||
"end_time": "2025-07-11T18:57:44.957637",
|
||
"executed_test_cases": [
|
||
{
|
||
"test_case_id": "TC-STATUS-001",
|
||
"test_case_name": "基本状态码 200 检查",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "响应状态码为 200,符合预期 200。",
|
||
"duration_seconds": 0.001000333999400027,
|
||
"timestamp": "2025-07-11T18:57:44.938050",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "响应状态码为 200,符合预期 200。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-HEADER-001",
|
||
"test_case_name": "必需请求头Schema验证",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "缺少必需的请求头 X-Tenant-ID;缺少必需的请求头 X-Data-Domain;缺少必需的请求头 Authorization",
|
||
"duration_seconds": 0.0009679579961812124,
|
||
"timestamp": "2025-07-11T18:57:44.939049",
|
||
"validation_points": [
|
||
{
|
||
"header": "X-Tenant-ID",
|
||
"possible_names": [
|
||
"X-Tenant-ID"
|
||
],
|
||
"endpoint": "PUT /api/dms/wb_ml/v1/lujing_test"
|
||
},
|
||
{
|
||
"header": "X-Data-Domain",
|
||
"possible_names": [
|
||
"X-Data-Domain"
|
||
],
|
||
"endpoint": "PUT /api/dms/wb_ml/v1/lujing_test"
|
||
},
|
||
{
|
||
"header": "Authorization",
|
||
"possible_names": [
|
||
"Authorization"
|
||
],
|
||
"endpoint": "PUT /api/dms/wb_ml/v1/lujing_test"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-002",
|
||
"test_case_name": "敏感字段加密检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "未在响应中找到需要检查的敏感字段。",
|
||
"duration_seconds": 0.0009808750037336722,
|
||
"timestamp": "2025-07-11T18:57:44.940059",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "未在响应中找到需要检查的敏感字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-LLM-COMPLIANCE-001",
|
||
"test_case_name": "LLM合规性综合检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "合规性标准列表为空,跳过LLM合规性检查。",
|
||
"duration_seconds": 0.000977624993538484,
|
||
"timestamp": "2025-07-11T18:57:44.941066",
|
||
"validation_points": [
|
||
{
|
||
"reason": "compliance_criteria.json is empty or contains an empty list."
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-001",
|
||
"test_case_name": "核心命名与结构规范检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。",
|
||
"duration_seconds": 0.000912499992409721,
|
||
"timestamp": "2025-07-11T18:57:44.942016",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-PAGINATION-001",
|
||
"test_case_name": "分页参数检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount",
|
||
"duration_seconds": 0.0009370420011691749,
|
||
"timestamp": "2025-07-11T18:57:44.942982",
|
||
"validation_points": [
|
||
{
|
||
"path": "/api/dms/wb_ml/v1/lujing_test",
|
||
"method": "PUT",
|
||
"missing_params": [
|
||
"pageNo",
|
||
"pageSize",
|
||
"isSearchCount"
|
||
],
|
||
"found_params": {
|
||
"pageNo": false,
|
||
"pageSize": false,
|
||
"isSearchCount": false
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-004",
|
||
"test_case_name": "资源集合复数命名检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过检查:PUT 方法,不适用于资源集合复数检查。",
|
||
"duration_seconds": 0.0009986670047510415,
|
||
"timestamp": "2025-07-11T18:57:44.944026",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过检查:PUT 方法,不适用于资源集合复数检查。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-002",
|
||
"test_case_name": "资源路径名词检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "路径 '/api/dms/wb_ml/v1/lujing_test' 符合资源名词命名规范。",
|
||
"duration_seconds": 0.0010697079997044057,
|
||
"timestamp": "2025-07-11T18:57:44.945135",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "路径 '/api/dms/wb_ml/v1/lujing_test' 符合资源名词命名规范。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-CORE-SCHEMA-001",
|
||
"test_case_name": "DMS核心存储服务API响应格式检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}",
|
||
"duration_seconds": 0.0009021669975481927,
|
||
"timestamp": "2025-07-11T18:57:44.946076",
|
||
"validation_points": [
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-001",
|
||
"test_case_name": "返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "针对 PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test (状态码 200) 的响应体 conforms to the JSON schema.",
|
||
"duration_seconds": 0.0009648749983171001,
|
||
"timestamp": "2025-07-11T18:57:44.947084",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "针对 PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test (状态码 200) 的响应体 conforms to the JSON schema."
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-003",
|
||
"test_case_name": "时间字段ISO 8601格式检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。",
|
||
"duration_seconds": 0.0010605830029817298,
|
||
"timestamp": "2025-07-11T18:57:44.948175",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-URL-VERSION-001",
|
||
"test_case_name": "DMS API URL版本号检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "API路径 '/api/dms/wb_ml/v1/lujing_test' 正确以'/api/'开头;API路径 '/api/dms/wb_ml/v1/lujing_test' 包含版本标识: 'v1'",
|
||
"duration_seconds": 0.0010904579976340756,
|
||
"timestamp": "2025-07-11T18:57:44.949313",
|
||
"validation_points": [
|
||
{
|
||
"full_path": "/api/dms/wb_ml/v1/lujing_test"
|
||
},
|
||
{
|
||
"pattern_matched": "/v\\d+/",
|
||
"version_string": "v1",
|
||
"full_path": "/api/dms/wb_ml/v1/lujing_test"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-002",
|
||
"test_case_name": "灵活的返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0010073750017909333,
|
||
"timestamp": "2025-07-11T18:57:44.950364",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-001",
|
||
"test_case_name": "HTTPS 协议强制性检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "API通过HTTP (http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test) 响应了成功的状态码 200,这违反了HTTPS强制策略。",
|
||
"duration_seconds": 0.0009176250023301691,
|
||
"timestamp": "2025-07-11T18:57:44.951321",
|
||
"validation_points": [
|
||
{
|
||
"status_code": 200
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-QUERY",
|
||
"test_case_name": "查询参数类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。",
|
||
"duration_seconds": 0.0010636670049279928,
|
||
"timestamp": "2025-07-11T18:57:44.952417",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-BODY",
|
||
"test_case_name": "请求体字段类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "当请求体字段 'version' 类型不匹配时, 业务错误码应为 -1,但实际为 0。",
|
||
"duration_seconds": 0.0010901250061579049,
|
||
"timestamp": "2025-07-11T18:57:44.953540",
|
||
"validation_points": [
|
||
{
|
||
"expected_code": -1,
|
||
"actual_code": 0,
|
||
"response_body": {
|
||
"code": 0,
|
||
"data": true,
|
||
"message": "创建成功"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4002",
|
||
"test_case_name": "数值参数越界检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "当 body 字段 'record_count' 值为 10001 (超出范围: min=0, max=10000) 时, 业务错误码应为 -1,但实际为 0。",
|
||
"duration_seconds": 0.0010466249950695783,
|
||
"timestamp": "2025-07-11T18:57:44.954619",
|
||
"validation_points": [
|
||
{
|
||
"expected_code": -1,
|
||
"actual_code": 0,
|
||
"response_body": {
|
||
"code": 0,
|
||
"data": true,
|
||
"message": "创建成功"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4006",
|
||
"test_case_name": "非法枚举值检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。",
|
||
"duration_seconds": 0.0009400419949088246,
|
||
"timestamp": "2025-07-11T18:57:44.955592",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-BODY",
|
||
"test_case_name": "缺失必填请求体字段检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "当移除必填请求体字段 'data' 时, API应返回状态码 200,但实际为 400。",
|
||
"duration_seconds": 0.0009332500048913062,
|
||
"timestamp": "2025-07-11T18:57:44.956563",
|
||
"validation_points": [
|
||
{
|
||
"expected_status": 200,
|
||
"actual_status": 400
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-QUERY",
|
||
"test_case_name": "缺失必填查询参数检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。",
|
||
"duration_seconds": 0.0010077920014737174,
|
||
"timestamp": "2025-07-11T18:57:44.957613",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"endpoint_id": "DELETE /api/dms/wb_ml/v1/lujing_test",
|
||
"endpoint_name": "Delete lujing_test",
|
||
"overall_status": "通过",
|
||
"duration_seconds": 0.019397,
|
||
"start_time": "2025-07-11T18:57:44.957692",
|
||
"end_time": "2025-07-11T18:57:44.977089",
|
||
"executed_test_cases": [
|
||
{
|
||
"test_case_id": "TC-STATUS-001",
|
||
"test_case_name": "基本状态码 200 检查",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "响应状态码为 200,符合预期 200。",
|
||
"duration_seconds": 0.0008742919890210032,
|
||
"timestamp": "2025-07-11T18:57:44.958732",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "响应状态码为 200,符合预期 200。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-HEADER-001",
|
||
"test_case_name": "必需请求头Schema验证",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "缺少必需的请求头 X-Tenant-ID;缺少必需的请求头 X-Data-Domain;缺少必需的请求头 Authorization",
|
||
"duration_seconds": 0.000913208001293242,
|
||
"timestamp": "2025-07-11T18:57:44.959677",
|
||
"validation_points": [
|
||
{
|
||
"header": "X-Tenant-ID",
|
||
"possible_names": [
|
||
"X-Tenant-ID"
|
||
],
|
||
"endpoint": "DELETE /api/dms/wb_ml/v1/lujing_test"
|
||
},
|
||
{
|
||
"header": "X-Data-Domain",
|
||
"possible_names": [
|
||
"X-Data-Domain"
|
||
],
|
||
"endpoint": "DELETE /api/dms/wb_ml/v1/lujing_test"
|
||
},
|
||
{
|
||
"header": "Authorization",
|
||
"possible_names": [
|
||
"Authorization"
|
||
],
|
||
"endpoint": "DELETE /api/dms/wb_ml/v1/lujing_test"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-002",
|
||
"test_case_name": "敏感字段加密检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "未在响应中找到需要检查的敏感字段。",
|
||
"duration_seconds": 0.0008582910086261109,
|
||
"timestamp": "2025-07-11T18:57:44.960563",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "未在响应中找到需要检查的敏感字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-LLM-COMPLIANCE-001",
|
||
"test_case_name": "LLM合规性综合检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "合规性标准列表为空,跳过LLM合规性检查。",
|
||
"duration_seconds": 0.0009342910052509978,
|
||
"timestamp": "2025-07-11T18:57:44.961531",
|
||
"validation_points": [
|
||
{
|
||
"reason": "compliance_criteria.json is empty or contains an empty list."
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-001",
|
||
"test_case_name": "核心命名与结构规范检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。",
|
||
"duration_seconds": 0.0008924590074457228,
|
||
"timestamp": "2025-07-11T18:57:44.962461",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-PAGINATION-001",
|
||
"test_case_name": "分页参数检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount",
|
||
"duration_seconds": 0.000843875008285977,
|
||
"timestamp": "2025-07-11T18:57:44.963333",
|
||
"validation_points": [
|
||
{
|
||
"path": "/api/dms/wb_ml/v1/lujing_test",
|
||
"method": "DELETE",
|
||
"missing_params": [
|
||
"pageNo",
|
||
"pageSize",
|
||
"isSearchCount"
|
||
],
|
||
"found_params": {
|
||
"pageNo": false,
|
||
"pageSize": false,
|
||
"isSearchCount": false
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-004",
|
||
"test_case_name": "资源集合复数命名检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过检查:DELETE 方法,不适用于资源集合复数检查。",
|
||
"duration_seconds": 0.000860916989040561,
|
||
"timestamp": "2025-07-11T18:57:44.964232",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过检查:DELETE 方法,不适用于资源集合复数检查。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-002",
|
||
"test_case_name": "资源路径名词检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "路径 '/api/dms/wb_ml/v1/lujing_test' 符合资源名词命名规范。",
|
||
"duration_seconds": 0.0010030830017058179,
|
||
"timestamp": "2025-07-11T18:57:44.965278",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "路径 '/api/dms/wb_ml/v1/lujing_test' 符合资源名词命名规范。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-CORE-SCHEMA-001",
|
||
"test_case_name": "DMS核心存储服务API响应格式检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}",
|
||
"duration_seconds": 0.0009108340018428862,
|
||
"timestamp": "2025-07-11T18:57:44.966235",
|
||
"validation_points": [
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-001",
|
||
"test_case_name": "返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "针对 DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test (状态码 200) 的响应体 conforms to the JSON schema.",
|
||
"duration_seconds": 0.0010819159942911938,
|
||
"timestamp": "2025-07-11T18:57:44.967362",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "针对 DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test (状态码 200) 的响应体 conforms to the JSON schema."
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-003",
|
||
"test_case_name": "时间字段ISO 8601格式检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。",
|
||
"duration_seconds": 0.0010299159912392497,
|
||
"timestamp": "2025-07-11T18:57:44.968428",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-URL-VERSION-001",
|
||
"test_case_name": "DMS API URL版本号检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "API路径 '/api/dms/wb_ml/v1/lujing_test' 正确以'/api/'开头;API路径 '/api/dms/wb_ml/v1/lujing_test' 包含版本标识: 'v1'",
|
||
"duration_seconds": 0.0008674999990034848,
|
||
"timestamp": "2025-07-11T18:57:44.969341",
|
||
"validation_points": [
|
||
{
|
||
"full_path": "/api/dms/wb_ml/v1/lujing_test"
|
||
},
|
||
{
|
||
"pattern_matched": "/v\\d+/",
|
||
"version_string": "v1",
|
||
"full_path": "/api/dms/wb_ml/v1/lujing_test"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-002",
|
||
"test_case_name": "灵活的返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0009243749955203384,
|
||
"timestamp": "2025-07-11T18:57:44.970302",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-001",
|
||
"test_case_name": "HTTPS 协议强制性检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "API通过HTTP (http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test) 响应了成功的状态码 200,这违反了HTTPS强制策略。",
|
||
"duration_seconds": 0.0008695839933352545,
|
||
"timestamp": "2025-07-11T18:57:44.971208",
|
||
"validation_points": [
|
||
{
|
||
"status_code": 200
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-QUERY",
|
||
"test_case_name": "查询参数类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。",
|
||
"duration_seconds": 0.000946375002968125,
|
||
"timestamp": "2025-07-11T18:57:44.972186",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-BODY",
|
||
"test_case_name": "请求体字段类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "当请求体字段 'version' 类型不匹配时, 业务错误码应为 -1,但实际为 404。",
|
||
"duration_seconds": 0.0009848750050878152,
|
||
"timestamp": "2025-07-11T18:57:44.973208",
|
||
"validation_points": [
|
||
{
|
||
"expected_code": -1,
|
||
"actual_code": 404,
|
||
"response_body": {
|
||
"code": 404,
|
||
"data": false,
|
||
"message": "未找到要删除的资源"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4002",
|
||
"test_case_name": "数值参数越界检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:未找到具有明确范围限制的数值字段。",
|
||
"duration_seconds": 0.0009810829942580312,
|
||
"timestamp": "2025-07-11T18:57:44.974222",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确范围限制的数值字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4006",
|
||
"test_case_name": "非法枚举值检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。",
|
||
"duration_seconds": 0.0009192080033244565,
|
||
"timestamp": "2025-07-11T18:57:44.975181",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-BODY",
|
||
"test_case_name": "缺失必填请求体字段检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "当移除必填请求体字段 'data' 时, API应返回状态码 200,但实际为 400。",
|
||
"duration_seconds": 0.0009034169925143942,
|
||
"timestamp": "2025-07-11T18:57:44.976130",
|
||
"validation_points": [
|
||
{
|
||
"expected_status": 200,
|
||
"actual_status": 400
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-QUERY",
|
||
"test_case_name": "缺失必填查询参数检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。",
|
||
"duration_seconds": 0.0008984579908428714,
|
||
"timestamp": "2025-07-11T18:57:44.977066",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"endpoint_id": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report",
|
||
"endpoint_name": "Create wb_dr_pro_daily_report",
|
||
"overall_status": "通过",
|
||
"duration_seconds": 0.020481,
|
||
"start_time": "2025-07-11T18:57:44.977146",
|
||
"end_time": "2025-07-11T18:57:44.997627",
|
||
"executed_test_cases": [
|
||
{
|
||
"test_case_id": "TC-STATUS-001",
|
||
"test_case_name": "基本状态码 200 检查",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "响应状态码为 200,符合预期 200。",
|
||
"duration_seconds": 0.001053999993018806,
|
||
"timestamp": "2025-07-11T18:57:44.978369",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "响应状态码为 200,符合预期 200。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-HEADER-001",
|
||
"test_case_name": "必需请求头Schema验证",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "缺少必需的请求头 X-Tenant-ID;缺少必需的请求头 X-Data-Domain;缺少必需的请求头 Authorization",
|
||
"duration_seconds": 0.0010827079968294129,
|
||
"timestamp": "2025-07-11T18:57:44.979493",
|
||
"validation_points": [
|
||
{
|
||
"header": "X-Tenant-ID",
|
||
"possible_names": [
|
||
"X-Tenant-ID"
|
||
],
|
||
"endpoint": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
},
|
||
{
|
||
"header": "X-Data-Domain",
|
||
"possible_names": [
|
||
"X-Data-Domain"
|
||
],
|
||
"endpoint": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
},
|
||
{
|
||
"header": "Authorization",
|
||
"possible_names": [
|
||
"Authorization"
|
||
],
|
||
"endpoint": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-002",
|
||
"test_case_name": "敏感字段加密检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "未在响应中找到需要检查的敏感字段。",
|
||
"duration_seconds": 0.000985834005405195,
|
||
"timestamp": "2025-07-11T18:57:44.980508",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "未在响应中找到需要检查的敏感字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-LLM-COMPLIANCE-001",
|
||
"test_case_name": "LLM合规性综合检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "合规性标准列表为空,跳过LLM合规性检查。",
|
||
"duration_seconds": 0.0010168750013690442,
|
||
"timestamp": "2025-07-11T18:57:44.981553",
|
||
"validation_points": [
|
||
{
|
||
"reason": "compliance_criteria.json is empty or contains an empty list."
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-001",
|
||
"test_case_name": "核心命名与结构规范检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。",
|
||
"duration_seconds": 0.0009342919947812334,
|
||
"timestamp": "2025-07-11T18:57:44.982525",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-PAGINATION-001",
|
||
"test_case_name": "分页参数检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount",
|
||
"duration_seconds": 0.0009629999985918403,
|
||
"timestamp": "2025-07-11T18:57:44.983517",
|
||
"validation_points": [
|
||
{
|
||
"path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report",
|
||
"method": "POST",
|
||
"missing_params": [
|
||
"pageNo",
|
||
"pageSize",
|
||
"isSearchCount"
|
||
],
|
||
"found_params": {
|
||
"pageNo": false,
|
||
"pageSize": false,
|
||
"isSearchCount": false
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-004",
|
||
"test_case_name": "资源集合复数命名检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 的最后一个路径分段 'wb_dr_pro_daily_report' 可能不是复数形式,建议对资源集合使用复数命名。",
|
||
"duration_seconds": 0.0009224999957950786,
|
||
"timestamp": "2025-07-11T18:57:44.984478",
|
||
"validation_points": [
|
||
{
|
||
"path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report",
|
||
"segment": "wb_dr_pro_daily_report"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-002",
|
||
"test_case_name": "资源路径名词检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 符合资源名词命名规范。",
|
||
"duration_seconds": 0.0010158329969272017,
|
||
"timestamp": "2025-07-11T18:57:44.985540",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 符合资源名词命名规范。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-CORE-SCHEMA-001",
|
||
"test_case_name": "DMS核心存储服务API响应格式检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}",
|
||
"duration_seconds": 0.0009250000002793968,
|
||
"timestamp": "2025-07-11T18:57:44.986504",
|
||
"validation_points": [
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-001",
|
||
"test_case_name": "返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "针对 POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report (状态码 200) 的响应体 conforms to the JSON schema.",
|
||
"duration_seconds": 0.0009760419925441965,
|
||
"timestamp": "2025-07-11T18:57:44.987518",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "针对 POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report (状态码 200) 的响应体 conforms to the JSON schema."
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-003",
|
||
"test_case_name": "时间字段ISO 8601格式检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。",
|
||
"duration_seconds": 0.0008733330032555386,
|
||
"timestamp": "2025-07-11T18:57:44.988423",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-URL-VERSION-001",
|
||
"test_case_name": "DMS API URL版本号检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 正确以'/api/'开头;API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 包含版本标识: 'v1'",
|
||
"duration_seconds": 0.0008797080081421882,
|
||
"timestamp": "2025-07-11T18:57:44.989341",
|
||
"validation_points": [
|
||
{
|
||
"full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
},
|
||
{
|
||
"pattern_matched": "/v\\d+/",
|
||
"version_string": "v1",
|
||
"full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-002",
|
||
"test_case_name": "灵活的返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0009472499950788915,
|
||
"timestamp": "2025-07-11T18:57:44.990332",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-001",
|
||
"test_case_name": "HTTPS 协议强制性检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "API通过HTTP (http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report) 响应了成功的状态码 200,这违反了HTTPS强制策略。",
|
||
"duration_seconds": 0.0010222080018138513,
|
||
"timestamp": "2025-07-11T18:57:44.991393",
|
||
"validation_points": [
|
||
{
|
||
"status_code": 200
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-QUERY",
|
||
"test_case_name": "查询参数类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。",
|
||
"duration_seconds": 0.0010270000057062134,
|
||
"timestamp": "2025-07-11T18:57:44.992453",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-BODY",
|
||
"test_case_name": "请求体字段类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "当请求体字段 'version' 类型不匹配时, 业务错误码应为 -1,但实际为 0。",
|
||
"duration_seconds": 0.0010416669974802062,
|
||
"timestamp": "2025-07-11T18:57:44.993524",
|
||
"validation_points": [
|
||
{
|
||
"expected_code": -1,
|
||
"actual_code": 0,
|
||
"response_body": {
|
||
"code": 0,
|
||
"data": true,
|
||
"message": "创建成功"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4002",
|
||
"test_case_name": "数值参数越界检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "当 body 字段 'record_count' 值为 10001 (超出范围: min=0, max=10000) 时, 业务错误码应为 -1,但实际为 0。",
|
||
"duration_seconds": 0.0010707499895943329,
|
||
"timestamp": "2025-07-11T18:57:44.994632",
|
||
"validation_points": [
|
||
{
|
||
"expected_code": -1,
|
||
"actual_code": 0,
|
||
"response_body": {
|
||
"code": 0,
|
||
"data": true,
|
||
"message": "创建成功"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4006",
|
||
"test_case_name": "非法枚举值检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。",
|
||
"duration_seconds": 0.0009773749916348606,
|
||
"timestamp": "2025-07-11T18:57:44.995641",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-BODY",
|
||
"test_case_name": "缺失必填请求体字段检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "当移除必填请求体字段 'data' 时, API应返回状态码 200,但实际为 400。",
|
||
"duration_seconds": 0.0009569579997332767,
|
||
"timestamp": "2025-07-11T18:57:44.996642",
|
||
"validation_points": [
|
||
{
|
||
"expected_status": 200,
|
||
"actual_status": 400
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-QUERY",
|
||
"test_case_name": "缺失必填查询参数检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。",
|
||
"duration_seconds": 0.000916457996936515,
|
||
"timestamp": "2025-07-11T18:57:44.997604",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"endpoint_id": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0",
|
||
"endpoint_name": "List wb_dr_pro_daily_report",
|
||
"overall_status": "通过",
|
||
"duration_seconds": 0.017931,
|
||
"start_time": "2025-07-11T18:57:44.997689",
|
||
"end_time": "2025-07-11T18:57:45.015620",
|
||
"executed_test_cases": [
|
||
{
|
||
"test_case_id": "TC-STATUS-001",
|
||
"test_case_name": "基本状态码 200 检查",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "响应状态码为 200,符合预期 200。",
|
||
"duration_seconds": 0.0007948749989736825,
|
||
"timestamp": "2025-07-11T18:57:44.998641",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "响应状态码为 200,符合预期 200。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-HEADER-001",
|
||
"test_case_name": "必需请求头Schema验证",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "缺少必需的请求头 X-Tenant-ID;缺少必需的请求头 X-Data-Domain;缺少必需的请求头 Authorization",
|
||
"duration_seconds": 0.0008827499987091869,
|
||
"timestamp": "2025-07-11T18:57:44.999556",
|
||
"validation_points": [
|
||
{
|
||
"header": "X-Tenant-ID",
|
||
"possible_names": [
|
||
"X-Tenant-ID"
|
||
],
|
||
"endpoint": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0"
|
||
},
|
||
{
|
||
"header": "X-Data-Domain",
|
||
"possible_names": [
|
||
"X-Data-Domain"
|
||
],
|
||
"endpoint": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0"
|
||
},
|
||
{
|
||
"header": "Authorization",
|
||
"possible_names": [
|
||
"Authorization"
|
||
],
|
||
"endpoint": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-002",
|
||
"test_case_name": "敏感字段加密检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "未在响应中找到需要检查的敏感字段。",
|
||
"duration_seconds": 0.0010054159938590601,
|
||
"timestamp": "2025-07-11T18:57:45.000596",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "未在响应中找到需要检查的敏感字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-LLM-COMPLIANCE-001",
|
||
"test_case_name": "LLM合规性综合检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "合规性标准列表为空,跳过LLM合规性检查。",
|
||
"duration_seconds": 0.0008809999999357387,
|
||
"timestamp": "2025-07-11T18:57:45.001506",
|
||
"validation_points": [
|
||
{
|
||
"reason": "compliance_criteria.json is empty or contains an empty list."
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-001",
|
||
"test_case_name": "核心命名与结构规范检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。;响应中包含一个主列表,但其键名 'data' 不是 'list'。",
|
||
"duration_seconds": 0.0008612910023657605,
|
||
"timestamp": "2025-07-11T18:57:45.002403",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。"
|
||
},
|
||
{
|
||
"keys": [
|
||
"code",
|
||
"data",
|
||
"message"
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-PAGINATION-001",
|
||
"test_case_name": "分页参数检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount",
|
||
"duration_seconds": 0.0008901249966584146,
|
||
"timestamp": "2025-07-11T18:57:45.003322",
|
||
"validation_points": [
|
||
{
|
||
"path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0",
|
||
"method": "POST",
|
||
"missing_params": [
|
||
"pageNo",
|
||
"pageSize",
|
||
"isSearchCount"
|
||
],
|
||
"found_params": {
|
||
"pageNo": false,
|
||
"pageSize": false,
|
||
"isSearchCount": false
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-004",
|
||
"test_case_name": "资源集合复数命名检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 的最后一个路径分段 '1.0.0' 可能不是复数形式,建议对资源集合使用复数命名。",
|
||
"duration_seconds": 0.0008342079963767901,
|
||
"timestamp": "2025-07-11T18:57:45.004197",
|
||
"validation_points": [
|
||
{
|
||
"path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0",
|
||
"segment": "1.0.0"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-002",
|
||
"test_case_name": "资源路径名词检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 符合资源名词命名规范。",
|
||
"duration_seconds": 0.0008134579984471202,
|
||
"timestamp": "2025-07-11T18:57:45.005049",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 符合资源名词命名规范。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-CORE-SCHEMA-001",
|
||
"test_case_name": "DMS核心存储服务API响应格式检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}",
|
||
"duration_seconds": 0.0007592910114908591,
|
||
"timestamp": "2025-07-11T18:57:45.005849",
|
||
"validation_points": [
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-001",
|
||
"test_case_name": "返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "针对 POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 (状态码 200) 的响应体 conforms to the JSON schema.",
|
||
"duration_seconds": 0.0009497919963905588,
|
||
"timestamp": "2025-07-11T18:57:45.006837",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "针对 POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 (状态码 200) 的响应体 conforms to the JSON schema."
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-003",
|
||
"test_case_name": "时间字段ISO 8601格式检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "时间字段 'data[].update_date' (format: date-time) 缺少建议的 `pattern` (^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}([+-]\\d{2}:\\d{2}|Z)$) 来强制执行ISO 8601格式。",
|
||
"duration_seconds": 0.0007714160019531846,
|
||
"timestamp": "2025-07-11T18:57:45.007651",
|
||
"validation_points": [
|
||
{
|
||
"field": "data[].update_date"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-URL-VERSION-001",
|
||
"test_case_name": "DMS API URL版本号检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 正确以'/api/'开头;API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 包含版本标识: 'v1'",
|
||
"duration_seconds": 0.0008008339937077835,
|
||
"timestamp": "2025-07-11T18:57:45.008488",
|
||
"validation_points": [
|
||
{
|
||
"full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0"
|
||
},
|
||
{
|
||
"pattern_matched": "/v\\d+/",
|
||
"version_string": "v1",
|
||
"full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-002",
|
||
"test_case_name": "灵活的返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0008351249998668209,
|
||
"timestamp": "2025-07-11T18:57:45.009359",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-001",
|
||
"test_case_name": "HTTPS 协议强制性检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "API通过HTTP (http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0) 响应了成功的状态码 200,这违反了HTTPS强制策略。",
|
||
"duration_seconds": 0.0008065419970080256,
|
||
"timestamp": "2025-07-11T18:57:45.010205",
|
||
"validation_points": [
|
||
{
|
||
"status_code": 200
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-QUERY",
|
||
"test_case_name": "查询参数类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。",
|
||
"duration_seconds": 0.0010220840049441904,
|
||
"timestamp": "2025-07-11T18:57:45.011260",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-BODY",
|
||
"test_case_name": "请求体字段类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:在请求体中未找到合适的字段来测试类型不匹配。",
|
||
"duration_seconds": 0.0008989170019049197,
|
||
"timestamp": "2025-07-11T18:57:45.012191",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在请求体中未找到合适的字段来测试类型不匹配。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4002",
|
||
"test_case_name": "数值参数越界检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:未找到具有明确范围限制的数值字段。",
|
||
"duration_seconds": 0.0008531249914085492,
|
||
"timestamp": "2025-07-11T18:57:45.013083",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确范围限制的数值字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4006",
|
||
"test_case_name": "非法枚举值检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。",
|
||
"duration_seconds": 0.0008066250011324883,
|
||
"timestamp": "2025-07-11T18:57:45.013921",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-BODY",
|
||
"test_case_name": "缺失必填请求体字段检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "跳过测试:在API规范中未找到合适的必填请求体字段用于移除测试。",
|
||
"duration_seconds": 0.000810041994554922,
|
||
"timestamp": "2025-07-11T18:57:45.014768",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在API规范中未找到合适的必填请求体字段用于移除测试。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-QUERY",
|
||
"test_case_name": "缺失必填查询参数检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。",
|
||
"duration_seconds": 0.0007917909970274195,
|
||
"timestamp": "2025-07-11T18:57:45.015596",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"endpoint_id": "GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}",
|
||
"endpoint_name": "Read wb_dr_pro_daily_report",
|
||
"overall_status": "失败",
|
||
"duration_seconds": 0.00148,
|
||
"start_time": "2025-07-11T18:57:45.015678",
|
||
"end_time": "2025-07-11T18:57:45.017158",
|
||
"executed_test_cases": [
|
||
{
|
||
"test_case_id": "TC-STATUS-001",
|
||
"test_case_name": "基本状态码 200 检查",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "失败",
|
||
"message": "期望状态码 200,但收到 404。",
|
||
"duration_seconds": 0.0008529159968020394,
|
||
"timestamp": "2025-07-11T18:57:45.016690",
|
||
"validation_points": [
|
||
{
|
||
"expected_status": 200,
|
||
"actual_status": 404,
|
||
"request_url": "http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/param_id",
|
||
"response_body_sample": "{\"code\": 404, \"message\": \"资源 'wb_dr_pro_daily_report' with ID 'param_id' 未找到.\"}"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-HEADER-001",
|
||
"test_case_name": "必需请求头Schema验证",
|
||
"test_case_severity": "HIGH",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 8.709001122042537e-06,
|
||
"timestamp": "2025-07-11T18:57:45.016734",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-002",
|
||
"test_case_name": "敏感字段加密检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.374997949227691e-06,
|
||
"timestamp": "2025-07-11T18:57:45.016759",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-LLM-COMPLIANCE-001",
|
||
"test_case_name": "LLM合规性综合检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.000009645707905e-06,
|
||
"timestamp": "2025-07-11T18:57:45.016782",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-001",
|
||
"test_case_name": "核心命名与结构规范检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 6.95799826644361e-06,
|
||
"timestamp": "2025-07-11T18:57:45.016805",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-PAGINATION-001",
|
||
"test_case_name": "分页参数检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.000009645707905e-06,
|
||
"timestamp": "2025-07-11T18:57:45.016828",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-004",
|
||
"test_case_name": "资源集合复数命名检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 6.750007742084563e-06,
|
||
"timestamp": "2025-07-11T18:57:45.016851",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-002",
|
||
"test_case_name": "资源路径名词检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 6.832997314631939e-06,
|
||
"timestamp": "2025-07-11T18:57:45.016873",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-CORE-SCHEMA-001",
|
||
"test_case_name": "DMS核心存储服务API响应格式检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 7.124996045604348e-06,
|
||
"timestamp": "2025-07-11T18:57:45.016896",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-001",
|
||
"test_case_name": "返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 6.917005521245301e-06,
|
||
"timestamp": "2025-07-11T18:57:45.016919",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-003",
|
||
"test_case_name": "时间字段ISO 8601格式检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 6.791000487282872e-06,
|
||
"timestamp": "2025-07-11T18:57:45.016941",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-URL-VERSION-001",
|
||
"test_case_name": "DMS API URL版本号检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 6.791000487282872e-06,
|
||
"timestamp": "2025-07-11T18:57:45.016963",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-002",
|
||
"test_case_name": "灵活的返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 6.791000487282872e-06,
|
||
"timestamp": "2025-07-11T18:57:45.016985",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-001",
|
||
"test_case_name": "HTTPS 协议强制性检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 6.917005521245301e-06,
|
||
"timestamp": "2025-07-11T18:57:45.017008",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-QUERY",
|
||
"test_case_name": "查询参数类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 6.874994141981006e-06,
|
||
"timestamp": "2025-07-11T18:57:45.017030",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-BODY",
|
||
"test_case_name": "请求体字段类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 6.667003617621958e-06,
|
||
"timestamp": "2025-07-11T18:57:45.017052",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4002",
|
||
"test_case_name": "数值参数越界检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 8.332994184456766e-06,
|
||
"timestamp": "2025-07-11T18:57:45.017076",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4006",
|
||
"test_case_name": "非法枚举值检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 6.791000487282872e-06,
|
||
"timestamp": "2025-07-11T18:57:45.017099",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-BODY",
|
||
"test_case_name": "缺失必填请求体字段检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 6.791000487282872e-06,
|
||
"timestamp": "2025-07-11T18:57:45.017121",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-QUERY",
|
||
"test_case_name": "缺失必填查询参数检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "跳过",
|
||
"message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ",
|
||
"duration_seconds": 6.750007742084563e-06,
|
||
"timestamp": "2025-07-11T18:57:45.017143",
|
||
"validation_points": []
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"endpoint_id": "PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report",
|
||
"endpoint_name": "Update wb_dr_pro_daily_report",
|
||
"overall_status": "通过",
|
||
"duration_seconds": 0.020972,
|
||
"start_time": "2025-07-11T18:57:45.017206",
|
||
"end_time": "2025-07-11T18:57:45.038178",
|
||
"executed_test_cases": [
|
||
{
|
||
"test_case_id": "TC-STATUS-001",
|
||
"test_case_name": "基本状态码 200 检查",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "响应状态码为 200,符合预期 200。",
|
||
"duration_seconds": 0.000985999999102205,
|
||
"timestamp": "2025-07-11T18:57:45.018357",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "响应状态码为 200,符合预期 200。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-HEADER-001",
|
||
"test_case_name": "必需请求头Schema验证",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "缺少必需的请求头 X-Tenant-ID;缺少必需的请求头 X-Data-Domain;缺少必需的请求头 Authorization",
|
||
"duration_seconds": 0.0011382920056348667,
|
||
"timestamp": "2025-07-11T18:57:45.019535",
|
||
"validation_points": [
|
||
{
|
||
"header": "X-Tenant-ID",
|
||
"possible_names": [
|
||
"X-Tenant-ID"
|
||
],
|
||
"endpoint": "PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
},
|
||
{
|
||
"header": "X-Data-Domain",
|
||
"possible_names": [
|
||
"X-Data-Domain"
|
||
],
|
||
"endpoint": "PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
},
|
||
{
|
||
"header": "Authorization",
|
||
"possible_names": [
|
||
"Authorization"
|
||
],
|
||
"endpoint": "PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-002",
|
||
"test_case_name": "敏感字段加密检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "未在响应中找到需要检查的敏感字段。",
|
||
"duration_seconds": 0.0009992919949581847,
|
||
"timestamp": "2025-07-11T18:57:45.020562",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "未在响应中找到需要检查的敏感字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-LLM-COMPLIANCE-001",
|
||
"test_case_name": "LLM合规性综合检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "合规性标准列表为空,跳过LLM合规性检查。",
|
||
"duration_seconds": 0.001051917002769187,
|
||
"timestamp": "2025-07-11T18:57:45.021654",
|
||
"validation_points": [
|
||
{
|
||
"reason": "compliance_criteria.json is empty or contains an empty list."
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-001",
|
||
"test_case_name": "核心命名与结构规范检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。",
|
||
"duration_seconds": 0.0010076250036945567,
|
||
"timestamp": "2025-07-11T18:57:45.022700",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-PAGINATION-001",
|
||
"test_case_name": "分页参数检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount",
|
||
"duration_seconds": 0.00087554199853912,
|
||
"timestamp": "2025-07-11T18:57:45.023608",
|
||
"validation_points": [
|
||
{
|
||
"path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report",
|
||
"method": "PUT",
|
||
"missing_params": [
|
||
"pageNo",
|
||
"pageSize",
|
||
"isSearchCount"
|
||
],
|
||
"found_params": {
|
||
"pageNo": false,
|
||
"pageSize": false,
|
||
"isSearchCount": false
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-004",
|
||
"test_case_name": "资源集合复数命名检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过检查:PUT 方法,不适用于资源集合复数检查。",
|
||
"duration_seconds": 0.00137945800088346,
|
||
"timestamp": "2025-07-11T18:57:45.025032",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过检查:PUT 方法,不适用于资源集合复数检查。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-002",
|
||
"test_case_name": "资源路径名词检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 符合资源名词命名规范。",
|
||
"duration_seconds": 0.0010381249885540456,
|
||
"timestamp": "2025-07-11T18:57:45.026112",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 符合资源名词命名规范。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-CORE-SCHEMA-001",
|
||
"test_case_name": "DMS核心存储服务API响应格式检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}",
|
||
"duration_seconds": 0.0009269159927498549,
|
||
"timestamp": "2025-07-11T18:57:45.027076",
|
||
"validation_points": [
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-001",
|
||
"test_case_name": "返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "针对 PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report (状态码 200) 的响应体 conforms to the JSON schema.",
|
||
"duration_seconds": 0.0010271670034853742,
|
||
"timestamp": "2025-07-11T18:57:45.028140",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "针对 PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report (状态码 200) 的响应体 conforms to the JSON schema."
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-003",
|
||
"test_case_name": "时间字段ISO 8601格式检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。",
|
||
"duration_seconds": 0.0009042919991770759,
|
||
"timestamp": "2025-07-11T18:57:45.029075",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-URL-VERSION-001",
|
||
"test_case_name": "DMS API URL版本号检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 正确以'/api/'开头;API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 包含版本标识: 'v1'",
|
||
"duration_seconds": 0.000913790994673036,
|
||
"timestamp": "2025-07-11T18:57:45.030026",
|
||
"validation_points": [
|
||
{
|
||
"full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
},
|
||
{
|
||
"pattern_matched": "/v\\d+/",
|
||
"version_string": "v1",
|
||
"full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-002",
|
||
"test_case_name": "灵活的返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0008957499958341941,
|
||
"timestamp": "2025-07-11T18:57:45.030965",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-001",
|
||
"test_case_name": "HTTPS 协议强制性检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "API通过HTTP (http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report) 响应了成功的状态码 200,这违反了HTTPS强制策略。",
|
||
"duration_seconds": 0.0009657499904278666,
|
||
"timestamp": "2025-07-11T18:57:45.031970",
|
||
"validation_points": [
|
||
{
|
||
"status_code": 200
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-QUERY",
|
||
"test_case_name": "查询参数类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。",
|
||
"duration_seconds": 0.0010442919883644208,
|
||
"timestamp": "2025-07-11T18:57:45.033045",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-BODY",
|
||
"test_case_name": "请求体字段类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "当请求体字段 'version' 类型不匹配时, 业务错误码应为 -1,但实际为 0。",
|
||
"duration_seconds": 0.001040457995259203,
|
||
"timestamp": "2025-07-11T18:57:45.034115",
|
||
"validation_points": [
|
||
{
|
||
"expected_code": -1,
|
||
"actual_code": 0,
|
||
"response_body": {
|
||
"code": 0,
|
||
"data": true,
|
||
"message": "创建成功"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4002",
|
||
"test_case_name": "数值参数越界检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "当 body 字段 'record_count' 值为 10001 (超出范围: min=0, max=10000) 时, 业务错误码应为 -1,但实际为 0。",
|
||
"duration_seconds": 0.001064041003701277,
|
||
"timestamp": "2025-07-11T18:57:45.035211",
|
||
"validation_points": [
|
||
{
|
||
"expected_code": -1,
|
||
"actual_code": 0,
|
||
"response_body": {
|
||
"code": 0,
|
||
"data": true,
|
||
"message": "创建成功"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4006",
|
||
"test_case_name": "非法枚举值检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。",
|
||
"duration_seconds": 0.0009317500080214813,
|
||
"timestamp": "2025-07-11T18:57:45.036176",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-BODY",
|
||
"test_case_name": "缺失必填请求体字段检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "当移除必填请求体字段 'data' 时, API应返回状态码 200,但实际为 400。",
|
||
"duration_seconds": 0.0009794579964363948,
|
||
"timestamp": "2025-07-11T18:57:45.037192",
|
||
"validation_points": [
|
||
{
|
||
"expected_status": 200,
|
||
"actual_status": 400
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-QUERY",
|
||
"test_case_name": "缺失必填查询参数检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。",
|
||
"duration_seconds": 0.0009248749993275851,
|
||
"timestamp": "2025-07-11T18:57:45.038155",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"endpoint_id": "DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report",
|
||
"endpoint_name": "Delete wb_dr_pro_daily_report",
|
||
"overall_status": "通过",
|
||
"duration_seconds": 0.018922,
|
||
"start_time": "2025-07-11T18:57:45.038235",
|
||
"end_time": "2025-07-11T18:57:45.057157",
|
||
"executed_test_cases": [
|
||
{
|
||
"test_case_id": "TC-STATUS-001",
|
||
"test_case_name": "基本状态码 200 检查",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "响应状态码为 200,符合预期 200。",
|
||
"duration_seconds": 0.0009182499925373122,
|
||
"timestamp": "2025-07-11T18:57:45.039319",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "响应状态码为 200,符合预期 200。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-HEADER-001",
|
||
"test_case_name": "必需请求头Schema验证",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "缺少必需的请求头 X-Tenant-ID;缺少必需的请求头 X-Data-Domain;缺少必需的请求头 Authorization",
|
||
"duration_seconds": 0.0010118339996552095,
|
||
"timestamp": "2025-07-11T18:57:45.040372",
|
||
"validation_points": [
|
||
{
|
||
"header": "X-Tenant-ID",
|
||
"possible_names": [
|
||
"X-Tenant-ID"
|
||
],
|
||
"endpoint": "DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
},
|
||
{
|
||
"header": "X-Data-Domain",
|
||
"possible_names": [
|
||
"X-Data-Domain"
|
||
],
|
||
"endpoint": "DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
},
|
||
{
|
||
"header": "Authorization",
|
||
"possible_names": [
|
||
"Authorization"
|
||
],
|
||
"endpoint": "DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-002",
|
||
"test_case_name": "敏感字段加密检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "未在响应中找到需要检查的敏感字段。",
|
||
"duration_seconds": 0.0009284579864470288,
|
||
"timestamp": "2025-07-11T18:57:45.041330",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "未在响应中找到需要检查的敏感字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-LLM-COMPLIANCE-001",
|
||
"test_case_name": "LLM合规性综合检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "合规性标准列表为空,跳过LLM合规性检查。",
|
||
"duration_seconds": 0.0009248339920304716,
|
||
"timestamp": "2025-07-11T18:57:45.042293",
|
||
"validation_points": [
|
||
{
|
||
"reason": "compliance_criteria.json is empty or contains an empty list."
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-001",
|
||
"test_case_name": "核心命名与结构规范检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。",
|
||
"duration_seconds": 0.0009065829945029691,
|
||
"timestamp": "2025-07-11T18:57:45.043238",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-PAGINATION-001",
|
||
"test_case_name": "分页参数检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount",
|
||
"duration_seconds": 0.0008258750021923333,
|
||
"timestamp": "2025-07-11T18:57:45.044094",
|
||
"validation_points": [
|
||
{
|
||
"path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report",
|
||
"method": "DELETE",
|
||
"missing_params": [
|
||
"pageNo",
|
||
"pageSize",
|
||
"isSearchCount"
|
||
],
|
||
"found_params": {
|
||
"pageNo": false,
|
||
"pageSize": false,
|
||
"isSearchCount": false
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-004",
|
||
"test_case_name": "资源集合复数命名检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过检查:DELETE 方法,不适用于资源集合复数检查。",
|
||
"duration_seconds": 0.0008165839972207323,
|
||
"timestamp": "2025-07-11T18:57:45.044948",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过检查:DELETE 方法,不适用于资源集合复数检查。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-002",
|
||
"test_case_name": "资源路径名词检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 符合资源名词命名规范。",
|
||
"duration_seconds": 0.0008638330036774278,
|
||
"timestamp": "2025-07-11T18:57:45.045854",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 符合资源名词命名规范。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-CORE-SCHEMA-001",
|
||
"test_case_name": "DMS核心存储服务API响应格式检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}",
|
||
"duration_seconds": 0.0008437080105068162,
|
||
"timestamp": "2025-07-11T18:57:45.046735",
|
||
"validation_points": [
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200",
|
||
"required_fields": []
|
||
},
|
||
{
|
||
"status_code": "200"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-001",
|
||
"test_case_name": "返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "针对 DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report (状态码 200) 的响应体 conforms to the JSON schema.",
|
||
"duration_seconds": 0.0009139579924521968,
|
||
"timestamp": "2025-07-11T18:57:45.047687",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "针对 DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report (状态码 200) 的响应体 conforms to the JSON schema."
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-RESTful-003",
|
||
"test_case_name": "时间字段ISO 8601格式检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。",
|
||
"duration_seconds": 0.0008617499988758937,
|
||
"timestamp": "2025-07-11T18:57:45.048582",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-DMS-URL-VERSION-001",
|
||
"test_case_name": "DMS API URL版本号检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 正确以'/api/'开头;API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 包含版本标识: 'v1'",
|
||
"duration_seconds": 0.0009531249961582944,
|
||
"timestamp": "2025-07-11T18:57:45.049572",
|
||
"validation_points": [
|
||
{
|
||
"full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
},
|
||
{
|
||
"pattern_matched": "/v\\d+/",
|
||
"version_string": "v1",
|
||
"full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-CORE-FUNC-002",
|
||
"test_case_name": "灵活的返回体JSON Schema验证",
|
||
"test_case_severity": "CRITICAL",
|
||
"status": "通过",
|
||
"message": "",
|
||
"duration_seconds": 0.0008376250043511391,
|
||
"timestamp": "2025-07-11T18:57:45.050449",
|
||
"validation_points": []
|
||
},
|
||
{
|
||
"test_case_id": "TC-SECURITY-001",
|
||
"test_case_name": "HTTPS 协议强制性检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "API通过HTTP (http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report) 响应了成功的状态码 200,这违反了HTTPS强制策略。",
|
||
"duration_seconds": 0.0008717500022612512,
|
||
"timestamp": "2025-07-11T18:57:45.051364",
|
||
"validation_points": [
|
||
{
|
||
"status_code": 200
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-QUERY",
|
||
"test_case_name": "查询参数类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。",
|
||
"duration_seconds": 0.0010064160014735535,
|
||
"timestamp": "2025-07-11T18:57:45.052404",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4001-BODY",
|
||
"test_case_name": "请求体字段类型不匹配检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "失败",
|
||
"message": "当请求体字段 'version' 类型不匹配时, 业务错误码应为 -1,但实际为 404。",
|
||
"duration_seconds": 0.0009657080081524327,
|
||
"timestamp": "2025-07-11T18:57:45.053401",
|
||
"validation_points": [
|
||
{
|
||
"expected_code": -1,
|
||
"actual_code": 404,
|
||
"response_body": {
|
||
"code": 404,
|
||
"data": false,
|
||
"message": "未找到要删除的资源"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4002",
|
||
"test_case_name": "数值参数越界检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:未找到具有明确范围限制的数值字段。",
|
||
"duration_seconds": 0.0009448329947190359,
|
||
"timestamp": "2025-07-11T18:57:45.054377",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确范围限制的数值字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4006",
|
||
"test_case_name": "非法枚举值检查",
|
||
"test_case_severity": "MEDIUM",
|
||
"status": "通过",
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。",
|
||
"duration_seconds": 0.0008181669982150197,
|
||
"timestamp": "2025-07-11T18:57:45.055225",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:未找到具有明确枚举值限制的字段。"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-BODY",
|
||
"test_case_name": "缺失必填请求体字段检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "失败",
|
||
"message": "当移除必填请求体字段 'data' 时, API应返回状态码 200,但实际为 400。",
|
||
"duration_seconds": 0.0009573749994160607,
|
||
"timestamp": "2025-07-11T18:57:45.056223",
|
||
"validation_points": [
|
||
{
|
||
"expected_status": 200,
|
||
"actual_status": 400
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"test_case_id": "TC-ERROR-4003-QUERY",
|
||
"test_case_name": "缺失必填查询参数检查",
|
||
"test_case_severity": "HIGH",
|
||
"status": "通过",
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。",
|
||
"duration_seconds": 0.0008685000066179782,
|
||
"timestamp": "2025-07-11T18:57:45.057129",
|
||
"validation_points": [
|
||
{
|
||
"passed": true,
|
||
"message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"stage_results": [
|
||
{
|
||
"stage_id": "dms_crud_scenario_stage",
|
||
"stage_name": "DMS Full CRUD Scenario",
|
||
"description": "Performs a full Create -> Read -> Update -> Read -> Delete -> List workflow for a single DMS business object. (Scenario for: lujing_test)",
|
||
"api_group_name": "Global (所有API)",
|
||
"tags": [
|
||
"dms",
|
||
"crud",
|
||
"scenario"
|
||
],
|
||
"overall_status": "失败",
|
||
"duration_seconds": "0.00",
|
||
"start_time": "2025-07-11T18:57:44",
|
||
"end_time": "2025-07-11T18:57:44",
|
||
"message": "测试阶段因步骤 'Step 1: Create Resource' 的状态 (失败) 而中止.",
|
||
"executed_steps_count": 1,
|
||
"executed_steps": [
|
||
{
|
||
"step_name": "Step 1: Create Resource",
|
||
"description": null,
|
||
"lookup_key": "CREATE",
|
||
"resolved_endpoint": "POST /api/dms/wb_ml/v1/lujing_test",
|
||
"status": "失败",
|
||
"message": "预期状态码为 [200, 201], 实际为 400.; Expected response data to be true, but it was 'None'.",
|
||
"duration_seconds": "0.0000",
|
||
"timestamp": "2025-07-11T18:57:44+0800",
|
||
"validation_points": [
|
||
{
|
||
"passed": false,
|
||
"message": "预期状态码为 [200, 201], 实际为 400."
|
||
},
|
||
{
|
||
"passed": false,
|
||
"message": "Expected response data to be true, but it was 'None'."
|
||
}
|
||
],
|
||
"api_call_curl": "N/A",
|
||
"api_operation_spec": null,
|
||
"request_details": {
|
||
"method": "POST",
|
||
"url": "http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test",
|
||
"headers": {
|
||
"Content-Type": "application/json",
|
||
"Accept": "application/json"
|
||
},
|
||
"params": {},
|
||
"json_data": {
|
||
"data": [
|
||
{
|
||
"description": "test-entry-from-scenario"
|
||
}
|
||
]
|
||
},
|
||
"body": {
|
||
"data": [
|
||
{
|
||
"description": "test-entry-from-scenario"
|
||
}
|
||
]
|
||
},
|
||
"data": null,
|
||
"timeout": 30
|
||
},
|
||
"extracted_outputs": {},
|
||
"context_after_step_summary": {
|
||
"pk_name": "description",
|
||
"pk_value": "c3782722-693c-41e0-8f7a-6121c09ab40e",
|
||
"current_payload": {
|
||
"description": "test-entry-from-scenario"
|
||
},
|
||
"update_payload": {
|
||
"description": "updated-test-entry-from-scenario"
|
||
},
|
||
"scenario_endpoints": {
|
||
"create": {
|
||
"method": "POST",
|
||
"path": "/api/dms/wb_ml/v1/lujing_test",
|
||
"title": "Create lujing_test",
|
||
"summary": "Create lujing_test",
|
||
"description": "Create lujing_test",
|
||
"operationId": "create_lujing_test",
|
||
"tags": [
|
||
"wb_ml"
|
||
],
|
||
"parameters": [],
|
||
"requestBody": {
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"version": {
|
||
"type": "string",
|
||
"example": "1.0.0"
|
||
},
|
||
"act": {
|
||
"type": "integer",
|
||
"example": 0
|
||
},
|
||
"data": {
|
||
"type": "array",
|
||
"items": {
|
||
"properties": {
|
||
"description": {
|
||
"description": "一个简单的描述字段",
|
||
"title": "描述",
|
||
"type": "string"
|
||
},
|
||
"lujing_test_id": {
|
||
"description": "主键 for lujing_test",
|
||
"title": "主键",
|
||
"type": "string"
|
||
},
|
||
"record_count": {
|
||
"maximum": 10000,
|
||
"minimum": 0,
|
||
"title": "记录数",
|
||
"type": "integer"
|
||
},
|
||
"status": {
|
||
"enum": [
|
||
"active",
|
||
"inactive",
|
||
"archived"
|
||
],
|
||
"title": "状态",
|
||
"type": "string"
|
||
},
|
||
"update_date": {
|
||
"format": "date-time",
|
||
"title": "更新日期",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"lujing_test_id",
|
||
"status"
|
||
],
|
||
"title": "测试",
|
||
"type": "object"
|
||
}
|
||
}
|
||
},
|
||
"required": [
|
||
"data"
|
||
]
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"responses": {
|
||
"200": {
|
||
"description": "Success",
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"code": {
|
||
"type": "integer"
|
||
},
|
||
"message": {
|
||
"type": "string"
|
||
},
|
||
"data": {
|
||
"type": "boolean"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"_source_format": "dms",
|
||
"_dms_raw_record": {
|
||
"add_tree": "Y",
|
||
"create_user": "admin",
|
||
"domain": "wb_ml",
|
||
"flow_state": "7",
|
||
"id": "lujing_test.1.0.0",
|
||
"name": "lujing_test",
|
||
"title": "测试",
|
||
"type": "business-data",
|
||
"update_date": "2025-07-01 14:34:58",
|
||
"version": "1.0.0"
|
||
},
|
||
"_test_mode": "standalone"
|
||
},
|
||
"list": {
|
||
"method": "POST",
|
||
"path": "/api/dms/wb_ml/v1/lujing_test/1.0.0",
|
||
"title": "List lujing_test",
|
||
"summary": "List lujing_test",
|
||
"description": "List lujing_test",
|
||
"operationId": "list_lujing_test",
|
||
"tags": [
|
||
"wb_ml"
|
||
],
|
||
"parameters": [],
|
||
"requestBody": {
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {}
|
||
}
|
||
}
|
||
},
|
||
"responses": {
|
||
"200": {
|
||
"description": "Successful Operation",
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"code": {
|
||
"type": "integer"
|
||
},
|
||
"message": {
|
||
"type": "string"
|
||
},
|
||
"data": {
|
||
"type": "array",
|
||
"items": {
|
||
"properties": {
|
||
"description": {
|
||
"description": "一个简单的描述字段",
|
||
"title": "描述",
|
||
"type": "string"
|
||
},
|
||
"lujing_test_id": {
|
||
"description": "主键 for lujing_test",
|
||
"title": "主键",
|
||
"type": "string"
|
||
},
|
||
"record_count": {
|
||
"maximum": 10000,
|
||
"minimum": 0,
|
||
"title": "记录数",
|
||
"type": "integer"
|
||
},
|
||
"status": {
|
||
"enum": [
|
||
"active",
|
||
"inactive",
|
||
"archived"
|
||
],
|
||
"title": "状态",
|
||
"type": "string"
|
||
},
|
||
"update_date": {
|
||
"format": "date-time",
|
||
"title": "更新日期",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"lujing_test_id",
|
||
"status"
|
||
],
|
||
"title": "测试",
|
||
"type": "object"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"_source_format": "dms",
|
||
"_dms_raw_record": {
|
||
"add_tree": "Y",
|
||
"create_user": "admin",
|
||
"domain": "wb_ml",
|
||
"flow_state": "7",
|
||
"id": "lujing_test.1.0.0",
|
||
"name": "lujing_test",
|
||
"title": "测试",
|
||
"type": "business-data",
|
||
"update_date": "2025-07-01 14:34:58",
|
||
"version": "1.0.0"
|
||
},
|
||
"_test_mode": "scenario_only"
|
||
},
|
||
"read": {
|
||
"method": "GET",
|
||
"path": "/api/dms/wb_ml/v1/lujing_test/1.0.0/{id}",
|
||
"title": "Read lujing_test",
|
||
"summary": "Read lujing_test",
|
||
"description": "Read lujing_test",
|
||
"operationId": "read_lujing_test",
|
||
"tags": [
|
||
"wb_ml"
|
||
],
|
||
"parameters": [
|
||
{
|
||
"name": "id",
|
||
"in": "path",
|
||
"required": true,
|
||
"description": "The ID of the lujing_test, maps to description",
|
||
"schema": {
|
||
"description": "一个简单的描述字段",
|
||
"title": "描述",
|
||
"type": "string"
|
||
}
|
||
}
|
||
],
|
||
"requestBody": null,
|
||
"responses": {
|
||
"200": {
|
||
"description": "Successful Operation",
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"code": {
|
||
"type": "integer"
|
||
},
|
||
"message": {
|
||
"type": "string"
|
||
},
|
||
"data": {
|
||
"properties": {
|
||
"description": {
|
||
"description": "一个简单的描述字段",
|
||
"title": "描述",
|
||
"type": "string"
|
||
},
|
||
"lujing_test_id": {
|
||
"description": "主键 for lujing_test",
|
||
"title": "主键",
|
||
"type": "string"
|
||
},
|
||
"record_count": {
|
||
"maximum": 10000,
|
||
"minimum": 0,
|
||
"title": "记录数",
|
||
"type": "integer"
|
||
},
|
||
"status": {
|
||
"enum": [
|
||
"active",
|
||
"inactive",
|
||
"archived"
|
||
],
|
||
"title": "状态",
|
||
"type": "string"
|
||
},
|
||
"update_date": {
|
||
"format": "date-time",
|
||
"title": "更新日期",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"lujing_test_id",
|
||
"status"
|
||
],
|
||
"title": "测试",
|
||
"type": "object"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"_source_format": "dms",
|
||
"_dms_raw_record": {
|
||
"add_tree": "Y",
|
||
"create_user": "admin",
|
||
"domain": "wb_ml",
|
||
"flow_state": "7",
|
||
"id": "lujing_test.1.0.0",
|
||
"name": "lujing_test",
|
||
"title": "测试",
|
||
"type": "business-data",
|
||
"update_date": "2025-07-01 14:34:58",
|
||
"version": "1.0.0"
|
||
},
|
||
"_test_mode": "scenario_only"
|
||
},
|
||
"update": {
|
||
"method": "PUT",
|
||
"path": "/api/dms/wb_ml/v1/lujing_test",
|
||
"title": "Update lujing_test",
|
||
"summary": "Update lujing_test",
|
||
"description": "Update lujing_test",
|
||
"operationId": "update_lujing_test",
|
||
"tags": [
|
||
"wb_ml"
|
||
],
|
||
"parameters": [],
|
||
"requestBody": {
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"version": {
|
||
"type": "string",
|
||
"example": "1.0.0"
|
||
},
|
||
"act": {
|
||
"type": "integer",
|
||
"example": 0
|
||
},
|
||
"data": {
|
||
"type": "array",
|
||
"items": {
|
||
"properties": {
|
||
"description": {
|
||
"description": "一个简单的描述字段",
|
||
"title": "描述",
|
||
"type": "string"
|
||
},
|
||
"lujing_test_id": {
|
||
"description": "主键 for lujing_test",
|
||
"title": "主键",
|
||
"type": "string"
|
||
},
|
||
"record_count": {
|
||
"maximum": 10000,
|
||
"minimum": 0,
|
||
"title": "记录数",
|
||
"type": "integer"
|
||
},
|
||
"status": {
|
||
"enum": [
|
||
"active",
|
||
"inactive",
|
||
"archived"
|
||
],
|
||
"title": "状态",
|
||
"type": "string"
|
||
},
|
||
"update_date": {
|
||
"format": "date-time",
|
||
"title": "更新日期",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"lujing_test_id",
|
||
"status"
|
||
],
|
||
"title": "测试",
|
||
"type": "object"
|
||
}
|
||
}
|
||
},
|
||
"required": [
|
||
"data"
|
||
]
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"responses": {
|
||
"200": {
|
||
"description": "Success",
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"code": {
|
||
"type": "integer"
|
||
},
|
||
"message": {
|
||
"type": "string"
|
||
},
|
||
"data": {
|
||
"type": "boolean"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"_source_format": "dms",
|
||
"_dms_raw_record": {
|
||
"add_tree": "Y",
|
||
"create_user": "admin",
|
||
"domain": "wb_ml",
|
||
"flow_state": "7",
|
||
"id": "lujing_test.1.0.0",
|
||
"name": "lujing_test",
|
||
"title": "测试",
|
||
"type": "business-data",
|
||
"update_date": "2025-07-01 14:34:58",
|
||
"version": "1.0.0"
|
||
},
|
||
"_test_mode": "scenario_only"
|
||
},
|
||
"delete": {
|
||
"method": "DELETE",
|
||
"path": "/api/dms/wb_ml/v1/lujing_test",
|
||
"title": "Delete lujing_test",
|
||
"summary": "Delete lujing_test",
|
||
"description": "Delete lujing_test",
|
||
"operationId": "delete_lujing_test",
|
||
"tags": [
|
||
"wb_ml"
|
||
],
|
||
"parameters": [],
|
||
"requestBody": {
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"version": {
|
||
"type": "string",
|
||
"example": "1.0.0"
|
||
},
|
||
"data": {
|
||
"type": "array",
|
||
"items": {
|
||
"type": "object",
|
||
"properties": {
|
||
"description": {
|
||
"description": "一个简单的描述字段",
|
||
"title": "描述",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"description"
|
||
]
|
||
}
|
||
}
|
||
},
|
||
"required": [
|
||
"data"
|
||
]
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"responses": {
|
||
"200": {
|
||
"description": "Success",
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"code": {
|
||
"type": "integer"
|
||
},
|
||
"message": {
|
||
"type": "string"
|
||
},
|
||
"data": {
|
||
"type": "boolean"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"_source_format": "dms",
|
||
"_dms_raw_record": {
|
||
"add_tree": "Y",
|
||
"create_user": "admin",
|
||
"domain": "wb_ml",
|
||
"flow_state": "7",
|
||
"id": "lujing_test.1.0.0",
|
||
"name": "lujing_test",
|
||
"title": "测试",
|
||
"type": "business-data",
|
||
"update_date": "2025-07-01 14:34:58",
|
||
"version": "1.0.0"
|
||
},
|
||
"_test_mode": "scenario_only"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
],
|
||
"final_stage_context_summary": {
|
||
"pk_name": "description",
|
||
"pk_value": "c3782722-693c-41e0-8f7a-6121c09ab40e",
|
||
"current_payload": "Type: dict, Keys/Count: 1",
|
||
"update_payload": "Type: dict, Keys/Count: 1",
|
||
"scenario_endpoints": "Type: dict, Keys/Count: 5"
|
||
}
|
||
},
|
||
{
|
||
"stage_id": "dms_crud_scenario_stage",
|
||
"stage_name": "DMS Full CRUD Scenario",
|
||
"description": "Performs a full Create -> Read -> Update -> Read -> Delete -> List workflow for a single DMS business object. (Scenario for: lujing_test)",
|
||
"api_group_name": "Global (所有API)",
|
||
"tags": [
|
||
"dms",
|
||
"crud",
|
||
"scenario"
|
||
],
|
||
"overall_status": "失败",
|
||
"duration_seconds": "0.00",
|
||
"start_time": "2025-07-11T18:57:45",
|
||
"end_time": "2025-07-11T18:57:45",
|
||
"message": "测试阶段因步骤 'Step 1: Create Resource' 的状态 (失败) 而中止.",
|
||
"executed_steps_count": 1,
|
||
"executed_steps": [
|
||
{
|
||
"step_name": "Step 1: Create Resource",
|
||
"description": null,
|
||
"lookup_key": "CREATE",
|
||
"resolved_endpoint": "POST /api/dms/wb_ml/v1/lujing_test",
|
||
"status": "失败",
|
||
"message": "预期状态码为 [200, 201], 实际为 400.; Expected response data to be true, but it was 'None'.",
|
||
"duration_seconds": "0.0000",
|
||
"timestamp": "2025-07-11T18:57:45+0800",
|
||
"validation_points": [
|
||
{
|
||
"passed": false,
|
||
"message": "预期状态码为 [200, 201], 实际为 400."
|
||
},
|
||
{
|
||
"passed": false,
|
||
"message": "Expected response data to be true, but it was 'None'."
|
||
}
|
||
],
|
||
"api_call_curl": "N/A",
|
||
"api_operation_spec": null,
|
||
"request_details": {
|
||
"method": "POST",
|
||
"url": "http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test",
|
||
"headers": {
|
||
"Content-Type": "application/json",
|
||
"Accept": "application/json"
|
||
},
|
||
"params": {},
|
||
"json_data": {
|
||
"data": [
|
||
{
|
||
"description": "test-entry-from-scenario"
|
||
}
|
||
]
|
||
},
|
||
"body": {
|
||
"data": [
|
||
{
|
||
"description": "test-entry-from-scenario"
|
||
}
|
||
]
|
||
},
|
||
"data": null,
|
||
"timeout": 30
|
||
},
|
||
"extracted_outputs": {},
|
||
"context_after_step_summary": {
|
||
"pk_name": "description",
|
||
"pk_value": "b54b5f8c-01ac-49c2-a846-2bdb8454b087",
|
||
"current_payload": {
|
||
"description": "test-entry-from-scenario"
|
||
},
|
||
"update_payload": {
|
||
"description": "updated-test-entry-from-scenario"
|
||
},
|
||
"scenario_endpoints": {
|
||
"create": {
|
||
"method": "POST",
|
||
"path": "/api/dms/wb_ml/v1/lujing_test",
|
||
"title": "Create lujing_test",
|
||
"summary": "Create lujing_test",
|
||
"description": "Create lujing_test",
|
||
"operationId": "create_lujing_test",
|
||
"tags": [
|
||
"wb_ml"
|
||
],
|
||
"parameters": [],
|
||
"requestBody": {
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"version": {
|
||
"type": "string",
|
||
"example": "1.0.0"
|
||
},
|
||
"act": {
|
||
"type": "integer",
|
||
"example": 0
|
||
},
|
||
"data": {
|
||
"type": "array",
|
||
"items": {
|
||
"properties": {
|
||
"description": {
|
||
"description": "一个简单的描述字段",
|
||
"title": "描述",
|
||
"type": "string"
|
||
},
|
||
"lujing_test_id": {
|
||
"description": "主键 for lujing_test",
|
||
"title": "主键",
|
||
"type": "string"
|
||
},
|
||
"record_count": {
|
||
"maximum": 10000,
|
||
"minimum": 0,
|
||
"title": "记录数",
|
||
"type": "integer"
|
||
},
|
||
"status": {
|
||
"enum": [
|
||
"active",
|
||
"inactive",
|
||
"archived"
|
||
],
|
||
"title": "状态",
|
||
"type": "string"
|
||
},
|
||
"update_date": {
|
||
"format": "date-time",
|
||
"title": "更新日期",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"lujing_test_id",
|
||
"status"
|
||
],
|
||
"title": "测试",
|
||
"type": "object"
|
||
}
|
||
}
|
||
},
|
||
"required": [
|
||
"data"
|
||
]
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"responses": {
|
||
"200": {
|
||
"description": "Success",
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"code": {
|
||
"type": "integer"
|
||
},
|
||
"message": {
|
||
"type": "string"
|
||
},
|
||
"data": {
|
||
"type": "boolean"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"_source_format": "dms",
|
||
"_dms_raw_record": {
|
||
"add_tree": "Y",
|
||
"create_user": "admin",
|
||
"domain": "wb_ml",
|
||
"flow_state": "7",
|
||
"id": "lujing_test.1.0.0",
|
||
"name": "lujing_test",
|
||
"title": "测试",
|
||
"type": "business-data",
|
||
"update_date": "2025-07-01 14:34:58",
|
||
"version": "1.0.0"
|
||
},
|
||
"_test_mode": "standalone"
|
||
},
|
||
"list": {
|
||
"method": "POST",
|
||
"path": "/api/dms/wb_ml/v1/lujing_test/1.0.0",
|
||
"title": "List lujing_test",
|
||
"summary": "List lujing_test",
|
||
"description": "List lujing_test",
|
||
"operationId": "list_lujing_test",
|
||
"tags": [
|
||
"wb_ml"
|
||
],
|
||
"parameters": [],
|
||
"requestBody": {
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {}
|
||
}
|
||
}
|
||
},
|
||
"responses": {
|
||
"200": {
|
||
"description": "Successful Operation",
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"code": {
|
||
"type": "integer"
|
||
},
|
||
"message": {
|
||
"type": "string"
|
||
},
|
||
"data": {
|
||
"type": "array",
|
||
"items": {
|
||
"properties": {
|
||
"description": {
|
||
"description": "一个简单的描述字段",
|
||
"title": "描述",
|
||
"type": "string"
|
||
},
|
||
"lujing_test_id": {
|
||
"description": "主键 for lujing_test",
|
||
"title": "主键",
|
||
"type": "string"
|
||
},
|
||
"record_count": {
|
||
"maximum": 10000,
|
||
"minimum": 0,
|
||
"title": "记录数",
|
||
"type": "integer"
|
||
},
|
||
"status": {
|
||
"enum": [
|
||
"active",
|
||
"inactive",
|
||
"archived"
|
||
],
|
||
"title": "状态",
|
||
"type": "string"
|
||
},
|
||
"update_date": {
|
||
"format": "date-time",
|
||
"title": "更新日期",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"lujing_test_id",
|
||
"status"
|
||
],
|
||
"title": "测试",
|
||
"type": "object"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"_source_format": "dms",
|
||
"_dms_raw_record": {
|
||
"add_tree": "Y",
|
||
"create_user": "admin",
|
||
"domain": "wb_ml",
|
||
"flow_state": "7",
|
||
"id": "lujing_test.1.0.0",
|
||
"name": "lujing_test",
|
||
"title": "测试",
|
||
"type": "business-data",
|
||
"update_date": "2025-07-01 14:34:58",
|
||
"version": "1.0.0"
|
||
},
|
||
"_test_mode": "scenario_only"
|
||
},
|
||
"read": {
|
||
"method": "GET",
|
||
"path": "/api/dms/wb_ml/v1/lujing_test/1.0.0/{id}",
|
||
"title": "Read lujing_test",
|
||
"summary": "Read lujing_test",
|
||
"description": "Read lujing_test",
|
||
"operationId": "read_lujing_test",
|
||
"tags": [
|
||
"wb_ml"
|
||
],
|
||
"parameters": [
|
||
{
|
||
"name": "id",
|
||
"in": "path",
|
||
"required": true,
|
||
"description": "The ID of the lujing_test, maps to description",
|
||
"schema": {
|
||
"description": "一个简单的描述字段",
|
||
"title": "描述",
|
||
"type": "string"
|
||
}
|
||
}
|
||
],
|
||
"requestBody": null,
|
||
"responses": {
|
||
"200": {
|
||
"description": "Successful Operation",
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"code": {
|
||
"type": "integer"
|
||
},
|
||
"message": {
|
||
"type": "string"
|
||
},
|
||
"data": {
|
||
"properties": {
|
||
"description": {
|
||
"description": "一个简单的描述字段",
|
||
"title": "描述",
|
||
"type": "string"
|
||
},
|
||
"lujing_test_id": {
|
||
"description": "主键 for lujing_test",
|
||
"title": "主键",
|
||
"type": "string"
|
||
},
|
||
"record_count": {
|
||
"maximum": 10000,
|
||
"minimum": 0,
|
||
"title": "记录数",
|
||
"type": "integer"
|
||
},
|
||
"status": {
|
||
"enum": [
|
||
"active",
|
||
"inactive",
|
||
"archived"
|
||
],
|
||
"title": "状态",
|
||
"type": "string"
|
||
},
|
||
"update_date": {
|
||
"format": "date-time",
|
||
"title": "更新日期",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"lujing_test_id",
|
||
"status"
|
||
],
|
||
"title": "测试",
|
||
"type": "object"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"_source_format": "dms",
|
||
"_dms_raw_record": {
|
||
"add_tree": "Y",
|
||
"create_user": "admin",
|
||
"domain": "wb_ml",
|
||
"flow_state": "7",
|
||
"id": "lujing_test.1.0.0",
|
||
"name": "lujing_test",
|
||
"title": "测试",
|
||
"type": "business-data",
|
||
"update_date": "2025-07-01 14:34:58",
|
||
"version": "1.0.0"
|
||
},
|
||
"_test_mode": "scenario_only"
|
||
},
|
||
"update": {
|
||
"method": "PUT",
|
||
"path": "/api/dms/wb_ml/v1/lujing_test",
|
||
"title": "Update lujing_test",
|
||
"summary": "Update lujing_test",
|
||
"description": "Update lujing_test",
|
||
"operationId": "update_lujing_test",
|
||
"tags": [
|
||
"wb_ml"
|
||
],
|
||
"parameters": [],
|
||
"requestBody": {
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"version": {
|
||
"type": "string",
|
||
"example": "1.0.0"
|
||
},
|
||
"act": {
|
||
"type": "integer",
|
||
"example": 0
|
||
},
|
||
"data": {
|
||
"type": "array",
|
||
"items": {
|
||
"properties": {
|
||
"description": {
|
||
"description": "一个简单的描述字段",
|
||
"title": "描述",
|
||
"type": "string"
|
||
},
|
||
"lujing_test_id": {
|
||
"description": "主键 for lujing_test",
|
||
"title": "主键",
|
||
"type": "string"
|
||
},
|
||
"record_count": {
|
||
"maximum": 10000,
|
||
"minimum": 0,
|
||
"title": "记录数",
|
||
"type": "integer"
|
||
},
|
||
"status": {
|
||
"enum": [
|
||
"active",
|
||
"inactive",
|
||
"archived"
|
||
],
|
||
"title": "状态",
|
||
"type": "string"
|
||
},
|
||
"update_date": {
|
||
"format": "date-time",
|
||
"title": "更新日期",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"lujing_test_id",
|
||
"status"
|
||
],
|
||
"title": "测试",
|
||
"type": "object"
|
||
}
|
||
}
|
||
},
|
||
"required": [
|
||
"data"
|
||
]
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"responses": {
|
||
"200": {
|
||
"description": "Success",
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"code": {
|
||
"type": "integer"
|
||
},
|
||
"message": {
|
||
"type": "string"
|
||
},
|
||
"data": {
|
||
"type": "boolean"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"_source_format": "dms",
|
||
"_dms_raw_record": {
|
||
"add_tree": "Y",
|
||
"create_user": "admin",
|
||
"domain": "wb_ml",
|
||
"flow_state": "7",
|
||
"id": "lujing_test.1.0.0",
|
||
"name": "lujing_test",
|
||
"title": "测试",
|
||
"type": "business-data",
|
||
"update_date": "2025-07-01 14:34:58",
|
||
"version": "1.0.0"
|
||
},
|
||
"_test_mode": "scenario_only"
|
||
},
|
||
"delete": {
|
||
"method": "DELETE",
|
||
"path": "/api/dms/wb_ml/v1/lujing_test",
|
||
"title": "Delete lujing_test",
|
||
"summary": "Delete lujing_test",
|
||
"description": "Delete lujing_test",
|
||
"operationId": "delete_lujing_test",
|
||
"tags": [
|
||
"wb_ml"
|
||
],
|
||
"parameters": [],
|
||
"requestBody": {
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"version": {
|
||
"type": "string",
|
||
"example": "1.0.0"
|
||
},
|
||
"data": {
|
||
"type": "array",
|
||
"items": {
|
||
"type": "object",
|
||
"properties": {
|
||
"description": {
|
||
"description": "一个简单的描述字段",
|
||
"title": "描述",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"description"
|
||
]
|
||
}
|
||
}
|
||
},
|
||
"required": [
|
||
"data"
|
||
]
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"responses": {
|
||
"200": {
|
||
"description": "Success",
|
||
"content": {
|
||
"application/json": {
|
||
"schema": {
|
||
"type": "object",
|
||
"properties": {
|
||
"code": {
|
||
"type": "integer"
|
||
},
|
||
"message": {
|
||
"type": "string"
|
||
},
|
||
"data": {
|
||
"type": "boolean"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"_source_format": "dms",
|
||
"_dms_raw_record": {
|
||
"add_tree": "Y",
|
||
"create_user": "admin",
|
||
"domain": "wb_ml",
|
||
"flow_state": "7",
|
||
"id": "lujing_test.1.0.0",
|
||
"name": "lujing_test",
|
||
"title": "测试",
|
||
"type": "business-data",
|
||
"update_date": "2025-07-01 14:34:58",
|
||
"version": "1.0.0"
|
||
},
|
||
"_test_mode": "scenario_only"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
],
|
||
"final_stage_context_summary": {
|
||
"pk_name": "description",
|
||
"pk_value": "b54b5f8c-01ac-49c2-a846-2bdb8454b087",
|
||
"current_payload": "Type: dict, Keys/Count: 1",
|
||
"update_payload": "Type: dict, Keys/Count: 1",
|
||
"scenario_endpoints": "Type: dict, Keys/Count: 5"
|
||
}
|
||
}
|
||
],
|
||
"api_call_details_summary": []
|
||
} |