1078 lines
221 KiB
Plaintext
1078 lines
221 KiB
Plaintext
2025-05-26 14:59:38,221 - __main__ - DEBUG - 已启用详细日志模式
|
||
2025-05-26 14:59:38,221 - __main__ - INFO - args.api_key: sk-0213c70194624703a1d0d80e0f762b0e
|
||
2025-05-26 14:59:38,221 - ddms_compliance_suite.test_orchestrator - INFO - 初始化 TestCaseRegistry,扫描目录: ./custom_testcases
|
||
2025-05-26 14:59:38,221 - ddms_compliance_suite.test_case_registry - INFO - 开始从目录 './custom_testcases' 及其子目录发现测试用例...
|
||
2025-05-26 14:59:38,222 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: basic_checks 从 ./custom_testcases/basic_checks.py
|
||
2025-05-26 14:59:38,222 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-STATUS-001' (基本状态码 200 检查) 来自类 'StatusCode200Check' (路径: ./custom_testcases/basic_checks.py)
|
||
2025-05-26 14:59:38,222 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: https_mandatory_case 从 ./custom_testcases/compliance_catalog/security/https_mandatory_case.py
|
||
2025-05-26 14:59:38,222 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-SECURITY-001' (HTTPS Protocol Mandatory Verification) 来自类 'HTTPSMandatoryCase' (路径: ./custom_testcases/compliance_catalog/security/https_mandatory_case.py)
|
||
2025-05-26 14:59:38,224 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: url_llm_checks 从 ./custom_testcases/compliance_catalog/normative_spec/url_llm_checks.py
|
||
2025-05-26 14:59:38,224 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' (综合URL规范与RESTful风格检查 (LLM)) 来自类 'ComprehensiveURLCheckLLMCase' (路径: ./custom_testcases/compliance_catalog/normative_spec/url_llm_checks.py)
|
||
2025-05-26 14:59:38,224 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: http_method_usage_case 从 ./custom_testcases/compliance_catalog/normative_spec/http_method_usage_case.py
|
||
2025-05-26 14:59:38,224 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: missing_required_field_query_case 从 ./custom_testcases/compliance_catalog/error_handling/missing_required_field_query_case.py
|
||
2025-05-26 14:59:38,224 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-ERROR-4003-QUERY' (Error Code 4003 - Missing Required Query Parameter Validation) 来自类 'MissingRequiredFieldQueryCase' (路径: ./custom_testcases/compliance_catalog/error_handling/missing_required_field_query_case.py)
|
||
2025-05-26 14:59:38,225 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: type_mismatch_body_case 从 ./custom_testcases/compliance_catalog/error_handling/type_mismatch_body_case.py
|
||
2025-05-26 14:59:38,225 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-ERROR-4001-BODY' (Error Code 4001 - Request Body Type Mismatch Validation) 来自类 'TypeMismatchBodyCase' (路径: ./custom_testcases/compliance_catalog/error_handling/type_mismatch_body_case.py)
|
||
2025-05-26 14:59:38,225 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: missing_required_field_body_case 从 ./custom_testcases/compliance_catalog/error_handling/missing_required_field_body_case.py
|
||
2025-05-26 14:59:38,225 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-ERROR-4003-BODY' (Error Code 4003 - Missing Required Request Body Field Validation) 来自类 'MissingRequiredFieldBodyCase' (路径: ./custom_testcases/compliance_catalog/error_handling/missing_required_field_body_case.py)
|
||
2025-05-26 14:59:38,225 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: type_mismatch_query_param_case 从 ./custom_testcases/compliance_catalog/error_handling/type_mismatch_query_param_case.py
|
||
2025-05-26 14:59:38,225 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-ERROR-4001-QUERY' (Error Code 4001 - Query Parameter Type Mismatch Validation) 来自类 'TypeMismatchQueryParamCase' (路径: ./custom_testcases/compliance_catalog/error_handling/type_mismatch_query_param_case.py)
|
||
2025-05-26 14:59:38,225 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: schema_validation_case 从 ./custom_testcases/compliance_catalog/core_functionality/schema_validation_case.py
|
||
2025-05-26 14:59:38,225 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-CORE-FUNC-001' (Response Body JSON Schema Validation) 来自类 'ResponseSchemaValidationCase' (路径: ./custom_testcases/compliance_catalog/core_functionality/schema_validation_case.py)
|
||
2025-05-26 14:59:38,225 - ddms_compliance_suite.test_case_registry - INFO - 已根据 execution_order (主要) 和类名 (次要) 对 8 个测试用例类进行了排序。
|
||
2025-05-26 14:59:38,225 - ddms_compliance_suite.test_case_registry - INFO - 测试用例发现完成。总共注册了 8 个独特的测试用例 (基于ID)。发现并排序了 8 个测试用例类。
|
||
2025-05-26 14:59:38,225 - ddms_compliance_suite.test_orchestrator - INFO - TestCaseRegistry 初始化完成,发现 8 个测试用例类。
|
||
2025-05-26 14:59:38,225 - ddms_compliance_suite.llm_utils.llm_service - INFO - LLMService initialized for model 'qwen-plus' at https://dashscope.aliyuncs.com/compatible-mode/v1
|
||
2025-05-26 14:59:38,225 - ddms_compliance_suite.test_orchestrator - INFO - LLMService 已成功初始化,模型: qwen-plus。
|
||
2025-05-26 14:59:38,225 - __main__ - INFO - 从YAPI文件运行测试: assets/doc/井筒API示例_simple.json
|
||
2025-05-26 14:59:38,225 - ddms_compliance_suite.test_orchestrator - INFO - 从YAPI文件加载API定义: assets/doc/井筒API示例_simple.json
|
||
2025-05-26 14:59:38,225 - ddms_compliance_suite.input_parser.parser - INFO - Parsing YAPI spec from: assets/doc/井筒API示例_simple.json
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 适用于端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} (数据推送接口)
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 发现了 8 个适用的测试用例: ['TC-STATUS-001', 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001', 'TC-CORE-FUNC-001', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY']
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 14:59:38,226 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 初始化。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 准备初始请求数据 (TC: TC-STATUS-001)
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 端点 'POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 的参数未在缓存中找到,开始生成。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 使用常规方法或LLM未启用,为路径参数。
|
||
2025-05-26 14:59:38,226 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 使用常规方法生成 path 参数。
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 使用 schema 中的 'example' 值 for (context: path parameter 'dms_instance_code'): example_dms_instance_code
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 使用 schema 中的 'example' 值 for (context: path parameter 'schema'): example_schema
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 使用 schema 中的 'example' 值 for (context: path parameter 'version'): example_version
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 常规方法生成的 path 参数: {'dms_instance_code': 'example_dms_instance_code', 'schema': 'example_schema', 'version': 'example_version'}
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 没有定义 query 参数。
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 使用常规方法或LLM未启用,为头部参数。
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 使用常规方法生成 header 参数。
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 string 类型数据 ('') for (context: header parameter 'tenant-id'): example_string
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 string 类型数据 ('') for (context: header parameter 'Authorization'): example_string
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 常规方法生成的 header 参数: {'tenant-id': 'example_string', 'Authorization': 'example_string'}
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 使用常规方法或LLM未启用/不适用,为请求体。
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 object 类型数据 for (context: requestBody). Properties: ['isSearchCount', 'query']
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 使用 schema 中的 'default' 值 for (context: requestBody.isSearchCount): True
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 object 类型数据 for (context: requestBody.query). Properties: ['dataRegions', 'fields', 'filter', 'groupFields', 'groupFilter', 'sort']
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 array 类型数据 for (context: requestBody.query.dataRegions). Items schema: {'description': '数据域,如:JD、DG、TL', 'type': 'string'}, minItems: 1
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 string 类型数据 ('') for (context: requestBody.query.dataRegions[0]): example_string
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 array 类型数据 for (context: requestBody.query.fields). Items schema: {'description': '查询的字段', 'type': 'string'}, minItems: 1
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 string 类型数据 ('') for (context: requestBody.query.fields[0]): example_string
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 object 类型数据 for (context: requestBody.query.filter). Properties: ['key', 'logic', 'realValue', 'singleValue', 'subFilter', 'symbol']
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 string 类型数据 ('') for (context: requestBody.query.filter.key): example_string
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 string 类型数据 ('') for (context: requestBody.query.filter.logic): example_string
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 array 类型数据 for (context: requestBody.query.filter.realValue). Items schema: {'description': '条件值', 'type': 'object', 'properties': {}}, minItems: 1
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 object 类型数据 for (context: requestBody.query.filter.realValue[0]). Properties: []
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 object 类型数据 for (context: requestBody.query.filter.singleValue). Properties: []
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 array 类型数据 for (context: requestBody.query.filter.subFilter). Items schema: {'$ref': '#/components/schemas/FilterVO', 'type': 'string'}, minItems: 1
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 string 类型数据 ('') for (context: requestBody.query.filter.subFilter[0]): example_string
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 string 类型数据 ('') for (context: requestBody.query.filter.symbol): example_string
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 array 类型数据 for (context: requestBody.query.groupFields). Items schema: {'description': '分组字段group by', 'type': 'string'}, minItems: 1
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 string 类型数据 ('') for (context: requestBody.query.groupFields[0]): example_string
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 object 类型数据 for (context: requestBody.query.groupFilter). Properties: ['key', 'logic', 'realValue', 'singleValue', 'subFilter', 'symbol']
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 string 类型数据 ('') for (context: requestBody.query.groupFilter.key): example_string
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 string 类型数据 ('') for (context: requestBody.query.groupFilter.logic): example_string
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 array 类型数据 for (context: requestBody.query.groupFilter.realValue). Items schema: {'description': '条件值', 'type': 'object', 'properties': {}}, minItems: 1
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 object 类型数据 for (context: requestBody.query.groupFilter.realValue[0]). Properties: []
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 object 类型数据 for (context: requestBody.query.groupFilter.singleValue). Properties: []
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 array 类型数据 for (context: requestBody.query.groupFilter.subFilter). Items schema: {'$ref': '#/components/schemas/FilterVO', 'type': 'string'}, minItems: 1
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 string 类型数据 ('') for (context: requestBody.query.groupFilter.subFilter[0]): example_string
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 string 类型数据 ('') for (context: requestBody.query.groupFilter.symbol): example_string
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 生成 object 类型数据 for (context: requestBody.query.sort). Properties: []
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 端点 'POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 的参数已生成并存入缓存。
|
||
2025-05-26 14:59:38,227 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] (新生成) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'schema': 'example_schema', 'version': 'example_version'}, query_params={}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 14:59:38,289 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/message/push/example_schema/example_version
|
||
2025-05-26 14:59:38,289 - ddms_compliance_suite.test_orchestrator - DEBUG - [92m ✅ 测试用例 'TC-STATUS-001' 执行成功。[0m
|
||
2025-05-26 14:59:38,289 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过
|
||
2025-05-26 14:59:38,289 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' for 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
|
||
2025-05-26 14:59:38,289 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 14:59:38,289 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 14:59:38,289 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ComprehensiveURLCheckLLMCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 14:59:38,289 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' (综合URL规范与RESTful风格检查 (LLM)) for endpoint 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
|
||
2025-05-26 14:59:38,289 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 准备初始请求数据 (TC: TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001)
|
||
2025-05-26 14:59:38,289 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 的LLM参数。
|
||
2025-05-26 14:59:38,289 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'schema': 'example_schema', 'version': 'example_version'}, query_params={}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 14:59:38,289 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - 向LLM发送请求,评估路径: /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} (POST)
|
||
2025-05-26 14:59:38,289 - ddms_compliance_suite.llm_utils.llm_service - DEBUG - LLM API Request Payload:
|
||
{
|
||
"model": "qwen-plus",
|
||
"messages": [
|
||
{
|
||
"role": "system",
|
||
"content": "你是一位API设计评审专家,专注于评估API的URL规范性和RESTful风格。你的输出必须是严格的JSON格式。"
|
||
},
|
||
{
|
||
"role": "user",
|
||
"content": "\n请扮演一位资深的API设计评审员。我将提供一个API端点的路径模板、HTTP方法以及可能的接口名称。\n请根据以下石油行业API设计规范评估此API端点,并以严格的JSON格式返回您的评估结果。\nJSON对象应包含一个名为 \"assessments\" 的键,其值为一个对象列表,每个对象代表对一个标准的评估,包含 \"standard_name\" (字符串), \"is_compliant\" (布尔值), 和 \"reason\" (字符串) 三个键。\n\nAPI端点信息:\n- HTTP方法: POST\n- 路径模板: /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}\n- 路径中提取的参数名: [dms_instance_code, schema, version]\n\n评估标准:\n\n1. **接口名称规范 (接口名称需要你从路径模板中提取,一般是路径中除了参数名以外的最后的一个单词)**:\n - 规则: 采用'动词+名词'结构,明确业务语义 (例如: GetWellLog, SubmitSeismicJob)。\n - standard_name: \"interface_naming_convention\"\n\n2. **HTTP方法使用规范**:\n - 规则: 遵循RESTful规范:GET用于数据检索, POST用于创建资源, PUT用于更新资源, DELETE用于删除资源。\n - standard_name: \"http_method_usage\"\n\n3. **URL路径结构规范**:\n - 规则: 格式为 `<前缀>/<专业领域>/v<版本号>/<资源类型>` (例如: /logging/v1.2/wells, /seismicprospecting/v1.0/datasets)。\n - 前缀: 示例: /api/dms\n - 专业领域: 专业领域示例: seismicprospecting, welllogging, reservoirevaluation\n - 版本号: 语义化版本,例如 v1, v1.0, v2.1.3。\n - 资源类型: 通常为名词复数。\n - standard_name: \"url_path_structure\"\n\n4. **URL路径参数命名规范**:\n - 规则: 路径参数(如果存在)必须使用全小写字母(可以是一个单词)或小写字母加下划线命名(这是多个单词的情况),并能反映资源的唯一标识 (例如: {well_id},{version},{schema})。\n - standard_name: \"url_path_parameter_naming\"\n\n5. **资源命名规范 (在路径中)**:\n - 规则: 资源集合应使用名词的复数形式表示 (例如 `/wells`, `/logs`);应优先使用石油行业的标准术语 (例如用 `trajectory` 而非 `path` 来表示井轨迹)。\n - standard_name: \"resource_naming_in_path\"\n - standard_name: \"resource\"\n - standard_name: \"schema\"\n - standard_name: \"version\"\n\n\n\n请确保您的输出是一个可以被 `json.loads()` 直接解析的JSON对象。\n例如:\n{\n \"assessments\": [\n {\n \"standard_name\": \"interface_naming_convention\",\n \"is_compliant\": true,\n \"reason\": \"接口名称 'GetWellboreTrajectory' 符合动词+名词结构。\"\n },\n {\n \"standard_name\": \"http_method_usage\",\n \"is_compliant\": true,\n \"reason\": \"GET方法用于检索资源,符合规范。\"\n }\n // ... 其他标准的评估 ...\n ]\n}\n"
|
||
}
|
||
],
|
||
"max_tokens": 1024,
|
||
"temperature": 0.2
|
||
}
|
||
2025-05-26 14:59:51,690 - ddms_compliance_suite.llm_utils.llm_service - DEBUG - LLM API Response:
|
||
{
|
||
"choices": [
|
||
{
|
||
"message": {
|
||
"role": "assistant",
|
||
"content": "```json\n{\n \"assessments\": [\n {\n \"standard_name\": \"interface_naming_convention\",\n \"is_compliant\": false,\n \"reason\": \"接口名称 'push' 不符合动词+名词结构,建议改为更明确的业务语义名称,例如 'PushMessage'。\"\n },\n {\n \"standard_name\": \"http_method_usage\",\n \"is_compliant\": true,\n \"reason\": \"POST方法用于创建资源(如推送消息),符合RESTful规范。\"\n },\n {\n \"standard_name\": \"url_path_structure\",\n \"is_compliant\": true,\n \"reason\": \"URL路径结构为 '/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}',符合 `<前缀>/<专业领域>/v<版本号>/<资源类型>` 的格式。\"\n },\n {\n \"standard_name\": \"url_path_parameter_naming\",\n \"is_compliant\": true,\n \"reason\": \"路径参数 {dms_instance_code}, {schema}, {version} 均使用小写字母或下划线命名,符合命名规范。\"\n },\n {\n \"standard_name\": \"resource_naming_in_path\",\n \"is_compliant\": false,\n \"reason\": \"路径中的 'message' 和 'push' 不完全符合石油行业标准术语,建议使用更具体的资源集合名称(如 'messages')。此外,'push' 应作为操作而非资源名处理。\"\n }\n ]\n}\n```"
|
||
},
|
||
"finish_reason": "stop",
|
||
"index": 0,
|
||
"logprobs": null
|
||
}
|
||
],
|
||
"object": "chat.completion",
|
||
"usage": {
|
||
"prompt_tokens": 810,
|
||
"completion_tokens": 324,
|
||
"total_tokens": 1134,
|
||
"prompt_tokens_details": {
|
||
"cached_tokens": 0
|
||
}
|
||
},
|
||
"created": 1748242792,
|
||
"system_fingerprint": null,
|
||
"model": "qwen-plus",
|
||
"id": "chatcmpl-08a69523-abf1-9131-bcc6-b5d6f16e94ec"
|
||
}
|
||
2025-05-26 14:59:51,692 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - WARNING - LLM评估 - 标准 'interface_naming_convention' for '/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}': 不符合。原因: 接口名称 'push' 不符合动词+名词结构,建议改为更明确的业务语义名称,例如 'PushMessage'。
|
||
2025-05-26 14:59:51,692 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - LLM评估 - 标准 'http_method_usage' for '/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}': 符合。原因: POST方法用于创建资源(如推送消息),符合RESTful规范。
|
||
2025-05-26 14:59:51,692 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - LLM评估 - 标准 'url_path_structure' for '/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}': 符合。原因: URL路径结构为 '/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}',符合 `<前缀>/<专业领域>/v<版本号>/<资源类型>` 的格式。
|
||
2025-05-26 14:59:51,692 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - LLM评估 - 标准 'url_path_parameter_naming' for '/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}': 符合。原因: 路径参数 {dms_instance_code}, {schema}, {version} 均使用小写字母或下划线命名,符合命名规范。
|
||
2025-05-26 14:59:51,692 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - WARNING - LLM评估 - 标准 'resource_naming_in_path' for '/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}': 不符合。原因: 路径中的 'message' 和 'push' 不完全符合石油行业标准术语,建议使用更具体的资源集合名称(如 'messages')。此外,'push' 应作为操作而非资源名处理。
|
||
2025-05-26 14:59:51,766 - ddms_compliance_suite.test_orchestrator - DEBUG - [91m ❌ 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 执行失败。[0m
|
||
2025-05-26 14:59:51,767 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 执行完毕,状态: 失败
|
||
2025-05-26 14:59:51,767 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-001' for 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
|
||
2025-05-26 14:59:51,767 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 14:59:51,767 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 14:59:51,767 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 14:59:51,767 - testcase.TC-CORE-FUNC-001 - INFO - 测试用例 'TC-CORE-FUNC-001' 已为端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 初始化。
|
||
2025-05-26 14:59:51,767 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-001' (Response Body JSON Schema Validation) for endpoint 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
|
||
2025-05-26 14:59:51,767 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 准备初始请求数据 (TC: TC-CORE-FUNC-001)
|
||
2025-05-26 14:59:51,767 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 的LLM参数。
|
||
2025-05-26 14:59:51,767 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'schema': 'example_schema', 'version': 'example_version'}, query_params={}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 14:59:51,793 - testcase.TC-CORE-FUNC-001 - INFO - 响应包含JSON体,但在API规范中未找到针对状态码 200 的JSON schema。跳过schema验证。
|
||
2025-05-26 14:59:51,793 - ddms_compliance_suite.test_orchestrator - DEBUG - [92m ✅ 测试用例 'TC-CORE-FUNC-001' 执行成功。[0m
|
||
2025-05-26 14:59:51,793 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-001' 执行完毕,状态: 通过
|
||
2025-05-26 14:59:51,793 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-001' for 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
|
||
2025-05-26 14:59:51,793 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 14:59:51,793 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 14:59:51,793 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: HTTPSMandatoryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 14:59:51,793 - testcase.TC-SECURITY-001 - INFO - 测试用例 'TC-SECURITY-001' 已为端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 初始化。
|
||
2025-05-26 14:59:51,793 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-001' (HTTPS Protocol Mandatory Verification) for endpoint 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
|
||
2025-05-26 14:59:51,793 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 准备初始请求数据 (TC: TC-SECURITY-001)
|
||
2025-05-26 14:59:51,793 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 的LLM参数。
|
||
2025-05-26 14:59:51,793 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'schema': 'example_schema', 'version': 'example_version'}, query_params={}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 14:59:51,793 - testcase.TC-SECURITY-001 - WARNING - 原始URL 'http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/message/push/example_schema/example_version' 不是HTTPS。跳过此测试用例的URL修改。
|
||
2025-05-26 14:59:51,812 - testcase.TC-SECURITY-001 - ERROR - 安全漏洞:API允许通过HTTP成功响应 (200)。
|
||
2025-05-26 14:59:51,812 - ddms_compliance_suite.test_orchestrator - DEBUG - [91m ❌ 测试用例 'TC-SECURITY-001' 执行失败。[0m
|
||
2025-05-26 14:59:51,812 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-001' 执行完毕,状态: 失败
|
||
2025-05-26 14:59:51,812 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-QUERY' for 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
|
||
2025-05-26 14:59:51,812 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 14:59:51,812 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 14:59:51,812 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchQueryParamCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY _try_find_mismatch_target_in_query >>> STARTED
|
||
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - DEBUG - 开始为端点 POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 初始化查询参数类型不匹配测试的目标字段查找。
|
||
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY _try_find_mismatch_target_in_query >>> Parameters to be processed: [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'schema', 'in': 'path', 'required': True, 'description': '', 'schema': {'type': 'string', 'example': 'example_schema'}}, {'name': 'version', 'in': 'path', 'required': True, 'description': '', 'schema': {'type': 'string', 'example': 'example_version'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
|
||
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - DEBUG - 传入的参数列表 (在 TC-ERROR-4001-QUERY中): [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'schema', 'in': 'path', 'required': True, 'description': '', 'schema': {'type': 'string', 'example': 'example_schema'}}, {'name': 'version', 'in': 'path', 'required': True, 'description': '', 'schema': {'type': 'string', 'example': 'example_version'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
|
||
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - INFO - 最终,在端点 POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 的查询参数中,均未找到可用于测试类型不匹配的字段。
|
||
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY __INIT__ >>> STARTED
|
||
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - DEBUG - 开始为端点 POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 初始化查询参数类型不匹配测试的目标字段查找。
|
||
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY __INIT__ >>> Parameters to be processed: [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'schema', 'in': 'path', 'required': True, 'description': '', 'schema': {'type': 'string', 'example': 'example_schema'}}, {'name': 'version', 'in': 'path', 'required': True, 'description': '', 'schema': {'type': 'string', 'example': 'example_version'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
|
||
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - DEBUG - 传入的参数列表 (在 TC-ERROR-4001-QUERY中): [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'schema', 'in': 'path', 'required': True, 'description': '', 'schema': {'type': 'string', 'example': 'example_schema'}}, {'name': 'version', 'in': 'path', 'required': True, 'description': '', 'schema': {'type': 'string', 'example': 'example_version'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
|
||
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - INFO - 最终,在端点 POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 的查询参数中,均未找到可用于测试类型不匹配的字段。
|
||
2025-05-26 14:59:51,812 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-QUERY' (Error Code 4001 - Query Parameter Type Mismatch Validation) for endpoint 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
|
||
2025-05-26 14:59:51,812 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 准备初始请求数据 (TC: TC-ERROR-4001-QUERY)
|
||
2025-05-26 14:59:51,812 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 的LLM参数。
|
||
2025-05-26 14:59:51,812 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'schema': 'example_schema', 'version': 'example_version'}, query_params={}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: generate_headers, current keys: ['Accept', 'Content-Type', 'tenant-id', 'Authorization']
|
||
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - DEBUG - TC-ERROR-4001-QUERY is focused on query parameters, generate_request_body will not modify the body.
|
||
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/message/push/example_schema/example_version
|
||
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' did not modify the URL via modify_request_url hook.
|
||
2025-05-26 14:59:51,812 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/message/push/example_schema/example_version
|
||
2025-05-26 14:59:51,813 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_headers, header keys: ['Accept', 'Content-Type', 'tenant-id', 'Authorization']
|
||
2025-05-26 14:59:51,813 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_body, body type: <class 'dict'>
|
||
2025-05-26 14:59:51,832 - testcase.TC-ERROR-4001-QUERY - INFO - TC-ERROR-4001-QUERY: 由于未识别到目标查询参数字段,跳过类型不匹配测试。
|
||
2025-05-26 14:59:51,832 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: check_performance, elapsed: 0.01949787139892578
|
||
2025-05-26 14:59:51,832 - ddms_compliance_suite.test_orchestrator - DEBUG - [92m ✅ 测试用例 'TC-ERROR-4001-QUERY' 执行成功。[0m
|
||
2025-05-26 14:59:51,832 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 执行完毕,状态: 通过
|
||
2025-05-26 14:59:51,832 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-BODY' for 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
|
||
2025-05-26 14:59:51,832 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 14:59:51,833 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 14:59:51,833 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - CRITICAL - TC-ERROR-4001-BODY __INIT__ >>> STARTED
|
||
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - 开始为端点 POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 初始化请求体类型不匹配测试的目标字段查找。
|
||
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - 从顶层 'requestBody' 中获取到 schema: ['properties', 'type', '$$ref']
|
||
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - 最终用于检查的请求体 schema: ['properties', 'type', '$$ref']
|
||
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - Enter _find_target_field_in_schema for base_path: '', schema_to_search keys: ['properties', 'type', '$$ref']
|
||
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: '', Resolved Schema Type: 'object', Keys: ['properties', 'type', '$$ref']
|
||
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: '', Type is 'object'. Checking properties: ['isSearchCount', 'query']
|
||
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: 'isSearchCount', Property Schema (Original): {'default': True, 'description': '是否统计总条数', 'type': 'boolean'}
|
||
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: 'isSearchCount', Property Schema (Resolved): {'default': True, 'description': '是否统计总条数', 'type': 'boolean'}
|
||
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: 'isSearchCount', Resolved Property Type: 'boolean'
|
||
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - INFO - 目标字段(请求体): 'isSearchCount' (原始类型: 'boolean') FOUND!
|
||
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - INFO - 类型不匹配测试的目标字段(请求体): isSearchCount,原始类型: boolean
|
||
2025-05-26 14:59:51,833 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-BODY' (Error Code 4001 - Request Body Type Mismatch Validation) for endpoint 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
|
||
2025-05-26 14:59:51,833 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 准备初始请求数据 (TC: TC-ERROR-4001-BODY)
|
||
2025-05-26 14:59:51,833 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 的LLM参数。
|
||
2025-05-26 14:59:51,833 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'schema': 'example_schema', 'version': 'example_version'}, query_params={}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - TC-ERROR-4001-BODY is focused on request body, generate_query_params will not modify query parameters.
|
||
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: generate_headers, current keys: ['Accept', 'Content-Type', 'tenant-id', 'Authorization']
|
||
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - 准备修改请求体以测试类型不匹配。目标路径: ['isSearchCount'], 原始类型: boolean
|
||
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - INFO - 在路径 ['isSearchCount'] (键 'isSearchCount') 处,将值从 'True' 修改为 'not-a-boolean' (原始类型: boolean)
|
||
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/message/push/example_schema/example_version
|
||
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' did not modify the URL via modify_request_url hook.
|
||
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/message/push/example_schema/example_version
|
||
2025-05-26 14:59:51,833 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_headers, header keys: ['Accept', 'Content-Type', 'tenant-id', 'Authorization']
|
||
2025-05-26 14:59:51,834 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_body, body type: <class 'dict'>
|
||
2025-05-26 14:59:51,850 - testcase.TC-ERROR-4001-BODY - WARNING - TC-ERROR-4001-BODY: 类型不匹配测试失败。字段: body.isSearchCount, 期望状态码: [400, 422], 实际: 200。
|
||
2025-05-26 14:59:51,851 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: check_performance, elapsed: 0.016666889190673828
|
||
2025-05-26 14:59:51,851 - ddms_compliance_suite.test_orchestrator - DEBUG - [91m ❌ 测试用例 'TC-ERROR-4001-BODY' 执行失败。[0m
|
||
2025-05-26 14:59:51,851 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 执行完毕,状态: 失败
|
||
2025-05-26 14:59:51,851 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-BODY' for 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
|
||
2025-05-26 14:59:51,851 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 14:59:51,851 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 14:59:51,851 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 14:59:51,851 - testcase.TC-ERROR-4003-BODY - INFO - 在请求体 schema 中未找到可用于测试 "必填字段缺失" 的字段。
|
||
2025-05-26 14:59:51,851 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-BODY' (Error Code 4003 - Missing Required Request Body Field Validation) for endpoint 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
|
||
2025-05-26 14:59:51,851 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 准备初始请求数据 (TC: TC-ERROR-4003-BODY)
|
||
2025-05-26 14:59:51,851 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 的LLM参数。
|
||
2025-05-26 14:59:51,851 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'schema': 'example_schema', 'version': 'example_version'}, query_params={}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 14:59:51,872 - testcase.TC-ERROR-4003-BODY - INFO - 由于未识别到可移除的必填请求体字段,跳过此测试用例。
|
||
2025-05-26 14:59:51,872 - ddms_compliance_suite.test_orchestrator - DEBUG - [92m ✅ 测试用例 'TC-ERROR-4003-BODY' 执行成功。[0m
|
||
2025-05-26 14:59:51,872 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 执行完毕,状态: 通过
|
||
2025-05-26 14:59:51,872 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-QUERY' for 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
|
||
2025-05-26 14:59:51,872 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 14:59:51,872 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 14:59:51,872 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldQueryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 14:59:51,873 - testcase.TC-ERROR-4003-QUERY - INFO - 在此端点规范中未找到可用于测试 "必填查询参数缺失" 的字段。
|
||
2025-05-26 14:59:51,873 - testcase.TC-ERROR-4003-QUERY - INFO - 测试用例 TC-ERROR-4003-QUERY (Error Code 4003 - Missing Required Query Parameter Validation) 已针对端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 初始化。Target param to remove: None
|
||
2025-05-26 14:59:51,873 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-QUERY' (Error Code 4003 - Missing Required Query Parameter Validation) for endpoint 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'
|
||
2025-05-26 14:59:51,873 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 准备初始请求数据 (TC: TC-ERROR-4003-QUERY)
|
||
2025-05-26 14:59:51,873 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 的LLM参数。
|
||
2025-05-26 14:59:51,873 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_message_push_schema_version_135716] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'schema': 'example_schema', 'version': 'example_version'}, query_params={}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 14:59:51,895 - testcase.TC-ERROR-4003-QUERY - INFO - 由于未识别到可移除的必填查询参数,跳过此测试用例。
|
||
2025-05-26 14:59:51,895 - ddms_compliance_suite.test_orchestrator - DEBUG - [92m ✅ 测试用例 'TC-ERROR-4003-QUERY' 执行成功。[0m
|
||
2025-05-26 14:59:51,895 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 执行完毕,状态: 通过
|
||
2025-05-26 14:59:51,896 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 测试完成,最终状态: 失败
|
||
2025-05-26 14:59:51,896 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} (地质单元列表查询)
|
||
2025-05-26 14:59:51,896 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
|
||
2025-05-26 14:59:51,896 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
|
||
2025-05-26 14:59:51,896 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
|
||
2025-05-26 14:59:51,896 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
|
||
2025-05-26 14:59:51,896 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
|
||
2025-05-26 14:59:51,896 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
|
||
2025-05-26 14:59:51,896 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
|
||
2025-05-26 14:59:51,896 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。
|
||
2025-05-26 14:59:51,896 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 发现了 8 个适用的测试用例: ['TC-STATUS-001', 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001', 'TC-CORE-FUNC-001', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY']
|
||
2025-05-26 14:59:51,896 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
|
||
2025-05-26 14:59:51,897 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 14:59:51,897 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 14:59:51,897 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 14:59:51,897 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 初始化。
|
||
2025-05-26 14:59:51,897 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
|
||
2025-05-26 14:59:51,897 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} 准备初始请求数据 (TC: TC-STATUS-001)
|
||
2025-05-26 14:59:51,897 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 的参数未在缓存中找到,开始生成。
|
||
2025-05-26 14:59:51,898 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 使用常规方法或LLM未启用,为路径参数。
|
||
2025-05-26 14:59:51,898 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 使用常规方法生成 path 参数。
|
||
2025-05-26 14:59:51,898 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 使用 schema 中的 'example' 值 for (context: path parameter 'dms_instance_code'): example_dms_instance_code
|
||
2025-05-26 14:59:51,898 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 使用 schema 中的 'example' 值 for (context: path parameter 'version'): 1.0.0
|
||
2025-05-26 14:59:51,898 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 常规方法生成的 path 参数: {'dms_instance_code': 'example_dms_instance_code', 'version': '1.0.0'}
|
||
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 使用常规方法或LLM未启用,为查询参数。
|
||
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 使用常规方法生成 query 参数。
|
||
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: query parameter 'pageNo'): example_string
|
||
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: query parameter 'pageSize'): example_string
|
||
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 常规方法生成的 query 参数: {'pageNo': 'example_string', 'pageSize': 'example_string'}
|
||
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 使用常规方法或LLM未启用,为头部参数。
|
||
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 使用常规方法生成 header 参数。
|
||
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: header parameter 'tenant-id'): example_string
|
||
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: header parameter 'Authorization'): example_string
|
||
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 常规方法生成的 header 参数: {'tenant-id': 'example_string', 'Authorization': 'example_string'}
|
||
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 使用常规方法或LLM未启用/不适用,为请求体。
|
||
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 object 类型数据 for (context: requestBody). Properties: ['isSearchCount', 'query']
|
||
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 使用 schema 中的 'default' 值 for (context: requestBody.isSearchCount): True
|
||
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 object 类型数据 for (context: requestBody.query). Properties: ['dataRegions', 'fields', 'filter', 'groupFields', 'groupFilter', 'sort']
|
||
2025-05-26 14:59:51,899 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 array 类型数据 for (context: requestBody.query.dataRegions). Items schema: {'description': '数据域,如:JD、DG、TL', 'type': 'string'}, minItems: 1
|
||
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: requestBody.query.dataRegions[0]): example_string
|
||
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 array 类型数据 for (context: requestBody.query.fields). Items schema: {'description': '查询的字段', 'type': 'string'}, minItems: 1
|
||
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: requestBody.query.fields[0]): example_string
|
||
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 object 类型数据 for (context: requestBody.query.filter). Properties: ['key', 'logic', 'realValue', 'singleValue', 'subFilter', 'symbol']
|
||
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: requestBody.query.filter.key): example_string
|
||
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: requestBody.query.filter.logic): example_string
|
||
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 array 类型数据 for (context: requestBody.query.filter.realValue). Items schema: {'description': '条件值', 'type': 'object', 'properties': {}}, minItems: 1
|
||
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 object 类型数据 for (context: requestBody.query.filter.realValue[0]). Properties: []
|
||
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 object 类型数据 for (context: requestBody.query.filter.singleValue). Properties: []
|
||
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 array 类型数据 for (context: requestBody.query.filter.subFilter). Items schema: {'$ref': '#/components/schemas/FilterVO', 'type': 'string'}, minItems: 1
|
||
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: requestBody.query.filter.subFilter[0]): example_string
|
||
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: requestBody.query.filter.symbol): example_string
|
||
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 array 类型数据 for (context: requestBody.query.groupFields). Items schema: {'description': '分组字段group by', 'type': 'string'}, minItems: 1
|
||
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: requestBody.query.groupFields[0]): example_string
|
||
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 object 类型数据 for (context: requestBody.query.groupFilter). Properties: ['key', 'logic', 'realValue', 'singleValue', 'subFilter', 'symbol']
|
||
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: requestBody.query.groupFilter.key): example_string
|
||
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: requestBody.query.groupFilter.logic): example_string
|
||
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 array 类型数据 for (context: requestBody.query.groupFilter.realValue). Items schema: {'description': '条件值', 'type': 'object', 'properties': {}}, minItems: 1
|
||
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 object 类型数据 for (context: requestBody.query.groupFilter.realValue[0]). Properties: []
|
||
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 object 类型数据 for (context: requestBody.query.groupFilter.singleValue). Properties: []
|
||
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 array 类型数据 for (context: requestBody.query.groupFilter.subFilter). Items schema: {'$ref': '#/components/schemas/FilterVO', 'type': 'string'}, minItems: 1
|
||
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: requestBody.query.groupFilter.subFilter[0]): example_string
|
||
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 string 类型数据 ('') for (context: requestBody.query.groupFilter.symbol): example_string
|
||
2025-05-26 14:59:51,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 生成 object 类型数据 for (context: requestBody.query.sort). Properties: []
|
||
2025-05-26 14:59:51,901 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 的参数已生成并存入缓存。
|
||
2025-05-26 14:59:51,901 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] (新生成) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'version': '1.0.0'}, query_params={'pageNo': 'example_string', 'pageSize': 'example_string'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 14:59:51,919 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit/1.0.0
|
||
2025-05-26 14:59:51,919 - ddms_compliance_suite.test_orchestrator - DEBUG - [92m ✅ 测试用例 'TC-STATUS-001' 执行成功。[0m
|
||
2025-05-26 14:59:51,919 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过
|
||
2025-05-26 14:59:51,919 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' for 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
|
||
2025-05-26 14:59:51,919 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 14:59:51,919 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 14:59:51,919 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ComprehensiveURLCheckLLMCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 14:59:51,919 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' (综合URL规范与RESTful风格检查 (LLM)) for endpoint 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
|
||
2025-05-26 14:59:51,919 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} 准备初始请求数据 (TC: TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001)
|
||
2025-05-26 14:59:51,919 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 的LLM参数。
|
||
2025-05-26 14:59:51,919 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'version': '1.0.0'}, query_params={'pageNo': 'example_string', 'pageSize': 'example_string'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 14:59:51,919 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - 向LLM发送请求,评估路径: /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} (POST)
|
||
2025-05-26 14:59:51,920 - ddms_compliance_suite.llm_utils.llm_service - DEBUG - LLM API Request Payload:
|
||
{
|
||
"model": "qwen-plus",
|
||
"messages": [
|
||
{
|
||
"role": "system",
|
||
"content": "你是一位API设计评审专家,专注于评估API的URL规范性和RESTful风格。你的输出必须是严格的JSON格式。"
|
||
},
|
||
{
|
||
"role": "user",
|
||
"content": "\n请扮演一位资深的API设计评审员。我将提供一个API端点的路径模板、HTTP方法以及可能的接口名称。\n请根据以下石油行业API设计规范评估此API端点,并以严格的JSON格式返回您的评估结果。\nJSON对象应包含一个名为 \"assessments\" 的键,其值为一个对象列表,每个对象代表对一个标准的评估,包含 \"standard_name\" (字符串), \"is_compliant\" (布尔值), 和 \"reason\" (字符串) 三个键。\n\nAPI端点信息:\n- HTTP方法: POST\n- 路径模板: /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}\n- 路径中提取的参数名: [dms_instance_code, version]\n\n评估标准:\n\n1. **接口名称规范 (接口名称需要你从路径模板中提取,一般是路径中除了参数名以外的最后的一个单词)**:\n - 规则: 采用'动词+名词'结构,明确业务语义 (例如: GetWellLog, SubmitSeismicJob)。\n - standard_name: \"interface_naming_convention\"\n\n2. **HTTP方法使用规范**:\n - 规则: 遵循RESTful规范:GET用于数据检索, POST用于创建资源, PUT用于更新资源, DELETE用于删除资源。\n - standard_name: \"http_method_usage\"\n\n3. **URL路径结构规范**:\n - 规则: 格式为 `<前缀>/<专业领域>/v<版本号>/<资源类型>` (例如: /logging/v1.2/wells, /seismicprospecting/v1.0/datasets)。\n - 前缀: 示例: /api/dms\n - 专业领域: 专业领域示例: seismicprospecting, welllogging, reservoirevaluation\n - 版本号: 语义化版本,例如 v1, v1.0, v2.1.3。\n - 资源类型: 通常为名词复数。\n - standard_name: \"url_path_structure\"\n\n4. **URL路径参数命名规范**:\n - 规则: 路径参数(如果存在)必须使用全小写字母(可以是一个单词)或小写字母加下划线命名(这是多个单词的情况),并能反映资源的唯一标识 (例如: {well_id},{version},{schema})。\n - standard_name: \"url_path_parameter_naming\"\n\n5. **资源命名规范 (在路径中)**:\n - 规则: 资源集合应使用名词的复数形式表示 (例如 `/wells`, `/logs`);应优先使用石油行业的标准术语 (例如用 `trajectory` 而非 `path` 来表示井轨迹)。\n - standard_name: \"resource_naming_in_path\"\n - standard_name: \"resource\"\n - standard_name: \"schema\"\n - standard_name: \"version\"\n\n\n\n请确保您的输出是一个可以被 `json.loads()` 直接解析的JSON对象。\n例如:\n{\n \"assessments\": [\n {\n \"standard_name\": \"interface_naming_convention\",\n \"is_compliant\": true,\n \"reason\": \"接口名称 'GetWellboreTrajectory' 符合动词+名词结构。\"\n },\n {\n \"standard_name\": \"http_method_usage\",\n \"is_compliant\": true,\n \"reason\": \"GET方法用于检索资源,符合规范。\"\n }\n // ... 其他标准的评估 ...\n ]\n}\n"
|
||
}
|
||
],
|
||
"max_tokens": 1024,
|
||
"temperature": 0.2
|
||
}
|
||
2025-05-26 15:00:11,869 - ddms_compliance_suite.llm_utils.llm_service - DEBUG - LLM API Response:
|
||
{
|
||
"choices": [
|
||
{
|
||
"message": {
|
||
"role": "assistant",
|
||
"content": "{\n \"assessments\": [\n {\n \"standard_name\": \"interface_naming_convention\",\n \"is_compliant\": false,\n \"reason\": \"接口名称 'cd_geo_unit' 不符合动词+名词结构,无法明确表达业务语义。\"\n },\n {\n \"standard_name\": \"http_method_usage\",\n \"is_compliant\": true,\n \"reason\": \"POST方法用于创建资源,符合RESTful规范。\"\n },\n {\n \"standard_name\": \"url_path_structure\",\n \"is_compliant\": false,\n \"reason\": \"路径模板不符合 `<前缀>/<专业领域>/v<版本号>/<资源类型>` 的结构,其中 `cd_geo_unit` 不是石油行业的标准术语,且未明确表示资源集合的复数形式。\"\n },\n {\n \"standard_name\": \"url_path_parameter_naming\",\n \"is_compliant\": true,\n \"reason\": \"路径参数 `{dms_instance_code}` 和 `{version}` 均使用小写字母命名,符合命名规则。\"\n },\n {\n \"standard_name\": \"resource_naming_in_path\",\n \"is_compliant\": false,\n \"reason\": \"`cd_geo_unit` 应使用名词复数形式表示资源集合,并优先采用石油行业的标准术语。例如,可以考虑更改为 `geo_units` 或其他更具体的术语。\"\n }\n ]\n}"
|
||
},
|
||
"finish_reason": "stop",
|
||
"index": 0,
|
||
"logprobs": null
|
||
}
|
||
],
|
||
"object": "chat.completion",
|
||
"usage": {
|
||
"prompt_tokens": 807,
|
||
"completion_tokens": 298,
|
||
"total_tokens": 1105,
|
||
"prompt_tokens_details": {
|
||
"cached_tokens": 0
|
||
}
|
||
},
|
||
"created": 1748242812,
|
||
"system_fingerprint": null,
|
||
"model": "qwen-plus",
|
||
"id": "chatcmpl-3ce6bbde-e584-9c6f-9024-897fcdee1dad"
|
||
}
|
||
2025-05-26 15:00:11,874 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - WARNING - LLM评估 - 标准 'interface_naming_convention' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}': 不符合。原因: 接口名称 'cd_geo_unit' 不符合动词+名词结构,无法明确表达业务语义。
|
||
2025-05-26 15:00:11,875 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - LLM评估 - 标准 'http_method_usage' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}': 符合。原因: POST方法用于创建资源,符合RESTful规范。
|
||
2025-05-26 15:00:11,875 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - WARNING - LLM评估 - 标准 'url_path_structure' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}': 不符合。原因: 路径模板不符合 `<前缀>/<专业领域>/v<版本号>/<资源类型>` 的结构,其中 `cd_geo_unit` 不是石油行业的标准术语,且未明确表示资源集合的复数形式。
|
||
2025-05-26 15:00:11,875 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - LLM评估 - 标准 'url_path_parameter_naming' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}': 符合。原因: 路径参数 `{dms_instance_code}` 和 `{version}` 均使用小写字母命名,符合命名规则。
|
||
2025-05-26 15:00:11,875 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - WARNING - LLM评估 - 标准 'resource_naming_in_path' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}': 不符合。原因: `cd_geo_unit` 应使用名词复数形式表示资源集合,并优先采用石油行业的标准术语。例如,可以考虑更改为 `geo_units` 或其他更具体的术语。
|
||
2025-05-26 15:00:11,957 - ddms_compliance_suite.test_orchestrator - DEBUG - [91m ❌ 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 执行失败。[0m
|
||
2025-05-26 15:00:11,957 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 执行完毕,状态: 失败
|
||
2025-05-26 15:00:11,957 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-001' for 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
|
||
2025-05-26 15:00:11,957 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 15:00:11,957 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 15:00:11,957 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 15:00:11,957 - testcase.TC-CORE-FUNC-001 - INFO - 测试用例 'TC-CORE-FUNC-001' 已为端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 初始化。
|
||
2025-05-26 15:00:11,958 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-001' (Response Body JSON Schema Validation) for endpoint 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
|
||
2025-05-26 15:00:11,958 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} 准备初始请求数据 (TC: TC-CORE-FUNC-001)
|
||
2025-05-26 15:00:11,958 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 的LLM参数。
|
||
2025-05-26 15:00:11,958 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'version': '1.0.0'}, query_params={'pageNo': 'example_string', 'pageSize': 'example_string'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 15:00:11,984 - testcase.TC-CORE-FUNC-001 - INFO - 响应包含JSON体,但在API规范中未找到针对状态码 200 的JSON schema。跳过schema验证。
|
||
2025-05-26 15:00:11,984 - ddms_compliance_suite.test_orchestrator - DEBUG - [92m ✅ 测试用例 'TC-CORE-FUNC-001' 执行成功。[0m
|
||
2025-05-26 15:00:11,984 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-001' 执行完毕,状态: 通过
|
||
2025-05-26 15:00:11,984 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-001' for 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
|
||
2025-05-26 15:00:11,984 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 15:00:11,984 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 15:00:11,984 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: HTTPSMandatoryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 15:00:11,984 - testcase.TC-SECURITY-001 - INFO - 测试用例 'TC-SECURITY-001' 已为端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 初始化。
|
||
2025-05-26 15:00:11,985 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-001' (HTTPS Protocol Mandatory Verification) for endpoint 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
|
||
2025-05-26 15:00:11,985 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} 准备初始请求数据 (TC: TC-SECURITY-001)
|
||
2025-05-26 15:00:11,985 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 的LLM参数。
|
||
2025-05-26 15:00:11,985 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'version': '1.0.0'}, query_params={'pageNo': 'example_string', 'pageSize': 'example_string'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 15:00:11,985 - testcase.TC-SECURITY-001 - WARNING - 原始URL 'http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit/1.0.0' 不是HTTPS。跳过此测试用例的URL修改。
|
||
2025-05-26 15:00:12,004 - testcase.TC-SECURITY-001 - ERROR - 安全漏洞:API允许通过HTTP成功响应 (200)。
|
||
2025-05-26 15:00:12,004 - ddms_compliance_suite.test_orchestrator - DEBUG - [91m ❌ 测试用例 'TC-SECURITY-001' 执行失败。[0m
|
||
2025-05-26 15:00:12,004 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-001' 执行完毕,状态: 失败
|
||
2025-05-26 15:00:12,004 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-QUERY' for 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
|
||
2025-05-26 15:00:12,004 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 15:00:12,004 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 15:00:12,004 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchQueryParamCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 15:00:12,004 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' initialized for endpoint: POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}
|
||
2025-05-26 15:00:12,004 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY _try_find_mismatch_target_in_query >>> STARTED
|
||
2025-05-26 15:00:12,004 - testcase.TC-ERROR-4001-QUERY - DEBUG - 开始为端点 POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} 初始化查询参数类型不匹配测试的目标字段查找。
|
||
2025-05-26 15:00:12,004 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY _try_find_mismatch_target_in_query >>> Parameters to be processed: [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'version', 'in': 'path', 'required': True, 'description': '交换模型版本', 'schema': {'type': 'string', 'example': '1.0.0'}}, {'name': 'pageNo', 'in': 'query', 'required': False, 'description': '页码(从1开始)', 'schema': {'type': 'string'}}, {'name': 'pageSize', 'in': 'query', 'required': False, 'description': '分页大小(最大值200)', 'schema': {'type': 'string'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
|
||
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - 传入的参数列表 (在 TC-ERROR-4001-QUERY中): [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'version', 'in': 'path', 'required': True, 'description': '交换模型版本', 'schema': {'type': 'string', 'example': '1.0.0'}}, {'name': 'pageNo', 'in': 'query', 'required': False, 'description': '页码(从1开始)', 'schema': {'type': 'string'}}, {'name': 'pageSize', 'in': 'query', 'required': False, 'description': '分页大小(最大值200)', 'schema': {'type': 'string'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
|
||
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - 检查查询参数: 'pageNo'
|
||
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - 查询参数 'pageNo' 包含嵌套 schema,尝试在其内部查找简单类型字段。
|
||
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - INFO - 目标字段(查询参数 - schema为简单类型): pageNo,原始类型: string
|
||
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY __INIT__ >>> STARTED
|
||
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - 开始为端点 POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} 初始化查询参数类型不匹配测试的目标字段查找。
|
||
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY __INIT__ >>> Parameters to be processed: [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'version', 'in': 'path', 'required': True, 'description': '交换模型版本', 'schema': {'type': 'string', 'example': '1.0.0'}}, {'name': 'pageNo', 'in': 'query', 'required': False, 'description': '页码(从1开始)', 'schema': {'type': 'string'}}, {'name': 'pageSize', 'in': 'query', 'required': False, 'description': '分页大小(最大值200)', 'schema': {'type': 'string'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
|
||
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - 传入的参数列表 (在 TC-ERROR-4001-QUERY中): [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'version', 'in': 'path', 'required': True, 'description': '交换模型版本', 'schema': {'type': 'string', 'example': '1.0.0'}}, {'name': 'pageNo', 'in': 'query', 'required': False, 'description': '页码(从1开始)', 'schema': {'type': 'string'}}, {'name': 'pageSize', 'in': 'query', 'required': False, 'description': '分页大小(最大值200)', 'schema': {'type': 'string'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
|
||
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - 检查查询参数: 'pageNo'
|
||
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - 查询参数 'pageNo' 包含嵌套 schema,尝试在其内部查找简单类型字段。
|
||
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - INFO - 目标字段(查询参数 - schema为简单类型): pageNo,原始类型: string
|
||
2025-05-26 15:00:12,005 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-QUERY' (Error Code 4001 - Query Parameter Type Mismatch Validation) for endpoint 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
|
||
2025-05-26 15:00:12,005 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} 准备初始请求数据 (TC: TC-ERROR-4001-QUERY)
|
||
2025-05-26 15:00:12,005 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 的LLM参数。
|
||
2025-05-26 15:00:12,005 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'version': '1.0.0'}, query_params={'pageNo': 'example_string', 'pageSize': 'example_string'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - 准备修改查询参数以测试类型不匹配。目标路径: ['pageNo'], 原始类型: string
|
||
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - INFO - 在查询参数路径 ['pageNo'] (键 'pageNo') 处,将值从 'example_string' 修改为 '12345' (原始类型: string)
|
||
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: generate_headers, current keys: ['Accept', 'Content-Type', 'tenant-id', 'Authorization']
|
||
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - TC-ERROR-4001-QUERY is focused on query parameters, generate_request_body will not modify the body.
|
||
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit/1.0.0
|
||
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' did not modify the URL via modify_request_url hook.
|
||
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit/1.0.0
|
||
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_headers, header keys: ['Accept', 'Content-Type', 'tenant-id', 'Authorization']
|
||
2025-05-26 15:00:12,005 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_body, body type: <class 'dict'>
|
||
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-QUERY - WARNING - TC-ERROR-4001-QUERY: 类型不匹配测试失败。字段: query.pageNo, 期望状态码: [400, 422], 实际: 200。
|
||
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: check_performance, elapsed: 0.03896188735961914
|
||
2025-05-26 15:00:12,045 - ddms_compliance_suite.test_orchestrator - DEBUG - [91m ❌ 测试用例 'TC-ERROR-4001-QUERY' 执行失败。[0m
|
||
2025-05-26 15:00:12,045 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 执行完毕,状态: 失败
|
||
2025-05-26 15:00:12,045 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-BODY' for 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
|
||
2025-05-26 15:00:12,045 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 15:00:12,045 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 15:00:12,045 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' initialized for endpoint: POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}
|
||
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-BODY - CRITICAL - TC-ERROR-4001-BODY __INIT__ >>> STARTED
|
||
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-BODY - DEBUG - 开始为端点 POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} 初始化请求体类型不匹配测试的目标字段查找。
|
||
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-BODY - DEBUG - 从顶层 'requestBody' 中获取到 schema: ['properties', 'type', '$$ref']
|
||
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-BODY - DEBUG - 最终用于检查的请求体 schema: ['properties', 'type', '$$ref']
|
||
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-BODY - DEBUG - Enter _find_target_field_in_schema for base_path: '', schema_to_search keys: ['properties', 'type', '$$ref']
|
||
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: '', Resolved Schema Type: 'object', Keys: ['properties', 'type', '$$ref']
|
||
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: '', Type is 'object'. Checking properties: ['isSearchCount', 'query']
|
||
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: 'isSearchCount', Property Schema (Original): {'default': True, 'description': '是否统计总条数', 'type': 'boolean'}
|
||
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: 'isSearchCount', Property Schema (Resolved): {'default': True, 'description': '是否统计总条数', 'type': 'boolean'}
|
||
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: 'isSearchCount', Resolved Property Type: 'boolean'
|
||
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-BODY - INFO - 目标字段(请求体): 'isSearchCount' (原始类型: 'boolean') FOUND!
|
||
2025-05-26 15:00:12,045 - testcase.TC-ERROR-4001-BODY - INFO - 类型不匹配测试的目标字段(请求体): isSearchCount,原始类型: boolean
|
||
2025-05-26 15:00:12,045 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-BODY' (Error Code 4001 - Request Body Type Mismatch Validation) for endpoint 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
|
||
2025-05-26 15:00:12,045 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} 准备初始请求数据 (TC: TC-ERROR-4001-BODY)
|
||
2025-05-26 15:00:12,045 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 的LLM参数。
|
||
2025-05-26 15:00:12,045 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'version': '1.0.0'}, query_params={'pageNo': 'example_string', 'pageSize': 'example_string'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 15:00:12,046 - testcase.TC-ERROR-4001-BODY - DEBUG - TC-ERROR-4001-BODY is focused on request body, generate_query_params will not modify query parameters.
|
||
2025-05-26 15:00:12,046 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: generate_headers, current keys: ['Accept', 'Content-Type', 'tenant-id', 'Authorization']
|
||
2025-05-26 15:00:12,046 - testcase.TC-ERROR-4001-BODY - DEBUG - 准备修改请求体以测试类型不匹配。目标路径: ['isSearchCount'], 原始类型: boolean
|
||
2025-05-26 15:00:12,046 - testcase.TC-ERROR-4001-BODY - INFO - 在路径 ['isSearchCount'] (键 'isSearchCount') 处,将值从 'True' 修改为 'not-a-boolean' (原始类型: boolean)
|
||
2025-05-26 15:00:12,046 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit/1.0.0
|
||
2025-05-26 15:00:12,046 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' did not modify the URL via modify_request_url hook.
|
||
2025-05-26 15:00:12,046 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit/1.0.0
|
||
2025-05-26 15:00:12,046 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_headers, header keys: ['Accept', 'Content-Type', 'tenant-id', 'Authorization']
|
||
2025-05-26 15:00:12,046 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_body, body type: <class 'dict'>
|
||
2025-05-26 15:00:12,063 - testcase.TC-ERROR-4001-BODY - WARNING - TC-ERROR-4001-BODY: 类型不匹配测试失败。字段: body.isSearchCount, 期望状态码: [400, 422], 实际: 200。
|
||
2025-05-26 15:00:12,063 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: check_performance, elapsed: 0.016969919204711914
|
||
2025-05-26 15:00:12,063 - ddms_compliance_suite.test_orchestrator - DEBUG - [91m ❌ 测试用例 'TC-ERROR-4001-BODY' 执行失败。[0m
|
||
2025-05-26 15:00:12,063 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 执行完毕,状态: 失败
|
||
2025-05-26 15:00:12,063 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-BODY' for 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
|
||
2025-05-26 15:00:12,063 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 15:00:12,063 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 15:00:12,063 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 15:00:12,064 - testcase.TC-ERROR-4003-BODY - INFO - 在请求体 schema 中未找到可用于测试 "必填字段缺失" 的字段。
|
||
2025-05-26 15:00:12,064 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-BODY' (Error Code 4003 - Missing Required Request Body Field Validation) for endpoint 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
|
||
2025-05-26 15:00:12,064 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} 准备初始请求数据 (TC: TC-ERROR-4003-BODY)
|
||
2025-05-26 15:00:12,064 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 的LLM参数。
|
||
2025-05-26 15:00:12,064 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'version': '1.0.0'}, query_params={'pageNo': 'example_string', 'pageSize': 'example_string'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 15:00:12,081 - testcase.TC-ERROR-4003-BODY - INFO - 由于未识别到可移除的必填请求体字段,跳过此测试用例。
|
||
2025-05-26 15:00:12,081 - ddms_compliance_suite.test_orchestrator - DEBUG - [92m ✅ 测试用例 'TC-ERROR-4003-BODY' 执行成功。[0m
|
||
2025-05-26 15:00:12,081 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 执行完毕,状态: 通过
|
||
2025-05-26 15:00:12,081 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-QUERY' for 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
|
||
2025-05-26 15:00:12,081 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 15:00:12,081 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 15:00:12,081 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldQueryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 15:00:12,081 - testcase.TC-ERROR-4003-QUERY - INFO - 在此端点规范中未找到可用于测试 "必填查询参数缺失" 的字段。
|
||
2025-05-26 15:00:12,081 - testcase.TC-ERROR-4003-QUERY - INFO - 测试用例 TC-ERROR-4003-QUERY (Error Code 4003 - Missing Required Query Parameter Validation) 已针对端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 初始化。Target param to remove: None
|
||
2025-05-26 15:00:12,081 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-QUERY' (Error Code 4003 - Missing Required Query Parameter Validation) for endpoint 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'
|
||
2025-05-26 15:00:12,081 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} 准备初始请求数据 (TC: TC-ERROR-4003-QUERY)
|
||
2025-05-26 15:00:12,081 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 的LLM参数。
|
||
2025-05-26 15:00:12,082 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_version_135751] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code', 'version': '1.0.0'}, query_params={'pageNo': 'example_string', 'pageSize': 'example_string'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 15:00:12,098 - testcase.TC-ERROR-4003-QUERY - INFO - 由于未识别到可移除的必填查询参数,跳过此测试用例。
|
||
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_orchestrator - DEBUG - [92m ✅ 测试用例 'TC-ERROR-4003-QUERY' 执行成功。[0m
|
||
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 执行完毕,状态: 通过
|
||
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 测试完成,最终状态: 失败
|
||
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit (地质单元数据修改)
|
||
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit' 发现了 8 个适用的测试用例: ['TC-STATUS-001', 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001', 'TC-CORE-FUNC-001', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY']
|
||
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 15:00:12,098 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 15:00:12,099 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit' 初始化。
|
||
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 开始为端点 PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-STATUS-001)
|
||
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 端点 'PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的参数未在缓存中找到,开始生成。
|
||
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 使用常规方法或LLM未启用,为路径参数。
|
||
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 使用常规方法生成 path 参数。
|
||
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 使用 schema 中的 'example' 值 for (context: path parameter 'dms_instance_code'): example_dms_instance_code
|
||
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 常规方法生成的 path 参数: {'dms_instance_code': 'example_dms_instance_code'}
|
||
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 使用常规方法或LLM未启用,为查询参数。
|
||
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 使用常规方法生成 query 参数。
|
||
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 使用 schema 中的 'example' 值 for (context: query parameter 'id'): dsid
|
||
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 常规方法生成的 query 参数: {'id': 'dsid'}
|
||
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 使用常规方法或LLM未启用,为头部参数。
|
||
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 使用常规方法生成 header 参数。
|
||
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 生成 string 类型数据 ('') for (context: header parameter 'tenant-id'): example_string
|
||
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 生成 string 类型数据 ('') for (context: header parameter 'Authorization'): example_string
|
||
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 常规方法生成的 header 参数: {'tenant-id': 'example_string', 'Authorization': 'example_string'}
|
||
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 使用常规方法或LLM未启用/不适用,为请求体。
|
||
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 生成 object 类型数据 for (context: requestBody). Properties: ['version', 'data']
|
||
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 生成 string 类型数据 ('') for (context: requestBody.version): example_string
|
||
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 生成 array 类型数据 for (context: requestBody.data). Items schema: {'type': 'object', 'properties': {'bsflag': {'type': 'number'}, 'wellCommonName': {'type': 'string'}, 'wellId': {'type': 'string'}, 'dataRegion': {'type': 'string'}}, 'required': ['bsflag', 'wellCommonName', 'wellId', 'dataRegion']}, minItems: 1
|
||
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 生成 object 类型数据 for (context: requestBody.data[0]). Properties: ['bsflag', 'wellCommonName', 'wellId', 'dataRegion']
|
||
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 生成 number/integer 类型数据 for (context: requestBody.data[0].bsflag): 0.0
|
||
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 生成 string 类型数据 ('') for (context: requestBody.data[0].wellCommonName): example_string
|
||
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 生成 string 类型数据 ('') for (context: requestBody.data[0].wellId): example_string
|
||
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 生成 string 类型数据 ('') for (context: requestBody.data[0].dataRegion): example_string
|
||
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 端点 'PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的参数已生成并存入缓存。
|
||
2025-05-26 15:00:12,099 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] (新生成) 准备的请求数据: method=PUT, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 15:00:12,119 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit
|
||
2025-05-26 15:00:12,119 - ddms_compliance_suite.test_orchestrator - DEBUG - [92m ✅ 测试用例 'TC-STATUS-001' 执行成功。[0m
|
||
2025-05-26 15:00:12,119 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过
|
||
2025-05-26 15:00:12,119 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' for 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:12,119 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 15:00:12,119 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 15:00:12,119 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ComprehensiveURLCheckLLMCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 15:00:12,119 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' (综合URL规范与RESTful风格检查 (LLM)) for endpoint 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:12,119 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 开始为端点 PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001)
|
||
2025-05-26 15:00:12,119 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 从缓存加载了端点 'PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
|
||
2025-05-26 15:00:12,119 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] (缓存加载) 准备的请求数据: method=PUT, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 15:00:12,119 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - 向LLM发送请求,评估路径: /api/dms/{dms_instance_code}/v1/cd_geo_unit (PUT)
|
||
2025-05-26 15:00:12,120 - ddms_compliance_suite.llm_utils.llm_service - DEBUG - LLM API Request Payload:
|
||
{
|
||
"model": "qwen-plus",
|
||
"messages": [
|
||
{
|
||
"role": "system",
|
||
"content": "你是一位API设计评审专家,专注于评估API的URL规范性和RESTful风格。你的输出必须是严格的JSON格式。"
|
||
},
|
||
{
|
||
"role": "user",
|
||
"content": "\n请扮演一位资深的API设计评审员。我将提供一个API端点的路径模板、HTTP方法以及可能的接口名称。\n请根据以下石油行业API设计规范评估此API端点,并以严格的JSON格式返回您的评估结果。\nJSON对象应包含一个名为 \"assessments\" 的键,其值为一个对象列表,每个对象代表对一个标准的评估,包含 \"standard_name\" (字符串), \"is_compliant\" (布尔值), 和 \"reason\" (字符串) 三个键。\n\nAPI端点信息:\n- HTTP方法: PUT\n- 路径模板: /api/dms/{dms_instance_code}/v1/cd_geo_unit\n- 路径中提取的参数名: [dms_instance_code]\n\n评估标准:\n\n1. **接口名称规范 (接口名称需要你从路径模板中提取,一般是路径中除了参数名以外的最后的一个单词)**:\n - 规则: 采用'动词+名词'结构,明确业务语义 (例如: GetWellLog, SubmitSeismicJob)。\n - standard_name: \"interface_naming_convention\"\n\n2. **HTTP方法使用规范**:\n - 规则: 遵循RESTful规范:GET用于数据检索, POST用于创建资源, PUT用于更新资源, DELETE用于删除资源。\n - standard_name: \"http_method_usage\"\n\n3. **URL路径结构规范**:\n - 规则: 格式为 `<前缀>/<专业领域>/v<版本号>/<资源类型>` (例如: /logging/v1.2/wells, /seismicprospecting/v1.0/datasets)。\n - 前缀: 示例: /api/dms\n - 专业领域: 专业领域示例: seismicprospecting, welllogging, reservoirevaluation\n - 版本号: 语义化版本,例如 v1, v1.0, v2.1.3。\n - 资源类型: 通常为名词复数。\n - standard_name: \"url_path_structure\"\n\n4. **URL路径参数命名规范**:\n - 规则: 路径参数(如果存在)必须使用全小写字母(可以是一个单词)或小写字母加下划线命名(这是多个单词的情况),并能反映资源的唯一标识 (例如: {well_id},{version},{schema})。\n - standard_name: \"url_path_parameter_naming\"\n\n5. **资源命名规范 (在路径中)**:\n - 规则: 资源集合应使用名词的复数形式表示 (例如 `/wells`, `/logs`);应优先使用石油行业的标准术语 (例如用 `trajectory` 而非 `path` 来表示井轨迹)。\n - standard_name: \"resource_naming_in_path\"\n - standard_name: \"resource\"\n - standard_name: \"schema\"\n - standard_name: \"version\"\n\n\n\n请确保您的输出是一个可以被 `json.loads()` 直接解析的JSON对象。\n例如:\n{\n \"assessments\": [\n {\n \"standard_name\": \"interface_naming_convention\",\n \"is_compliant\": true,\n \"reason\": \"接口名称 'GetWellboreTrajectory' 符合动词+名词结构。\"\n },\n {\n \"standard_name\": \"http_method_usage\",\n \"is_compliant\": true,\n \"reason\": \"GET方法用于检索资源,符合规范。\"\n }\n // ... 其他标准的评估 ...\n ]\n}\n"
|
||
}
|
||
],
|
||
"max_tokens": 1024,
|
||
"temperature": 0.2
|
||
}
|
||
2025-05-26 15:00:24,176 - ddms_compliance_suite.llm_utils.llm_service - DEBUG - LLM API Response:
|
||
{
|
||
"choices": [
|
||
{
|
||
"message": {
|
||
"role": "assistant",
|
||
"content": "{\n \"assessments\": [\n {\n \"standard_name\": \"interface_naming_convention\",\n \"is_compliant\": false,\n \"reason\": \"接口名称 'cd_geo_unit' 不符合动词+名词结构,无法明确表达业务语义。\"\n },\n {\n \"standard_name\": \"http_method_usage\",\n \"is_compliant\": true,\n \"reason\": \"PUT方法用于更新资源,符合RESTful规范。\"\n },\n {\n \"standard_name\": \"url_path_structure\",\n \"is_compliant\": true,\n \"reason\": \"路径结构 '/api/dms/{dms_instance_code}/v1/cd_geo_unit' 符合 `<前缀>/<专业领域>/v<版本号>/<资源类型>` 的格式要求。\"\n },\n {\n \"standard_name\": \"url_path_parameter_naming\",\n \"is_compliant\": true,\n \"reason\": \"路径参数 '{dms_instance_code}' 使用了小写字母加下划线的命名方式,符合规范。\"\n },\n {\n \"standard_name\": \"resource_naming_in_path\",\n \"is_compliant\": false,\n \"reason\": \"'cd_geo_unit' 应使用复数形式表示资源集合,并且应优先使用石油行业的标准术语(例如 'geological_units')。\"\n }\n ]\n}"
|
||
},
|
||
"finish_reason": "stop",
|
||
"index": 0,
|
||
"logprobs": null
|
||
}
|
||
],
|
||
"object": "chat.completion",
|
||
"usage": {
|
||
"prompt_tokens": 803,
|
||
"completion_tokens": 285,
|
||
"total_tokens": 1088,
|
||
"prompt_tokens_details": {
|
||
"cached_tokens": 0
|
||
}
|
||
},
|
||
"created": 1748242824,
|
||
"system_fingerprint": null,
|
||
"model": "qwen-plus",
|
||
"id": "chatcmpl-432a0881-3667-9874-92bd-9a3c322cd4b6"
|
||
}
|
||
2025-05-26 15:00:24,177 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - WARNING - LLM评估 - 标准 'interface_naming_convention' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit': 不符合。原因: 接口名称 'cd_geo_unit' 不符合动词+名词结构,无法明确表达业务语义。
|
||
2025-05-26 15:00:24,177 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - LLM评估 - 标准 'http_method_usage' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit': 符合。原因: PUT方法用于更新资源,符合RESTful规范。
|
||
2025-05-26 15:00:24,177 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - LLM评估 - 标准 'url_path_structure' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit': 符合。原因: 路径结构 '/api/dms/{dms_instance_code}/v1/cd_geo_unit' 符合 `<前缀>/<专业领域>/v<版本号>/<资源类型>` 的格式要求。
|
||
2025-05-26 15:00:24,177 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - LLM评估 - 标准 'url_path_parameter_naming' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit': 符合。原因: 路径参数 '{dms_instance_code}' 使用了小写字母加下划线的命名方式,符合规范。
|
||
2025-05-26 15:00:24,177 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - WARNING - LLM评估 - 标准 'resource_naming_in_path' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit': 不符合。原因: 'cd_geo_unit' 应使用复数形式表示资源集合,并且应优先使用石油行业的标准术语(例如 'geological_units')。
|
||
2025-05-26 15:00:24,250 - ddms_compliance_suite.test_orchestrator - DEBUG - [91m ❌ 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 执行失败。[0m
|
||
2025-05-26 15:00:24,251 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 执行完毕,状态: 失败
|
||
2025-05-26 15:00:24,251 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-001' for 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:24,251 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 15:00:24,251 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 15:00:24,251 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 15:00:24,252 - testcase.TC-CORE-FUNC-001 - INFO - 测试用例 'TC-CORE-FUNC-001' 已为端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit' 初始化。
|
||
2025-05-26 15:00:24,253 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-001' (Response Body JSON Schema Validation) for endpoint 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:24,253 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 开始为端点 PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-CORE-FUNC-001)
|
||
2025-05-26 15:00:24,254 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 从缓存加载了端点 'PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
|
||
2025-05-26 15:00:24,254 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] (缓存加载) 准备的请求数据: method=PUT, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 15:00:24,289 - testcase.TC-CORE-FUNC-001 - INFO - 将根据路径 'responses.200.content.application/json.schema' 的schema验证响应体。
|
||
2025-05-26 15:00:24,296 - ddms_compliance_suite.test_orchestrator - DEBUG - [92m ✅ 测试用例 'TC-CORE-FUNC-001' 执行成功。[0m
|
||
2025-05-26 15:00:24,296 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-001' 执行完毕,状态: 通过
|
||
2025-05-26 15:00:24,296 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-001' for 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:24,296 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 15:00:24,296 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 15:00:24,297 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: HTTPSMandatoryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 15:00:24,297 - testcase.TC-SECURITY-001 - INFO - 测试用例 'TC-SECURITY-001' 已为端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit' 初始化。
|
||
2025-05-26 15:00:24,297 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-001' (HTTPS Protocol Mandatory Verification) for endpoint 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:24,297 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 开始为端点 PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-SECURITY-001)
|
||
2025-05-26 15:00:24,297 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 从缓存加载了端点 'PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
|
||
2025-05-26 15:00:24,297 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] (缓存加载) 准备的请求数据: method=PUT, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 15:00:24,297 - testcase.TC-SECURITY-001 - WARNING - 原始URL 'http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit' 不是HTTPS。跳过此测试用例的URL修改。
|
||
2025-05-26 15:00:24,322 - testcase.TC-SECURITY-001 - ERROR - 安全漏洞:API允许通过HTTP成功响应 (200)。
|
||
2025-05-26 15:00:24,323 - ddms_compliance_suite.test_orchestrator - DEBUG - [91m ❌ 测试用例 'TC-SECURITY-001' 执行失败。[0m
|
||
2025-05-26 15:00:24,323 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-001' 执行完毕,状态: 失败
|
||
2025-05-26 15:00:24,323 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-QUERY' for 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:24,323 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 15:00:24,323 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 15:00:24,323 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchQueryParamCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' initialized for endpoint: PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit
|
||
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY _try_find_mismatch_target_in_query >>> STARTED
|
||
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - DEBUG - 开始为端点 PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit 初始化查询参数类型不匹配测试的目标字段查找。
|
||
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY _try_find_mismatch_target_in_query >>> Parameters to be processed: [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'id', 'in': 'query', 'required': True, 'description': '主键id的key', 'schema': {'type': 'string', 'example': 'dsid'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
|
||
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - DEBUG - 传入的参数列表 (在 TC-ERROR-4001-QUERY中): [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'id', 'in': 'query', 'required': True, 'description': '主键id的key', 'schema': {'type': 'string', 'example': 'dsid'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
|
||
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - DEBUG - 检查查询参数: 'id'
|
||
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - DEBUG - 查询参数 'id' 包含嵌套 schema,尝试在其内部查找简单类型字段。
|
||
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - INFO - 目标字段(查询参数 - schema为简单类型): id,原始类型: string
|
||
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY __INIT__ >>> STARTED
|
||
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - DEBUG - 开始为端点 PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit 初始化查询参数类型不匹配测试的目标字段查找。
|
||
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY __INIT__ >>> Parameters to be processed: [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'id', 'in': 'query', 'required': True, 'description': '主键id的key', 'schema': {'type': 'string', 'example': 'dsid'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
|
||
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - DEBUG - 传入的参数列表 (在 TC-ERROR-4001-QUERY中): [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'id', 'in': 'query', 'required': True, 'description': '主键id的key', 'schema': {'type': 'string', 'example': 'dsid'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
|
||
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - DEBUG - 检查查询参数: 'id'
|
||
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - DEBUG - 查询参数 'id' 包含嵌套 schema,尝试在其内部查找简单类型字段。
|
||
2025-05-26 15:00:24,323 - testcase.TC-ERROR-4001-QUERY - INFO - 目标字段(查询参数 - schema为简单类型): id,原始类型: string
|
||
2025-05-26 15:00:24,323 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-QUERY' (Error Code 4001 - Query Parameter Type Mismatch Validation) for endpoint 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:24,323 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 开始为端点 PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-ERROR-4001-QUERY)
|
||
2025-05-26 15:00:24,324 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 从缓存加载了端点 'PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
|
||
2025-05-26 15:00:24,324 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] (缓存加载) 准备的请求数据: method=PUT, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 15:00:24,324 - testcase.TC-ERROR-4001-QUERY - DEBUG - 准备修改查询参数以测试类型不匹配。目标路径: ['id'], 原始类型: string
|
||
2025-05-26 15:00:24,324 - testcase.TC-ERROR-4001-QUERY - INFO - 在查询参数路径 ['id'] (键 'id') 处,将值从 'dsid' 修改为 '12345' (原始类型: string)
|
||
2025-05-26 15:00:24,324 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: generate_headers, current keys: ['Accept', 'Content-Type', 'tenant-id', 'Authorization']
|
||
2025-05-26 15:00:24,324 - testcase.TC-ERROR-4001-QUERY - DEBUG - TC-ERROR-4001-QUERY is focused on query parameters, generate_request_body will not modify the body.
|
||
2025-05-26 15:00:24,324 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit
|
||
2025-05-26 15:00:24,324 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' did not modify the URL via modify_request_url hook.
|
||
2025-05-26 15:00:24,324 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit
|
||
2025-05-26 15:00:24,324 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_headers, header keys: ['Accept', 'Content-Type', 'tenant-id', 'Authorization']
|
||
2025-05-26 15:00:24,324 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_body, body type: <class 'dict'>
|
||
2025-05-26 15:00:24,348 - testcase.TC-ERROR-4001-QUERY - WARNING - TC-ERROR-4001-QUERY: 类型不匹配测试失败。字段: query.id, 期望状态码: [400, 422], 实际: 200。
|
||
2025-05-26 15:00:24,348 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: check_performance, elapsed: 0.02383112907409668
|
||
2025-05-26 15:00:24,348 - ddms_compliance_suite.test_orchestrator - DEBUG - [91m ❌ 测试用例 'TC-ERROR-4001-QUERY' 执行失败。[0m
|
||
2025-05-26 15:00:24,349 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 执行完毕,状态: 失败
|
||
2025-05-26 15:00:24,349 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-BODY' for 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:24,349 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 15:00:24,349 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 15:00:24,349 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 15:00:24,349 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' initialized for endpoint: PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit
|
||
2025-05-26 15:00:24,349 - testcase.TC-ERROR-4001-BODY - CRITICAL - TC-ERROR-4001-BODY __INIT__ >>> STARTED
|
||
2025-05-26 15:00:24,349 - testcase.TC-ERROR-4001-BODY - DEBUG - 开始为端点 PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit 初始化请求体类型不匹配测试的目标字段查找。
|
||
2025-05-26 15:00:24,349 - testcase.TC-ERROR-4001-BODY - DEBUG - 从顶层 'requestBody' 中获取到 schema: ['$schema', 'type', 'properties']
|
||
2025-05-26 15:00:24,349 - testcase.TC-ERROR-4001-BODY - DEBUG - 最终用于检查的请求体 schema: ['$schema', 'type', 'properties']
|
||
2025-05-26 15:00:24,349 - testcase.TC-ERROR-4001-BODY - DEBUG - Enter _find_target_field_in_schema for base_path: '', schema_to_search keys: ['$schema', 'type', 'properties']
|
||
2025-05-26 15:00:24,349 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: '', Resolved Schema Type: 'object', Keys: ['$schema', 'type', 'properties']
|
||
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: '', Type is 'object'. Checking properties: ['version', 'data']
|
||
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: 'version', Property Schema (Original): {'type': 'string'}
|
||
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: 'version', Property Schema (Resolved): {'type': 'string'}
|
||
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: 'version', Resolved Property Type: 'string'
|
||
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - INFO - 目标字段(请求体): 'version' (原始类型: 'string') FOUND!
|
||
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - INFO - 类型不匹配测试的目标字段(请求体): version,原始类型: string
|
||
2025-05-26 15:00:24,350 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-BODY' (Error Code 4001 - Request Body Type Mismatch Validation) for endpoint 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:24,350 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 开始为端点 PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-ERROR-4001-BODY)
|
||
2025-05-26 15:00:24,350 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 从缓存加载了端点 'PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
|
||
2025-05-26 15:00:24,350 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] (缓存加载) 准备的请求数据: method=PUT, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - DEBUG - TC-ERROR-4001-BODY is focused on request body, generate_query_params will not modify query parameters.
|
||
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: generate_headers, current keys: ['Accept', 'Content-Type', 'tenant-id', 'Authorization']
|
||
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - DEBUG - 准备修改请求体以测试类型不匹配。目标路径: ['version'], 原始类型: string
|
||
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - INFO - 在路径 ['version'] (键 'version') 处,将值从 'example_string' 修改为 '12345' (原始类型: string)
|
||
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit
|
||
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' did not modify the URL via modify_request_url hook.
|
||
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit
|
||
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_headers, header keys: ['Accept', 'Content-Type', 'tenant-id', 'Authorization']
|
||
2025-05-26 15:00:24,350 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_body, body type: <class 'dict'>
|
||
2025-05-26 15:00:24,378 - testcase.TC-ERROR-4001-BODY - WARNING - TC-ERROR-4001-BODY: 类型不匹配测试失败。字段: body.version, 期望状态码: [400, 422], 实际: 200。
|
||
2025-05-26 15:00:24,378 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: check_performance, elapsed: 0.026877880096435547
|
||
2025-05-26 15:00:24,378 - ddms_compliance_suite.test_orchestrator - DEBUG - [91m ❌ 测试用例 'TC-ERROR-4001-BODY' 执行失败。[0m
|
||
2025-05-26 15:00:24,378 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 执行完毕,状态: 失败
|
||
2025-05-26 15:00:24,378 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-BODY' for 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:24,378 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 15:00:24,378 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 15:00:24,378 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 15:00:24,378 - testcase.TC-ERROR-4003-BODY - INFO - 策略2: 在数组属性 'data' (路径 root) 的元素内找到必填字段: 'bsflag'. 将尝试移除路径: ['data', 0, 'bsflag']
|
||
2025-05-26 15:00:24,378 - testcase.TC-ERROR-4003-BODY - INFO - 必填字段缺失测试的目标字段 (请求体): 'data.0.bsflag'
|
||
2025-05-26 15:00:24,378 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-BODY' (Error Code 4003 - Missing Required Request Body Field Validation) for endpoint 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:24,378 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 开始为端点 PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-ERROR-4003-BODY)
|
||
2025-05-26 15:00:24,378 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 从缓存加载了端点 'PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
|
||
2025-05-26 15:00:24,378 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] (缓存加载) 准备的请求数据: method=PUT, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 15:00:24,378 - testcase.TC-ERROR-4003-BODY - INFO - 为进行必填字段缺失测试,已从请求体中移除字段路径 'data.0.bsflag' (原值: '0.0')。
|
||
2025-05-26 15:00:24,394 - testcase.TC-ERROR-4003-BODY - WARNING - 必填请求体字段缺失测试失败:期望状态码 [400, 422],实际为 200。移除的字段:'body.data.0.bsflag'
|
||
2025-05-26 15:00:24,394 - ddms_compliance_suite.test_orchestrator - DEBUG - [91m ❌ 测试用例 'TC-ERROR-4003-BODY' 执行失败。[0m
|
||
2025-05-26 15:00:24,394 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 执行完毕,状态: 失败
|
||
2025-05-26 15:00:24,395 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-QUERY' for 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:24,395 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 15:00:24,395 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 15:00:24,395 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldQueryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 15:00:24,395 - testcase.TC-ERROR-4003-QUERY - INFO - 必填字段缺失测试的目标字段 (查询参数): 'id'
|
||
2025-05-26 15:00:24,395 - testcase.TC-ERROR-4003-QUERY - INFO - 测试用例 TC-ERROR-4003-QUERY (Error Code 4003 - Missing Required Query Parameter Validation) 已针对端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit' 初始化。Target param to remove: id
|
||
2025-05-26 15:00:24,395 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-QUERY' (Error Code 4003 - Missing Required Query Parameter Validation) for endpoint 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:24,395 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 开始为端点 PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-ERROR-4003-QUERY)
|
||
2025-05-26 15:00:24,395 - ddms_compliance_suite.test_orchestrator - INFO - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] 从缓存加载了端点 'PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
|
||
2025-05-26 15:00:24,396 - ddms_compliance_suite.test_orchestrator - DEBUG - [put__api_dms_dms_instance_code_v1_cd_geo_unit_135749] (缓存加载) 准备的请求数据: method=PUT, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 15:00:24,396 - testcase.TC-ERROR-4003-QUERY - INFO - 为进行必填查询参数缺失测试,已从查询参数中移除 'id' (原值: 'dsid')。
|
||
2025-05-26 15:00:24,414 - testcase.TC-ERROR-4003-QUERY - WARNING - 必填查询参数缺失测试失败:期望状态码 [400, 422],实际为 200。移除的参数:'id'
|
||
2025-05-26 15:00:24,414 - ddms_compliance_suite.test_orchestrator - DEBUG - [91m ❌ 测试用例 'TC-ERROR-4003-QUERY' 执行失败。[0m
|
||
2025-05-26 15:00:24,414 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 执行完毕,状态: 失败
|
||
2025-05-26 15:00:24,414 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit' 测试完成,最终状态: 失败
|
||
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit (地质单元数据删除)
|
||
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit' 发现了 8 个适用的测试用例: ['TC-STATUS-001', 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001', 'TC-CORE-FUNC-001', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY']
|
||
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 15:00:24,415 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit' 初始化。
|
||
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 开始为端点 DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-STATUS-001)
|
||
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 端点 'DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的参数未在缓存中找到,开始生成。
|
||
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 使用常规方法或LLM未启用,为路径参数。
|
||
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 使用常规方法生成 path 参数。
|
||
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 使用 schema 中的 'example' 值 for (context: path parameter 'dms_instance_code'): example_dms_instance_code
|
||
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 常规方法生成的 path 参数: {'dms_instance_code': 'example_dms_instance_code'}
|
||
2025-05-26 15:00:24,415 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 使用常规方法或LLM未启用,为查询参数。
|
||
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 使用常规方法生成 query 参数。
|
||
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 使用 schema 中的 'example' 值 for (context: query parameter 'id'): dsid
|
||
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 常规方法生成的 query 参数: {'id': 'dsid'}
|
||
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 使用常规方法或LLM未启用,为头部参数。
|
||
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 使用常规方法生成 header 参数。
|
||
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 生成 string 类型数据 ('') for (context: header parameter 'tenant-id'): example_string
|
||
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 生成 string 类型数据 ('') for (context: header parameter 'Authorization'): example_string
|
||
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 常规方法生成的 header 参数: {'tenant-id': 'example_string', 'Authorization': 'example_string'}
|
||
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 使用常规方法或LLM未启用/不适用,为请求体。
|
||
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 生成 object 类型数据 for (context: requestBody). Properties: ['version', 'data']
|
||
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 生成 string 类型数据 ('') for (context: requestBody.version): example_string
|
||
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 生成 array 类型数据 for (context: requestBody.data). Items schema: {'type': 'string'}, minItems: 1
|
||
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 生成 string 类型数据 ('') for (context: requestBody.data[0]): example_string
|
||
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 端点 'DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的参数已生成并存入缓存。
|
||
2025-05-26 15:00:24,416 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] (新生成) 准备的请求数据: method=DELETE, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 15:00:24,434 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit
|
||
2025-05-26 15:00:24,435 - ddms_compliance_suite.test_orchestrator - DEBUG - [92m ✅ 测试用例 'TC-STATUS-001' 执行成功。[0m
|
||
2025-05-26 15:00:24,435 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过
|
||
2025-05-26 15:00:24,435 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' for 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:24,435 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 15:00:24,435 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 15:00:24,435 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ComprehensiveURLCheckLLMCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 15:00:24,435 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' (综合URL规范与RESTful风格检查 (LLM)) for endpoint 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:24,435 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 开始为端点 DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001)
|
||
2025-05-26 15:00:24,435 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 从缓存加载了端点 'DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
|
||
2025-05-26 15:00:24,435 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] (缓存加载) 准备的请求数据: method=DELETE, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 15:00:24,436 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - 向LLM发送请求,评估路径: /api/dms/{dms_instance_code}/v1/cd_geo_unit (DELETE)
|
||
2025-05-26 15:00:24,436 - ddms_compliance_suite.llm_utils.llm_service - DEBUG - LLM API Request Payload:
|
||
{
|
||
"model": "qwen-plus",
|
||
"messages": [
|
||
{
|
||
"role": "system",
|
||
"content": "你是一位API设计评审专家,专注于评估API的URL规范性和RESTful风格。你的输出必须是严格的JSON格式。"
|
||
},
|
||
{
|
||
"role": "user",
|
||
"content": "\n请扮演一位资深的API设计评审员。我将提供一个API端点的路径模板、HTTP方法以及可能的接口名称。\n请根据以下石油行业API设计规范评估此API端点,并以严格的JSON格式返回您的评估结果。\nJSON对象应包含一个名为 \"assessments\" 的键,其值为一个对象列表,每个对象代表对一个标准的评估,包含 \"standard_name\" (字符串), \"is_compliant\" (布尔值), 和 \"reason\" (字符串) 三个键。\n\nAPI端点信息:\n- HTTP方法: DELETE\n- 路径模板: /api/dms/{dms_instance_code}/v1/cd_geo_unit\n- 路径中提取的参数名: [dms_instance_code]\n\n评估标准:\n\n1. **接口名称规范 (接口名称需要你从路径模板中提取,一般是路径中除了参数名以外的最后的一个单词)**:\n - 规则: 采用'动词+名词'结构,明确业务语义 (例如: GetWellLog, SubmitSeismicJob)。\n - standard_name: \"interface_naming_convention\"\n\n2. **HTTP方法使用规范**:\n - 规则: 遵循RESTful规范:GET用于数据检索, POST用于创建资源, PUT用于更新资源, DELETE用于删除资源。\n - standard_name: \"http_method_usage\"\n\n3. **URL路径结构规范**:\n - 规则: 格式为 `<前缀>/<专业领域>/v<版本号>/<资源类型>` (例如: /logging/v1.2/wells, /seismicprospecting/v1.0/datasets)。\n - 前缀: 示例: /api/dms\n - 专业领域: 专业领域示例: seismicprospecting, welllogging, reservoirevaluation\n - 版本号: 语义化版本,例如 v1, v1.0, v2.1.3。\n - 资源类型: 通常为名词复数。\n - standard_name: \"url_path_structure\"\n\n4. **URL路径参数命名规范**:\n - 规则: 路径参数(如果存在)必须使用全小写字母(可以是一个单词)或小写字母加下划线命名(这是多个单词的情况),并能反映资源的唯一标识 (例如: {well_id},{version},{schema})。\n - standard_name: \"url_path_parameter_naming\"\n\n5. **资源命名规范 (在路径中)**:\n - 规则: 资源集合应使用名词的复数形式表示 (例如 `/wells`, `/logs`);应优先使用石油行业的标准术语 (例如用 `trajectory` 而非 `path` 来表示井轨迹)。\n - standard_name: \"resource_naming_in_path\"\n - standard_name: \"resource\"\n - standard_name: \"schema\"\n - standard_name: \"version\"\n\n\n\n请确保您的输出是一个可以被 `json.loads()` 直接解析的JSON对象。\n例如:\n{\n \"assessments\": [\n {\n \"standard_name\": \"interface_naming_convention\",\n \"is_compliant\": true,\n \"reason\": \"接口名称 'GetWellboreTrajectory' 符合动词+名词结构。\"\n },\n {\n \"standard_name\": \"http_method_usage\",\n \"is_compliant\": true,\n \"reason\": \"GET方法用于检索资源,符合规范。\"\n }\n // ... 其他标准的评估 ...\n ]\n}\n"
|
||
}
|
||
],
|
||
"max_tokens": 1024,
|
||
"temperature": 0.2
|
||
}
|
||
2025-05-26 15:00:48,176 - ddms_compliance_suite.llm_utils.llm_service - DEBUG - LLM API Response:
|
||
{
|
||
"choices": [
|
||
{
|
||
"message": {
|
||
"role": "assistant",
|
||
"content": "{\n \"assessments\": [\n {\n \"standard_name\": \"interface_naming_convention\",\n \"is_compliant\": false,\n \"reason\": \"接口名称 'cd_geo_unit' 不符合动词+名词结构,无法明确表达业务语义。\"\n },\n {\n \"standard_name\": \"http_method_usage\",\n \"is_compliant\": true,\n \"reason\": \"DELETE方法用于删除资源,符合RESTful规范。\"\n },\n {\n \"standard_name\": \"url_path_structure\",\n \"is_compliant\": true,\n \"reason\": \"路径结构 '/api/dms/{dms_instance_code}/v1/cd_geo_unit' 符合 `<前缀>/<专业领域>/v<版本号>/<资源类型>` 的格式要求。\"\n },\n {\n \"standard_name\": \"url_path_parameter_naming\",\n \"is_compliant\": true,\n \"reason\": \"路径参数 '{dms_instance_code}' 使用了小写字母加下划线的命名方式,符合命名规范。\"\n },\n {\n \"standard_name\": \"resource_naming_in_path\",\n \"is_compliant\": false,\n \"reason\": \"资源名称 'cd_geo_unit' 应使用复数形式表示集合资源,并且建议使用更具体的石油行业术语(例如 'geological_units')。\"\n }\n ]\n}"
|
||
},
|
||
"finish_reason": "stop",
|
||
"index": 0,
|
||
"logprobs": null
|
||
}
|
||
],
|
||
"object": "chat.completion",
|
||
"usage": {
|
||
"prompt_tokens": 803,
|
||
"completion_tokens": 289,
|
||
"total_tokens": 1092,
|
||
"prompt_tokens_details": {
|
||
"cached_tokens": 0
|
||
}
|
||
},
|
||
"created": 1748242848,
|
||
"system_fingerprint": null,
|
||
"model": "qwen-plus",
|
||
"id": "chatcmpl-4879ac12-4f68-982c-be1d-85de8824af0f"
|
||
}
|
||
2025-05-26 15:00:48,177 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - WARNING - LLM评估 - 标准 'interface_naming_convention' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit': 不符合。原因: 接口名称 'cd_geo_unit' 不符合动词+名词结构,无法明确表达业务语义。
|
||
2025-05-26 15:00:48,178 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - LLM评估 - 标准 'http_method_usage' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit': 符合。原因: DELETE方法用于删除资源,符合RESTful规范。
|
||
2025-05-26 15:00:48,178 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - LLM评估 - 标准 'url_path_structure' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit': 符合。原因: 路径结构 '/api/dms/{dms_instance_code}/v1/cd_geo_unit' 符合 `<前缀>/<专业领域>/v<版本号>/<资源类型>` 的格式要求。
|
||
2025-05-26 15:00:48,178 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - LLM评估 - 标准 'url_path_parameter_naming' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit': 符合。原因: 路径参数 '{dms_instance_code}' 使用了小写字母加下划线的命名方式,符合命名规范。
|
||
2025-05-26 15:00:48,178 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - WARNING - LLM评估 - 标准 'resource_naming_in_path' for '/api/dms/{dms_instance_code}/v1/cd_geo_unit': 不符合。原因: 资源名称 'cd_geo_unit' 应使用复数形式表示集合资源,并且建议使用更具体的石油行业术语(例如 'geological_units')。
|
||
2025-05-26 15:00:48,298 - ddms_compliance_suite.test_orchestrator - DEBUG - [91m ❌ 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 执行失败。[0m
|
||
2025-05-26 15:00:48,299 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 执行完毕,状态: 失败
|
||
2025-05-26 15:00:48,299 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-001' for 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:48,299 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 15:00:48,299 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 15:00:48,299 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 15:00:48,299 - testcase.TC-CORE-FUNC-001 - INFO - 测试用例 'TC-CORE-FUNC-001' 已为端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit' 初始化。
|
||
2025-05-26 15:00:48,299 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-001' (Response Body JSON Schema Validation) for endpoint 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:48,299 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 开始为端点 DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-CORE-FUNC-001)
|
||
2025-05-26 15:00:48,299 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 从缓存加载了端点 'DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
|
||
2025-05-26 15:00:48,299 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] (缓存加载) 准备的请求数据: method=DELETE, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 15:00:48,324 - testcase.TC-CORE-FUNC-001 - INFO - 将根据路径 'responses.200.content.application/json.schema' 的schema验证响应体。
|
||
2025-05-26 15:00:48,324 - ddms_compliance_suite.test_orchestrator - DEBUG - [92m ✅ 测试用例 'TC-CORE-FUNC-001' 执行成功。[0m
|
||
2025-05-26 15:00:48,324 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-001' 执行完毕,状态: 通过
|
||
2025-05-26 15:00:48,324 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-001' for 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:48,324 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 15:00:48,324 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 15:00:48,324 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: HTTPSMandatoryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 15:00:48,324 - testcase.TC-SECURITY-001 - INFO - 测试用例 'TC-SECURITY-001' 已为端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit' 初始化。
|
||
2025-05-26 15:00:48,324 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-001' (HTTPS Protocol Mandatory Verification) for endpoint 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:48,324 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 开始为端点 DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-SECURITY-001)
|
||
2025-05-26 15:00:48,324 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 从缓存加载了端点 'DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
|
||
2025-05-26 15:00:48,324 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] (缓存加载) 准备的请求数据: method=DELETE, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 15:00:48,324 - testcase.TC-SECURITY-001 - WARNING - 原始URL 'http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit' 不是HTTPS。跳过此测试用例的URL修改。
|
||
2025-05-26 15:00:48,351 - testcase.TC-SECURITY-001 - ERROR - 安全漏洞:API允许通过HTTP成功响应 (200)。
|
||
2025-05-26 15:00:48,351 - ddms_compliance_suite.test_orchestrator - DEBUG - [91m ❌ 测试用例 'TC-SECURITY-001' 执行失败。[0m
|
||
2025-05-26 15:00:48,351 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-001' 执行完毕,状态: 失败
|
||
2025-05-26 15:00:48,351 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-QUERY' for 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:48,351 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 15:00:48,351 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 15:00:48,351 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchQueryParamCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 15:00:48,351 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' initialized for endpoint: DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit
|
||
2025-05-26 15:00:48,351 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY _try_find_mismatch_target_in_query >>> STARTED
|
||
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - 开始为端点 DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit 初始化查询参数类型不匹配测试的目标字段查找。
|
||
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY _try_find_mismatch_target_in_query >>> Parameters to be processed: [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'id', 'in': 'query', 'required': True, 'description': '主键id的key', 'schema': {'type': 'string', 'example': 'dsid'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
|
||
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - 传入的参数列表 (在 TC-ERROR-4001-QUERY中): [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'id', 'in': 'query', 'required': True, 'description': '主键id的key', 'schema': {'type': 'string', 'example': 'dsid'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
|
||
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - 检查查询参数: 'id'
|
||
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - 查询参数 'id' 包含嵌套 schema,尝试在其内部查找简单类型字段。
|
||
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - INFO - 目标字段(查询参数 - schema为简单类型): id,原始类型: string
|
||
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY __INIT__ >>> STARTED
|
||
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - 开始为端点 DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit 初始化查询参数类型不匹配测试的目标字段查找。
|
||
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - CRITICAL - TC-ERROR-4001-QUERY __INIT__ >>> Parameters to be processed: [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'id', 'in': 'query', 'required': True, 'description': '主键id的key', 'schema': {'type': 'string', 'example': 'dsid'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
|
||
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - 传入的参数列表 (在 TC-ERROR-4001-QUERY中): [{'name': 'dms_instance_code', 'in': 'path', 'required': True, 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'schema': {'type': 'string', 'example': 'example_dms_instance_code'}}, {'name': 'id', 'in': 'query', 'required': True, 'description': '主键id的key', 'schema': {'type': 'string', 'example': 'dsid'}}, {'name': 'tenant-id', 'in': 'header', 'required': True, 'description': 'tenant-id (Only:undefined)', 'schema': {'type': 'string'}}, {'name': 'Authorization', 'in': 'header', 'required': True, 'description': 'Authorization (Only:undefined)', 'schema': {'type': 'string'}}]
|
||
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - 检查查询参数: 'id'
|
||
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - 查询参数 'id' 包含嵌套 schema,尝试在其内部查找简单类型字段。
|
||
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - INFO - 目标字段(查询参数 - schema为简单类型): id,原始类型: string
|
||
2025-05-26 15:00:48,352 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-QUERY' (Error Code 4001 - Query Parameter Type Mismatch Validation) for endpoint 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:48,352 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 开始为端点 DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-ERROR-4001-QUERY)
|
||
2025-05-26 15:00:48,352 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 从缓存加载了端点 'DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
|
||
2025-05-26 15:00:48,352 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] (缓存加载) 准备的请求数据: method=DELETE, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - 准备修改查询参数以测试类型不匹配。目标路径: ['id'], 原始类型: string
|
||
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - INFO - 在查询参数路径 ['id'] (键 'id') 处,将值从 'dsid' 修改为 '12345' (原始类型: string)
|
||
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: generate_headers, current keys: ['Accept', 'tenant-id', 'Authorization']
|
||
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - TC-ERROR-4001-QUERY is focused on query parameters, generate_request_body will not modify the body.
|
||
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit
|
||
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' did not modify the URL via modify_request_url hook.
|
||
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit
|
||
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_headers, header keys: ['Accept', 'tenant-id', 'Authorization']
|
||
2025-05-26 15:00:48,352 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_body, body type: <class 'dict'>
|
||
2025-05-26 15:00:48,376 - testcase.TC-ERROR-4001-QUERY - WARNING - TC-ERROR-4001-QUERY: 类型不匹配测试失败。字段: query.id, 期望状态码: [400, 422], 实际: 200。
|
||
2025-05-26 15:00:48,376 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: check_performance, elapsed: 0.024329185485839844
|
||
2025-05-26 15:00:48,376 - ddms_compliance_suite.test_orchestrator - DEBUG - [91m ❌ 测试用例 'TC-ERROR-4001-QUERY' 执行失败。[0m
|
||
2025-05-26 15:00:48,376 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 执行完毕,状态: 失败
|
||
2025-05-26 15:00:48,376 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-BODY' for 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:48,376 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 15:00:48,376 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 15:00:48,376 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' initialized for endpoint: DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit
|
||
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - CRITICAL - TC-ERROR-4001-BODY __INIT__ >>> STARTED
|
||
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - 开始为端点 DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit 初始化请求体类型不匹配测试的目标字段查找。
|
||
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - 从顶层 'requestBody' 中获取到 schema: ['$schema', 'type', 'properties']
|
||
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - 最终用于检查的请求体 schema: ['$schema', 'type', 'properties']
|
||
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - Enter _find_target_field_in_schema for base_path: '', schema_to_search keys: ['$schema', 'type', 'properties']
|
||
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: '', Resolved Schema Type: 'object', Keys: ['$schema', 'type', 'properties']
|
||
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: '', Type is 'object'. Checking properties: ['version', 'data']
|
||
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: 'version', Property Schema (Original): {'type': 'string', 'title': '版本号'}
|
||
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: 'version', Property Schema (Resolved): {'type': 'string', 'title': '版本号'}
|
||
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - Path: 'version', Resolved Property Type: 'string'
|
||
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - INFO - 目标字段(请求体): 'version' (原始类型: 'string') FOUND!
|
||
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - INFO - 类型不匹配测试的目标字段(请求体): version,原始类型: string
|
||
2025-05-26 15:00:48,377 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-BODY' (Error Code 4001 - Request Body Type Mismatch Validation) for endpoint 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:48,377 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 开始为端点 DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-ERROR-4001-BODY)
|
||
2025-05-26 15:00:48,377 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 从缓存加载了端点 'DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
|
||
2025-05-26 15:00:48,377 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] (缓存加载) 准备的请求数据: method=DELETE, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - TC-ERROR-4001-BODY is focused on request body, generate_query_params will not modify query parameters.
|
||
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: generate_headers, current keys: ['Accept', 'tenant-id', 'Authorization']
|
||
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - 准备修改请求体以测试类型不匹配。目标路径: ['version'], 原始类型: string
|
||
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - INFO - 在路径 ['version'] (键 'version') 处,将值从 'example_string' 修改为 '12345' (原始类型: string)
|
||
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit
|
||
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' did not modify the URL via modify_request_url hook.
|
||
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit
|
||
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_headers, header keys: ['Accept', 'tenant-id', 'Authorization']
|
||
2025-05-26 15:00:48,377 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_body, body type: <class 'dict'>
|
||
2025-05-26 15:00:48,428 - testcase.TC-ERROR-4001-BODY - WARNING - TC-ERROR-4001-BODY: 类型不匹配测试失败。字段: body.version, 期望状态码: [400, 422], 实际: 200。
|
||
2025-05-26 15:00:48,428 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: check_performance, elapsed: 0.05131697654724121
|
||
2025-05-26 15:00:48,429 - ddms_compliance_suite.test_orchestrator - DEBUG - [91m ❌ 测试用例 'TC-ERROR-4001-BODY' 执行失败。[0m
|
||
2025-05-26 15:00:48,429 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 执行完毕,状态: 失败
|
||
2025-05-26 15:00:48,429 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-BODY' for 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:48,429 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 15:00:48,429 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 15:00:48,429 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 15:00:48,429 - testcase.TC-ERROR-4003-BODY - INFO - 在请求体 schema 中未找到可用于测试 "必填字段缺失" 的字段。
|
||
2025-05-26 15:00:48,429 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-BODY' (Error Code 4003 - Missing Required Request Body Field Validation) for endpoint 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:48,429 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 开始为端点 DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-ERROR-4003-BODY)
|
||
2025-05-26 15:00:48,429 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 从缓存加载了端点 'DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
|
||
2025-05-26 15:00:48,429 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] (缓存加载) 准备的请求数据: method=DELETE, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 15:00:48,484 - testcase.TC-ERROR-4003-BODY - INFO - 由于未识别到可移除的必填请求体字段,跳过此测试用例。
|
||
2025-05-26 15:00:48,484 - ddms_compliance_suite.test_orchestrator - DEBUG - [92m ✅ 测试用例 'TC-ERROR-4003-BODY' 执行成功。[0m
|
||
2025-05-26 15:00:48,484 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 执行完毕,状态: 通过
|
||
2025-05-26 15:00:48,484 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-QUERY' for 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:48,484 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 15:00:48,484 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 15:00:48,484 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldQueryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 15:00:48,484 - testcase.TC-ERROR-4003-QUERY - INFO - 必填字段缺失测试的目标字段 (查询参数): 'id'
|
||
2025-05-26 15:00:48,484 - testcase.TC-ERROR-4003-QUERY - INFO - 测试用例 TC-ERROR-4003-QUERY (Error Code 4003 - Missing Required Query Parameter Validation) 已针对端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit' 初始化。Target param to remove: id
|
||
2025-05-26 15:00:48,484 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-QUERY' (Error Code 4003 - Missing Required Query Parameter Validation) for endpoint 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:48,484 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 开始为端点 DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-ERROR-4003-QUERY)
|
||
2025-05-26 15:00:48,484 - ddms_compliance_suite.test_orchestrator - INFO - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] 从缓存加载了端点 'DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
|
||
2025-05-26 15:00:48,484 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete__api_dms_dms_instance_code_v1_cd_geo_unit_135750] (缓存加载) 准备的请求数据: method=DELETE, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={'id': 'dsid'}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 15:00:48,484 - testcase.TC-ERROR-4003-QUERY - INFO - 为进行必填查询参数缺失测试,已从查询参数中移除 'id' (原值: 'dsid')。
|
||
2025-05-26 15:00:48,501 - testcase.TC-ERROR-4003-QUERY - WARNING - 必填查询参数缺失测试失败:期望状态码 [400, 422],实际为 200。移除的参数:'id'
|
||
2025-05-26 15:00:48,501 - ddms_compliance_suite.test_orchestrator - DEBUG - [91m ❌ 测试用例 'TC-ERROR-4003-QUERY' 执行失败。[0m
|
||
2025-05-26 15:00:48,501 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 执行完毕,状态: 失败
|
||
2025-05-26 15:00:48,501 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit' 测试完成,最终状态: 失败
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: POST /api/dms/{dms_instance_code}/v1/cd_geo_unit (地质单元数据添加)
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit' 发现了 8 个适用的测试用例: ['TC-STATUS-001', 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001', 'TC-CORE-FUNC-001', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY']
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 15:00:48,502 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit' 初始化。
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-STATUS-001)
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的参数未在缓存中找到,开始生成。
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 使用常规方法或LLM未启用,为路径参数。
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 使用常规方法生成 path 参数。
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 使用 schema 中的 'example' 值 for (context: path parameter 'dms_instance_code'): example_dms_instance_code
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 常规方法生成的 path 参数: {'dms_instance_code': 'example_dms_instance_code'}
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 没有定义 query 参数。
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 使用常规方法或LLM未启用,为头部参数。
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 使用常规方法生成 header 参数。
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 生成 string 类型数据 ('') for (context: header parameter 'tenant-id'): example_string
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 生成 string 类型数据 ('') for (context: header parameter 'Authorization'): example_string
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 常规方法生成的 header 参数: {'tenant-id': 'example_string', 'Authorization': 'example_string'}
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 使用常规方法或LLM未启用/不适用,为请求体。
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 生成 object 类型数据 for (context: requestBody). Properties: ['version', 'data']
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 生成 string 类型数据 ('') for (context: requestBody.version): example_string
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 生成 array 类型数据 for (context: requestBody.data). Items schema: {'type': 'object', 'properties': {'bsflag': {'type': 'number', 'title': '必填字段删除标记'}, 'wellCommonName': {'type': 'string'}, 'wellId': {'type': 'string'}, 'dataRegion': {'type': 'string'}}, 'required': ['bsflag', 'wellCommonName', 'wellId', 'dataRegion']}, minItems: 1
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 生成 object 类型数据 for (context: requestBody.data[0]). Properties: ['bsflag', 'wellCommonName', 'wellId', 'dataRegion']
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 生成 number/integer 类型数据 for (context: requestBody.data[0].bsflag): 0.0
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 生成 string 类型数据 ('') for (context: requestBody.data[0].wellCommonName): example_string
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 生成 string 类型数据 ('') for (context: requestBody.data[0].wellId): example_string
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 生成 string 类型数据 ('') for (context: requestBody.data[0].dataRegion): example_string
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的参数已生成并存入缓存。
|
||
2025-05-26 15:00:48,502 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] (新生成) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 15:00:48,522 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_dms_instance_code/v1/cd_geo_unit
|
||
2025-05-26 15:00:48,522 - ddms_compliance_suite.test_orchestrator - DEBUG - [92m ✅ 测试用例 'TC-STATUS-001' 执行成功。[0m
|
||
2025-05-26 15:00:48,522 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过
|
||
2025-05-26 15:00:48,522 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' for 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:48,522 - ddms_compliance_suite.test_orchestrator - DEBUG - 成功通过 to_dict() 方法将类型为 <class 'ddms_compliance_suite.input_parser.parser.YAPIEndpoint'> 的 endpoint_spec 转换为字典。
|
||
2025-05-26 15:00:48,522 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: <class 'ddms_compliance_suite.input_parser.parser.ParsedYAPISpec'>) to dict using .spec attribute.
|
||
2025-05-26 15:00:48,522 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ComprehensiveURLCheckLLMCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_yapi_id', '_yapi_raw_data', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['yapi_categories'])
|
||
2025-05-26 15:00:48,522 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001' (综合URL规范与RESTful风格检查 (LLM)) for endpoint 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'
|
||
2025-05-26 15:00:48,522 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001)
|
||
2025-05-26 15:00:48,522 - ddms_compliance_suite.test_orchestrator - INFO - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。
|
||
2025-05-26 15:00:48,522 - ddms_compliance_suite.test_orchestrator - DEBUG - [post__api_dms_dms_instance_code_v1_cd_geo_unit_135748] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_dms_instance_code'}, query_params={}, headers=['Accept', 'Content-Type', 'tenant-id', 'Authorization'], body_type=dict
|
||
2025-05-26 15:00:48,522 - testcase.TC-NORMATIVE-URL-LLM-COMPREHENSIVE-001 - INFO - 向LLM发送请求,评估路径: /api/dms/{dms_instance_code}/v1/cd_geo_unit (POST)
|
||
2025-05-26 15:00:48,522 - ddms_compliance_suite.llm_utils.llm_service - DEBUG - LLM API Request Payload:
|
||
{
|
||
"model": "qwen-plus",
|
||
"messages": [
|
||
{
|
||
"role": "system",
|
||
"content": "你是一位API设计评审专家,专注于评估API的URL规范性和RESTful风格。你的输出必须是严格的JSON格式。"
|
||
},
|
||
{
|
||
"role": "user",
|
||
"content": "\n请扮演一位资深的API设计评审员。我将提供一个API端点的路径模板、HTTP方法以及可能的接口名称。\n请根据以下石油行业API设计规范评估此API端点,并以严格的JSON格式返回您的评估结果。\nJSON对象应包含一个名为 \"assessments\" 的键,其值为一个对象列表,每个对象代表对一个标准的评估,包含 \"standard_name\" (字符串), \"is_compliant\" (布尔值), 和 \"reason\" (字符串) 三个键。\n\nAPI端点信息:\n- HTTP方法: POST\n- 路径模板: /api/dms/{dms_instance_code}/v1/cd_geo_unit\n- 路径中提取的参数名: [dms_instance_code]\n\n评估标准:\n\n1. **接口名称规范 (接口名称需要你从路径模板中提取,一般是路径中除了参数名以外的最后的一个单词)**:\n - 规则: 采用'动词+名词'结构,明确业务语义 (例如: GetWellLog, SubmitSeismicJob)。\n - standard_name: \"interface_naming_convention\"\n\n2. **HTTP方法使用规范**:\n - 规则: 遵循RESTful规范:GET用于数据检索, POST用于创建资源, PUT用于更新资源, DELETE用于删除资源。\n - standard_name: \"http_method_usage\"\n\n3. **URL路径结构规范**:\n - 规则: 格式为 `<前缀>/<专业领域>/v<版本号>/<资源类型>` (例如: /logging/v1.2/wells, /seismicprospecting/v1.0/datasets)。\n - 前缀: 示例: /api/dms\n - 专业领域: 专业领域示例: seismicprospecting, welllogging, reservoirevaluation\n - 版本号: 语义化版本,例如 v1, v1.0, v2.1.3。\n - 资源类型: 通常为名词复数。\n - standard_name: \"url_path_structure\"\n\n4. **URL路径参数命名规范**:\n - 规则: 路径参数(如果存在)必须使用全小写字母(可以是一个单词)或小写字母加下划线命名(这是多个单词的情况),并能反映资源的唯一标识 (例如: {well_id},{version},{schema})。\n - standard_name: \"url_path_parameter_naming\"\n\n5. **资源命名规范 (在路径中)**:\n - 规则: 资源集合应使用名词的复数形式表示 (例如 `/wells`, `/logs`);应优先使用石油行业的标准术语 (例如用 `trajectory` 而非 `path` 来表示井轨迹)。\n - standard_name: \"resource_naming_in_path\"\n - standard_name: \"resource\"\n - standard_name: \"schema\"\n - standard_name: \"version\"\n\n\n\n请确保您的输出是一个可以被 `json.loads()` 直接解析的JSON对象。\n例如:\n{\n \"assessments\": [\n {\n \"standard_name\": \"interface_naming_convention\",\n \"is_compliant\": true,\n \"reason\": \"接口名称 'GetWellboreTrajectory' 符合动词+名词结构。\"\n },\n {\n \"standard_name\": \"http_method_usage\",\n \"is_compliant\": true,\n \"reason\": \"GET方法用于检索资源,符合规范。\"\n }\n // ... 其他标准的评估 ...\n ]\n}\n"
|
||
}
|
||
],
|
||
"max_tokens": 1024,
|
||
"temperature": 0.2
|
||
}
|