From 25789568a28c7add0bf36e7c261f984991b59913 Mon Sep 17 00:00:00 2001 From: gongwenxin Date: Fri, 11 Jul 2025 18:58:18 +0800 Subject: [PATCH] fix:pdf\md\json --- .../stage_framework.cpython-312.pyc | Bin 44570 -> 44840 bytes .../test_orchestrator.cpython-312.pyc | Bin 160441 -> 160945 bytes .../__pycache__/config_models.cpython-312.pyc | Bin 0 -> 3264 bytes .../__pycache__/test_models.cpython-312.pyc | Bin 9344 -> 9370 bytes ddms_compliance_suite/stage_framework.py | 21 +- ddms_compliance_suite/test_orchestrator.py | 12 +- log_dms.txt | 10366 ++++++++-------- .../2025-07-11_18-01-51/api_call_details.md | 8140 ++++++++++++ .../2025-07-11_18-01-51/report_cn.pdf | Bin 0 -> 114394 bytes test_reports/2025-07-11_18-01-51/summary.json | 3373 +++++ test_reports/2025-07-11_18-55-23/summary.json | 0 .../2025-07-11_18-57-44/api_call_details.md | 8234 ++++++++++++ .../2025-07-11_18-57-44/report_cn.pdf | Bin 0 -> 114398 bytes test_reports/2025-07-11_18-57-44/summary.json | 4475 +++++++ 14 files changed, 29447 insertions(+), 5174 deletions(-) create mode 100644 ddms_compliance_suite/models/__pycache__/config_models.cpython-312.pyc create mode 100644 test_reports/2025-07-11_18-01-51/api_call_details.md create mode 100644 test_reports/2025-07-11_18-01-51/report_cn.pdf create mode 100644 test_reports/2025-07-11_18-01-51/summary.json create mode 100644 test_reports/2025-07-11_18-55-23/summary.json create mode 100644 test_reports/2025-07-11_18-57-44/api_call_details.md create mode 100644 test_reports/2025-07-11_18-57-44/report_cn.pdf create mode 100644 test_reports/2025-07-11_18-57-44/summary.json diff --git a/ddms_compliance_suite/__pycache__/stage_framework.cpython-312.pyc b/ddms_compliance_suite/__pycache__/stage_framework.cpython-312.pyc index d7b7b10bfb1f9735808051423c90430b27217e0a..0b825ab5b7434beb2e0543b4dcffc94f272883cc 100644 GIT binary patch delta 8318 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 UrW=+OaBmirwHUQ;CGdd%4+U3TB>(^b delta 7967 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 KWc(+iO!)t7djuZ< diff --git a/ddms_compliance_suite/__pycache__/test_orchestrator.cpython-312.pyc b/ddms_compliance_suite/__pycache__/test_orchestrator.cpython-312.pyc index cac7b5a267b46f5d19cccfcbe603121dd97a7ad7..9fbb3028be46a6c7dceb3058559cc6fb1e91d51b 100644 GIT binary patch delta 12926 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 literal 0 HcmV?d00001 diff --git a/ddms_compliance_suite/models/__pycache__/test_models.cpython-312.pyc b/ddms_compliance_suite/models/__pycache__/test_models.cpython-312.pyc index 7a4333f2985f7a5d68a979179571e7b866977cd9..3b582f78f7229cf15733b8ed5409bb2310859640 100644 GIT binary patch delta 1391 zcmb7@OH30{6oz|m#}?X|PM=bccOeFf4}2R1jSsLy(1eGAC<1e<)dI0#j0RJe#+AuY zW89gTh!GP^W5U7(abbv$g(fcS#)TV=E=_P_;{At02X$kU`R1N;|G7Qq+;gtQ?!{cM zHO*y{zoDy7T_ehn@EY!E^)ZLbX6y3_mv9SJsBvB_Z9KwhXuIW`+eCq3H$2m;meqc# zR&yGCNh446T22g*PYD(JuzT5F=g%xC&zbWPORbd-$~YddAf?q1jW}CNvZ^8CgBOz% z107?dBGn)jsdd15nsYwnGn14kXy!9XdQ@;LEeZ|iw0$|0#jqVhTM>9cE+|E+3oUAo zndF~pmqqQisP%uS>7L?>;aJTg^h%+YtA}UlFhiI1@GS@GlNx_c<2S3K*9Ay-z2T`S zeR2)+D>XFd4pOh%OQY`Ztb_X08Wxa6Drwq+Vr&F909%1ZU>jfuRsj)UJFo-T3GAYG zYFOWlB~U4!@z3;A-N5IQRIfGg`AO=phVW57@b(GKnr|k@(!$8v8xP?jU`iuU{?T@Ko!sguqL`6c*SQY zX(ZUpXG`fxFe-f?gLfV6*l(vxp>o!qxf6QNS(Fmt8*FdpN4T4_0cu;*l~J%AawN3OC;tfS>f>KL5IfnJ~wI02YZnSXs0X1_#MF%rWQsgtnt*`0#vJ`J`3 zgXAkMadcwYnQ1IN#aO4jw-0G^6!SBJ;r7cb3#^zCb2Q~}D^l&ZTv|}7H4#Fq=Grx| ze7)Wkt+4tpWyn<0MqQyVbn_gB7I`+cRlUY|ez*yMqi2o|- z8GLRgZO*`1nE4tdV44*@ht+xDk1mMA2V9iTxQ*GUs(PHys&uEip3gMUi|SfF(@$Tk j_pmtCMXuGDm+i+_=7ga`Eth775~sJ3GIoK!MQ;BFd5H|` delta 1393 zcma)*OH30{6oz|erY*FcKBquMDAE#wfCPMCl$U@H5~7i(0$PC?1Vk~@vQQErCT@%y zJ(>{LCTbu?)5H*iq?))<7sSL3y4Hq-_n$yJRu@h(-`sQWKXd+bAx$7N|m6;;Y1M^PJmgUE>wU?yYx%=F-d)aWGt=@JIwQN$m|Eb>218NV{E!-Qw20W%@jdXZH zAo4By(*{sJ-&R2aM#}aIg`$oR(i5ha(@)2!c=CFb?l={?~kyay2Wzs4~C<09YEN@6t6Y+$81hE9P0&PG$$A&m@ zC7~ZhXa#J*F)Tal~1bfKQz@(2Kx3A(fyTN|TUM=#5gz=YA-Qwoa^f((Pa| z>r5^MKMJgl<_d1H=45WDS77HUR@fNrhA88_2Vutk3530rDpcnCFzg4;0B3;#z_4NL zbqe7i$A+X%j3)FU#F=!?A&dbXzy*#C>)6!va3VXiF02FCG~UT9mYd1$ou?V=!b#Fv z(dsHp*R_N9-~uKG>t0Pkj5Q_#=mp5E$v#iR`Wr3@P1q!y1vo5gOH zN3QUatqz8}=~cLh_0Z?=u&o&ry~);+7-RXFKKY+&<4vPO#xOEUaS@|TA;%FKWuL%k z63FTe4RgQ@zvC8Wp~IzdAtlkX(%r&Jl)jXf2`fD$Mw*#MZIOkj(E@(F6# RS;K`!-y%iqDp{lVe*+G32JQd= diff --git a/ddms_compliance_suite/stage_framework.py b/ddms_compliance_suite/stage_framework.py index fe4f54c..a2b23ae 100644 --- a/ddms_compliance_suite/stage_framework.py +++ b/ddms_compliance_suite/stage_framework.py @@ -14,7 +14,7 @@ from pydantic import BaseModel from .test_framework_core import ValidationResult, APIResponseContext from .api_caller.caller import APICallDetail # Import ParsedAPISpec and endpoint types for type hinting and usage -from .input_parser.parser import ParsedAPISpec, YAPIEndpoint, SwaggerEndpoint +from .input_parser.parser import ParsedAPISpec, BaseEndpoint, YAPIEndpoint, SwaggerEndpoint, DMSEndpoint # 尝试从 .llm_utils 导入,如果失败则 LLMService 为 None try: @@ -199,7 +199,7 @@ class BaseAPIStage: def __init__(self, api_group_metadata: Dict[str, Any], - apis_in_group: List[Union[YAPIEndpoint, SwaggerEndpoint]], # MODIFIED TYPE HINT + apis_in_group: List[BaseEndpoint], # MODIFIED TYPE HINT to use BaseEndpoint llm_service: Optional[LLMService] = None, global_api_spec: Optional[ParsedAPISpec] = None, # <--- 修改类型注解 operation_keywords: Optional[Dict[str, List[str]]] = None): @@ -541,6 +541,7 @@ class ExecutedStageStepResult: validation_points: Optional[List[ValidationResult]] = None, duration: float = 0.0, api_call_detail: Optional[APICallDetail] = None, + api_operation_spec: Optional[BaseEndpoint] = None, # <--- 添加此行 extracted_outputs: Optional[Dict[str, Any]] = None, description: Optional[str] = None, lookup_key: Optional[Union[str, Dict[str, str]]] = None, @@ -555,6 +556,7 @@ class ExecutedStageStepResult: self.duration = duration self.timestamp = time.time() self.api_call_detail = api_call_detail + self.api_operation_spec = api_operation_spec # <--- 添加此行 self.extracted_outputs = extracted_outputs or {} self.description = description self.lookup_key = lookup_key @@ -608,6 +610,10 @@ class ExecutedStageStepResult: if failed_vp_messages: current_message = "; ".join(failed_vp_messages) + api_op_dict = self.api_operation_spec # Changed from self.api_operation + if isinstance(api_op_dict, BaseEndpoint): + api_op_dict = api_op_dict.model_dump() + return { "step_name": self.step_name, "description": self.description, @@ -619,6 +625,7 @@ class ExecutedStageStepResult: "timestamp": time.strftime('%Y-%m-%dT%H:%M:%S%z', time.localtime(self.timestamp)), "validation_points": vps_details_for_output, "api_call_curl": getattr(getattr(self, 'api_call_detail', None), 'curl_command', 'N/A'), + "api_operation_spec": api_op_dict, # <--- 添加此行 "request_details": self.request_details, "extracted_outputs": {k: str(v)[:200] + '...' if isinstance(v, (str, bytes)) and len(v) > 200 else v for k, v in self.extracted_outputs.items()}, @@ -672,17 +679,17 @@ class ExecutedStageResult: if not self.executed_steps and self.overall_status == ExecutedStageResult.Status.SKIPPED: # 如果没有执行任何步骤且状态是初始的 SKIPPED,则保持 if not self.message: self.message = "此阶段没有执行任何步骤,被跳过。" - elif any(step.status == ExecutedStageStepResult.Status.ERROR for step in self.executed_steps): + elif any(step.status == ExecutedStageResult.Status.ERROR for step in self.executed_steps): self.overall_status = ExecutedStageResult.Status.FAILED # 步骤执行错误导致阶段失败 if not self.message: self.message = "一个或多个步骤执行时发生内部错误。" - elif any(step.status == ExecutedStageStepResult.Status.FAILED for step in self.executed_steps): + elif any(step.status == ExecutedStageResult.Status.FAILED for step in self.executed_steps): self.overall_status = ExecutedStageResult.Status.FAILED if not self.message: self.message = "一个或多个步骤验证失败。" - elif all(step.status == ExecutedStageStepResult.Status.SKIPPED for step in self.executed_steps) and self.executed_steps: + elif all(step.status == ExecutedStageResult.Status.SKIPPED for step in self.executed_steps) and self.executed_steps: self.overall_status = ExecutedStageResult.Status.SKIPPED # 所有步骤都跳过了 if not self.message: self.message = "所有步骤均被跳过。" - elif all(step.status == ExecutedStageStepResult.Status.PASSED or step.status == ExecutedStageStepResult.Status.SKIPPED for step in self.executed_steps) and \ - any(step.status == ExecutedStageStepResult.Status.PASSED for step in self.executed_steps) : + elif all(step.status == ExecutedStageResult.Status.PASSED or step.status == ExecutedStageResult.Status.SKIPPED for step in self.executed_steps) and \ + any(step.status == ExecutedStageResult.Status.PASSED for step in self.executed_steps) : self.overall_status = ExecutedStageResult.Status.PASSED # 至少一个通过,其他是跳过或通过 if not self.message: self.message = "阶段执行成功。" else: # 其他情况,例如没有步骤但状态不是 SKIPPED (不应发生),或者混合状态未被明确处理 diff --git a/ddms_compliance_suite/test_orchestrator.py b/ddms_compliance_suite/test_orchestrator.py index 04d6e1d..5b28553 100644 --- a/ddms_compliance_suite/test_orchestrator.py +++ b/ddms_compliance_suite/test_orchestrator.py @@ -24,7 +24,7 @@ from pydantic import BaseModel, Field, create_model, HttpUrl # Added HttpUrl for from pydantic.networks import EmailStr from pydantic.types import Literal # Explicitly import Literal -from .input_parser.parser import InputParser, YAPIEndpoint, SwaggerEndpoint, ParsedYAPISpec, ParsedSwaggerSpec, ParsedAPISpec, DMSEndpoint, ParsedDMSSpec +from .input_parser.parser import InputParser, BaseEndpoint, YAPIEndpoint, SwaggerEndpoint, ParsedYAPISpec, ParsedSwaggerSpec, ParsedAPISpec, DMSEndpoint, ParsedDMSSpec from .api_caller.caller import APICaller, APIRequest, APIResponse, APICallDetail # Ensure APICallDetail is imported from .json_schema_validator.validator import JSONSchemaValidator from .test_framework_core import ValidationResult, TestSeverity, APIRequestContext, APIResponseContext, BaseAPITestCase @@ -342,8 +342,14 @@ class TestSummary: return data def to_json(self, pretty=True) -> str: - indent = 2 if pretty else None - return json.dumps(self.to_dict(), indent=indent, ensure_ascii=False) + def custom_serializer(obj): + """JSON serializer for objects not serializable by default json code""" + if isinstance(obj, BaseEndpoint): + return obj.to_dict() + raise TypeError(f"Object of type {type(obj).__name__} is not JSON serializable") + + indent = 4 if pretty else None + return json.dumps(self.to_dict(), indent=indent, ensure_ascii=False, default=custom_serializer) def print_summary_to_console(self): # Renamed from print_summary # (Implementation can be more detailed based on the new stats) diff --git a/log_dms.txt b/log_dms.txt index fe30baf..821132a 100644 --- a/log_dms.txt +++ b/log_dms.txt @@ -1,1346 +1,1303 @@ -2025-07-11 17:53:11,342 - __main__ - DEBUG - 已启用详细日志模式 -2025-07-11 17:53:11,342 - __main__ - INFO - 测试报告将保存到: /Users/zpc01/workspace/zzlh/compliance/test_reports/2025-07-11_17-53-11 -2025-07-11 17:53:11,342 - ddms_compliance_suite.test_case_registry - INFO - Discovering custom test cases from: ./custom_testcases -2025-07-11 17:53:11,342 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: security_checks 从 ./custom_testcases/security_checks.py -2025-07-11 17:53:11,342 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-SECURITY-002' (敏感字段加密检查) 来自类 'EncryptedFieldsCheck' (路径: ./custom_testcases/security_checks.py) -2025-07-11 17:53:11,343 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: basic_checks 从 ./custom_testcases/basic_checks.py -2025-07-11 17:53:11,343 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-STATUS-001' (基本状态码 200 检查) 来自类 'StatusCode200Check' (路径: ./custom_testcases/basic_checks.py) -2025-07-11 17:53:11,343 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: tc_llm_compliance_check 从 ./custom_testcases/llm/tc_llm_compliance_check.py -2025-07-11 17:53:11,343 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-LLM-COMPLIANCE-001' (LLM合规性综合检查) 来自类 'LLMComplianceCheckTestCase' (路径: ./custom_testcases/llm/tc_llm_compliance_check.py) -2025-07-11 17:53:11,343 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: required_headers_check 从 ./custom_testcases/setup_checks/required_headers_check.py -2025-07-11 17:53:11,343 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-HEADER-001' (必需请求头Schema验证) 来自类 'RequiredHeadersSchemaCheck' (路径: ./custom_testcases/setup_checks/required_headers_check.py) -2025-07-11 17:53:11,344 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: tc_response_schema_format_001 从 ./custom_testcases/井筒/DMS增加核心存储服务API/tc_response_schema_format_001.py -2025-07-11 17:53:11,344 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-DMS-CORE-SCHEMA-001' (DMS核心存储服务API响应格式检查) 来自类 'ResponseSchemaFormatCheck' (路径: ./custom_testcases/井筒/DMS增加核心存储服务API/tc_response_schema_format_001.py) -2025-07-11 17:53:11,344 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: tc_url_version_check_001 从 ./custom_testcases/井筒/DMS增加核心存储服务API/tc_url_version_check_001.py -2025-07-11 17:53:11,344 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-DMS-URL-VERSION-001' (DMS API URL版本号检查) 来自类 'URLVersionCheckCase' (路径: ./custom_testcases/井筒/DMS增加核心存储服务API/tc_url_version_check_001.py) -2025-07-11 17:53:11,344 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: tc_pagination_params_check 从 ./custom_testcases/井筒/开发指南-后端/tc_pagination_params_check.py -2025-07-11 17:53:11,344 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-DMS-PAGINATION-001' (分页参数检查) 来自类 'PaginationParamsCheckTestCase' (路径: ./custom_testcases/井筒/开发指南-后端/tc_pagination_params_check.py) -2025-07-11 17:53:11,344 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: tc_normative_002 从 ./custom_testcases/井筒/RESTful接口设计要求/tc_normative_002.py -2025-07-11 17:53:11,344 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-RESTful-002' (资源路径名词检查) 来自类 'ResourcePathNounCheckTestCase' (路径: ./custom_testcases/井筒/RESTful接口设计要求/tc_normative_002.py) -2025-07-11 17:53:11,345 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: tc_normative_003 从 ./custom_testcases/井筒/RESTful接口设计要求/tc_normative_003.py -2025-07-11 17:53:11,345 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-RESTful-003' (时间字段ISO 8601格式检查) 来自类 'TimeFormatCheckTestCase' (路径: ./custom_testcases/井筒/RESTful接口设计要求/tc_normative_003.py) -2025-07-11 17:53:11,345 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: tc_normative_combined_001 从 ./custom_testcases/井筒/RESTful接口设计要求/tc_normative_combined_001.py -2025-07-11 17:53:11,345 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-RESTful-001' (核心命名与结构规范检查) 来自类 'CoreNamingStructureTestCase' (路径: ./custom_testcases/井筒/RESTful接口设计要求/tc_normative_combined_001.py) -2025-07-11 17:53:11,345 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: tc_normative_004 从 ./custom_testcases/井筒/RESTful接口设计要求/tc_normative_004.py -2025-07-11 17:53:11,345 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-RESTful-004' (资源集合复数命名检查) 来自类 'ResourceCollectionPluralCheckTestCase' (路径: ./custom_testcases/井筒/RESTful接口设计要求/tc_normative_004.py) -2025-07-11 17:53:11,346 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: https_mandatory_case 从 ./custom_testcases/compliance_catalog/security/https_mandatory_case.py -2025-07-11 17:53:11,346 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-SECURITY-001' (HTTPS 协议强制性检查) 来自类 'HTTPSMandatoryCase' (路径: ./custom_testcases/compliance_catalog/security/https_mandatory_case.py) -2025-07-11 17:53:11,346 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: url_llm_checks 从 ./custom_testcases/compliance_catalog/normative_spec/url_llm_checks.py -2025-07-11 17:53:11,346 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: http_method_usage_case 从 ./custom_testcases/compliance_catalog/normative_spec/http_method_usage_case.py -2025-07-11 17:53:11,346 - 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-07-11 17:53:11,346 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-ERROR-4003-QUERY' (缺失必填查询参数检查) 来自类 'MissingRequiredFieldQueryCase' (路径: ./custom_testcases/compliance_catalog/error_handling/missing_required_field_query_case.py) -2025-07-11 17:53:11,347 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: invalid_enum_value_case 从 ./custom_testcases/compliance_catalog/error_handling/invalid_enum_value_case.py -2025-07-11 17:53:11,347 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-ERROR-4006' (非法枚举值检查) 来自类 'InvalidEnumValueCase' (路径: ./custom_testcases/compliance_catalog/error_handling/invalid_enum_value_case.py) -2025-07-11 17:53:11,347 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: type_mismatch_body_case 从 ./custom_testcases/compliance_catalog/error_handling/type_mismatch_body_case.py -2025-07-11 17:53:11,347 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-ERROR-4001-BODY' (请求体字段类型不匹配检查) 来自类 'TypeMismatchBodyCase' (路径: ./custom_testcases/compliance_catalog/error_handling/type_mismatch_body_case.py) -2025-07-11 17:53:11,347 - 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-07-11 17:53:11,347 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-ERROR-4003-BODY' (缺失必填请求体字段检查) 来自类 'MissingRequiredFieldBodyCase' (路径: ./custom_testcases/compliance_catalog/error_handling/missing_required_field_body_case.py) -2025-07-11 17:53:11,347 - 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-07-11 17:53:11,347 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-ERROR-4001-QUERY' (查询参数类型不匹配检查) 来自类 'TypeMismatchQueryParamCase' (路径: ./custom_testcases/compliance_catalog/error_handling/type_mismatch_query_param_case.py) -2025-07-11 17:53:11,348 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: number_out_of_range_case 从 ./custom_testcases/compliance_catalog/error_handling/number_out_of_range_case.py -2025-07-11 17:53:11,348 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-ERROR-4002' (数值参数越界检查) 来自类 'NumberOutOfRangeCase' (路径: ./custom_testcases/compliance_catalog/error_handling/number_out_of_range_case.py) -2025-07-11 17:53:11,348 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: schema_validation_case 从 ./custom_testcases/compliance_catalog/core_functionality/schema_validation_case.py -2025-07-11 17:53:11,348 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-CORE-FUNC-001' (返回体JSON Schema验证) 来自类 'ResponseSchemaValidationCase' (路径: ./custom_testcases/compliance_catalog/core_functionality/schema_validation_case.py) -2025-07-11 17:53:11,348 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: flexible_schema_validation_case 从 ./custom_testcases/compliance_catalog/core_functionality/flexible_schema_validation_case.py -2025-07-11 17:53:11,348 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-CORE-FUNC-002' (灵活的返回体JSON Schema验证) 来自类 'FlexibleSchemaValidationCase' (路径: ./custom_testcases/compliance_catalog/core_functionality/flexible_schema_validation_case.py) -2025-07-11 17:53:11,348 - ddms_compliance_suite.test_case_registry - INFO - 已根据 execution_order (主要) 和类名 (次要) 对 20 个测试用例类进行了排序。 -2025-07-11 17:53:11,348 - ddms_compliance_suite.test_case_registry - INFO - 测试用例发现完成。总共注册了 20 个独特的测试用例 (基于ID)。发现并排序了 20 个测试用例类。 -2025-07-11 17:53:11,348 - ddms_compliance_suite.llm_utils.llm_service - INFO - LLMService initialized for model 'qwen-plus' at https://dashscope.aliyuncs.com/compatible-mode/v1 -2025-07-11 17:53:11,348 - ddms_compliance_suite.test_orchestrator - INFO - LLMService initialized with model: qwen-plus. -2025-07-11 17:53:11,348 - ddms_compliance_suite.test_orchestrator - INFO - LLMService is initialized, but no LLM generation flags (--use-llm-for-*) are enabled. -2025-07-11 17:53:11,348 - ddms_compliance_suite.stage_registry - INFO - 开始从目录发现测试阶段: custom_stages -2025-07-11 17:53:11,349 - ddms_compliance_suite.stage_registry - DEBUG - 成功加载模块: ddms_compliance_suite.stages.keyword_driven_crud_stage 从 custom_stages/keyword_driven_crud_stage.py -2025-07-11 17:53:11,349 - ddms_compliance_suite.stage_registry - DEBUG - 成功加载模块: ddms_compliance_suite.stages.dms_crud_scenario_stage 从 custom_stages/dms_crud_scenario_stage.py -2025-07-11 17:53:11,349 - ddms_compliance_suite.stage_registry - INFO - 成功注册测试阶段: dms_crud_scenario_stage (来自 ddms_compliance_suite.stages.dms_crud_scenario_stage.DmsCrudScenarioStage) -2025-07-11 17:53:11,349 - ddms_compliance_suite.stage_registry - INFO - 测试阶段发现完成。共加载 1 个阶段。发现 0 个错误。 -2025-07-11 17:53:11,349 - ddms_compliance_suite.test_orchestrator - INFO - StageRegistry initialized. Loaded 1 stages. -2025-07-11 17:53:11,349 - ddms_compliance_suite.test_orchestrator - INFO - Orchestrator output directory set to: /Users/zpc01/workspace/zzlh/compliance/test_reports/2025-07-11_17-53-11 -2025-07-11 17:53:11,349 - root - INFO - strictness_level: TestSeverity.CRITICAL -2025-07-11 17:53:11,349 - __main__ - INFO - 从DMS服务动态发现运行测试: ./assets/doc/dms/domain.json -2025-07-11 17:53:11,349 - ddms_compliance_suite.test_orchestrator - INFO - TestSummary initialized. -2025-07-11 17:53:11,349 - ddms_compliance_suite.test_orchestrator - INFO - 从DMS动态服务启动测试... -2025-07-11 17:53:11,349 - ddms_compliance_suite.input_parser.parser - INFO - Starting DMS spec parsing. Base URL: http://127.0.0.1:5001, Domain Map: ./assets/doc/dms/domain.json -2025-07-11 17:53:11,350 - ddms_compliance_suite.input_parser.parser - INFO - Fetching API list from: http://127.0.0.1:5001/api/schema/manage/schema -2025-07-11 17:53:11,358 - ddms_compliance_suite.input_parser.parser - INFO - Fetching model for 'lujing_test' from: http://127.0.0.1:5001/api/schema/manage/schema/lujing_test.1.0.0 -2025-07-11 17:53:11,360 - ddms_compliance_suite.input_parser.parser - INFO - Fetching model for 'wb_dr_pro_daily_report' from: http://127.0.0.1:5001/api/schema/manage/schema/wb_dr_pro_daily_report.1.0.0 -2025-07-11 17:53:11,361 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行API测试阶段 (Stages)... -2025-07-11 17:53:11,361 - ddms_compliance_suite.test_orchestrator - INFO - 发现了 1 个已定义的测试阶段: ['dms_crud_scenario_stage'] -2025-07-11 17:53:11,361 - ddms_compliance_suite.test_orchestrator - WARNING - 未知的解析规范类型: 。将阶段应用于整个规范 (api_group_name=None). -2025-07-11 17:53:11,361 - ddms_compliance_suite.test_orchestrator - INFO - 将针对 1 个API分组评估测试阶段: [None] -2025-07-11 17:53:11,361 - ddms_compliance_suite.test_orchestrator - INFO - 处理测试阶段定义: ID='dms_crud_scenario_stage', Name='DMS Full CRUD Scenario' -2025-07-11 17:53:11,361 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备阶段 'dms_crud_scenario_stage' 的上下文,针对API分组: 'Global' -2025-07-11 17:53:11,361 - ddms_compliance_suite.test_orchestrator - DEBUG - For Global context, selected 10 endpoint objects. -2025-07-11 17:53:11,361 - ddms_compliance_suite.test_orchestrator - DEBUG - 为阶段 'dms_crud_scenario_stage' 和分组 'Global' 实例化。API对象数量: 10. 元数据: {'name': 'Global (所有API)', 'description': '适用于规范中的所有API'} -2025-07-11 17:53:11,361 - ddms_compliance_suite.test_orchestrator - DEBUG - 检查阶段 'dms_crud_scenario_stage' 是否适用于API分组 'Global'... -2025-07-11 17:53:11,361 - ddms_compliance_suite.stage_framework.DmsCrudScenarioStage - INFO - Found complete CRUD scenario for DMS resource: 'lujing_test' -2025-07-11 17:53:11,361 - ddms_compliance_suite.stage_framework.DmsCrudScenarioStage - INFO - Found complete CRUD scenario for DMS resource: 'wb_dr_pro_daily_report' -2025-07-11 17:53:11,361 - ddms_compliance_suite.test_orchestrator - INFO - 测试阶段 'dms_crud_scenario_stage' 适用于API分组 'Global'。开始执行... -2025-07-11 17:53:11,361 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试阶段: ID='dms_crud_scenario_stage', Name='DMS Full CRUD Scenario', API分组='Global' -2025-07-11 17:53:11,361 - ddms_compliance_suite.test_orchestrator - DEBUG - 调用 stage 'dms_crud_scenario_stage' 的 before_stage 钩子。初始上下文: {} -2025-07-11 17:53:11,361 - ddms_compliance_suite.stage_framework.DmsCrudScenarioStage - INFO - Setting up before_stage for scenario: ['create', 'list', 'read', 'update', 'delete'] -2025-07-11 17:53:11,361 - ddms_compliance_suite.test_orchestrator - INFO - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 开始执行. -2025-07-11 17:53:11,361 - ddms_compliance_suite.test_orchestrator - DEBUG - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 调用 before_step 钩子. 上下文: {'pk_name': 'description', 'pk_value': 'b35c0305-7a09-40e3-a657-2abf4edb3b5f', 'current_payload': {'description': 'test-entry-from-scenario'}, 'update_payload': {'description': 'updated-test-entry-from-scenario'}, 'scenario_endpoints': {'create': , 'list': , 'read': , 'update': , 'delete': }} -2025-07-11 17:53:11,361 - ddms_compliance_suite.stage_framework.DmsCrudScenarioStage - DEBUG - Executing before_step for step 'Step 1: Create Resource' in stage 'dms_crud_scenario_stage' -2025-07-11 17:53:11,361 - ddms_compliance_suite.test_orchestrator - DEBUG - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 查找端点定义. Key='CREATE', Group='None' -2025-07-11 17:53:11,361 - ddms_compliance_suite.test_orchestrator - ERROR - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 步骤执行期间发生意外错误: name 'BaseEndpoint' is not defined -Traceback (most recent call last): - File "/Users/zpc01/workspace/zzlh/compliance/ddms_compliance_suite/test_orchestrator.py", line 2181, in execute_single_stage - if isinstance(api_op_spec, BaseEndpoint): - ^^^^^^^^^^^^ -NameError: name 'BaseEndpoint' is not defined. Did you mean: 'YAPIEndpoint'? -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_orchestrator - DEBUG - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 调用 after_step 钩子. -2025-07-11 17:53:11,363 - ddms_compliance_suite.stage_framework.DmsCrudScenarioStage - DEBUG - Executing after_step for step 'Step 1: Create Resource' in stage 'dms_crud_scenario_stage' -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_orchestrator - INFO - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 执行完毕. 状态: 执行错误, 耗时: 0.00s -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_orchestrator - WARNING - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 状态为 执行错误 且 continue_on_failure=False. 中止测试阶段 'dms_crud_scenario_stage'. -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_orchestrator - DEBUG - 调用 stage 'dms_crud_scenario_stage' 的 after_stage 钩子. 当前阶段结果状态: 执行错误 -2025-07-11 17:53:11,363 - ddms_compliance_suite.stage_framework.DmsCrudScenarioStage - INFO - Finished scenario 1/2 for this group. -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_orchestrator - INFO - 测试阶段 'dms_crud_scenario_stage' (API分组: 'Global') 执行完毕. 最终状态: 失败, 耗时: 0.00s -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_orchestrator - INFO - API Test Stage execution processed. Considered 1 (stage_definition x api_group) combinations. -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,363 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: POST /api/dms/wb_ml/v1/lujing_test (Create lujing_test) -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,364 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/wb_ml/v1/lujing_test' 发现了 20 个适用的测试用例 (已排序): ['TC-STATUS-001', 'TC-HEADER-001', 'TC-SECURITY-002', 'TC-LLM-COMPLIANCE-001', 'TC-RESTful-001', 'TC-DMS-PAGINATION-001', 'TC-RESTful-004', 'TC-RESTful-002', 'TC-DMS-CORE-SCHEMA-001', 'TC-CORE-FUNC-001', 'TC-RESTful-003', 'TC-DMS-URL-VERSION-001', 'TC-CORE-FUNC-002', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4002', 'TC-ERROR-4006', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY'] -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,365 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'POST /api/dms/wb_ml/v1/lujing_test' 初始化。 -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.365352 -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,365 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,368 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,368 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-STATUS-001' 执行成功。 -2025-07-11 17:53:11,368 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,368 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-HEADER-001' for 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,368 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,368 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,368 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,368 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,368 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,368 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,368 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: RequiredHeadersSchemaCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,368 - RequiredHeadersSchemaCheck - INFO - 测试用例 TC-HEADER-001 (必需请求头Schema验证) 已针对端点 'POST /api/dms/wb_ml/v1/lujing_test' 初始化。 -2025-07-11 17:53:11,368 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-HEADER-001' (必需请求头Schema验证) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,368 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json -2025-07-11 17:53:11,368 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json -2025-07-11 17:53:11,368 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,368 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,368 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 -2025-07-11 17:53:11,368 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,368 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,368 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,368 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,368 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,368 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,368 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.368844 -2025-07-11 17:53:11,368 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) -2025-07-11 17:53:11,368 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,368 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,370 - RequiredHeadersSchemaCheck - INFO - API端点: POST /api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,370 - RequiredHeadersSchemaCheck - INFO - 发现的header参数: [] -2025-07-11 17:53:11,370 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Tenant-ID: 找到=False, 必需=False, 名称=None -2025-07-11 17:53:11,370 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Tenant-ID -2025-07-11 17:53:11,370 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Data-Domain: 找到=False, 必需=False, 名称=None -2025-07-11 17:53:11,370 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Data-Domain -2025-07-11 17:53:11,370 - RequiredHeadersSchemaCheck - INFO - 检查请求头 Authorization: 找到=False, 必需=False, 名称=None -2025-07-11 17:53:11,370 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 Authorization -2025-07-11 17:53:11,370 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-HEADER-001' 执行失败。 -2025-07-11 17:53:11,370 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 失败 -2025-07-11 17:53:11,370 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-002' for 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,370 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,370 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,370 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,370 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,370 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,370 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,370 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: EncryptedFieldsCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,370 - testcase.TC-SECURITY-002 - INFO - 测试用例 TC-SECURITY-002 (敏感字段加密检查) 已初始化,将检查以下敏感字段是否加密: {'location', 'position', 'coord'} -2025-07-11 17:53:11,370 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-002' (敏感字段加密检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,370 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json -2025-07-11 17:53:11,370 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json -2025-07-11 17:53:11,370 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,370 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,370 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 -2025-07-11 17:53:11,370 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,370 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,370 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,370 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,370 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,370 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,370 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.370422 -2025-07-11 17:53:11,370 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) -2025-07-11 17:53:11,370 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,370 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,371 - testcase.TC-SECURITY-002 - INFO - response_context.json_content: {'code': 0, 'data': True, 'message': '创建成功'} -2025-07-11 17:53:11,371 - testcase.TC-SECURITY-002 - INFO - response_data:{'code': 0, 'data': True, 'message': '创建成功'} -2025-07-11 17:53:11,371 - testcase.TC-SECURITY-002 - INFO - 未在响应中找到需要检查的敏感字段。 -2025-07-11 17:53:11,371 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-SECURITY-002' 执行成功。 -2025-07-11 17:53:11,371 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-002' 执行完毕,状态: 通过 -2025-07-11 17:53:11,371 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-LLM-COMPLIANCE-001' for 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,371 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,371 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,371 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,371 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,371 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,371 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,371 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: LLMComplianceCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,371 - testcase.TC-LLM-COMPLIANCE-001 - INFO - 已加载合规性标准: [] -2025-07-11 17:53:11,371 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-LLM-COMPLIANCE-001' (LLM合规性综合检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,372 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json -2025-07-11 17:53:11,372 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json -2025-07-11 17:53:11,372 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,372 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,372 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 -2025-07-11 17:53:11,372 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,372 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,372 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,372 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,372 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,372 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,372 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.372101 -2025-07-11 17:53:11,372 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) -2025-07-11 17:53:11,372 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,372 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,372 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-LLM-COMPLIANCE-001' 执行成功。 -2025-07-11 17:53:11,372 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,372 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-001' for 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,372 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,372 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,373 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,373 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,373 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,373 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,373 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: CoreNamingStructureTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,373 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-001' (核心命名与结构规范检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,373 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json -2025-07-11 17:53:11,373 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json -2025-07-11 17:53:11,373 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,373 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,373 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 -2025-07-11 17:53:11,373 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,373 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,373 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,373 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,373 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,373 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,373 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.373196 -2025-07-11 17:53:11,373 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) -2025-07-11 17:53:11,373 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,373 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,374 - testcase.TC-RESTful-001 - INFO - responses: {'200': {'description': 'Success', 'content': {'application/json': {'schema': {'type': 'object', 'properties': {'code': {'type': 'integer'}, 'message': {'type': 'string'}, 'data': {'type': 'boolean'}}}}}}} -2025-07-11 17:53:11,374 - testcase.TC-RESTful-001 - INFO - 检查响应定义: status_code=200, 可用响应定义=['200'] -2025-07-11 17:53:11,374 - testcase.TC-RESTful-001 - INFO - 找到精确状态码 200 的响应定义 -2025-07-11 17:53:11,374 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-001' 执行成功。 -2025-07-11 17:53:11,374 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,374 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-PAGINATION-001' for 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,374 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,374 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,374 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,374 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,374 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,374 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,374 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: PaginationParamsCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,374 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-PAGINATION-001' (分页参数检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,374 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json -2025-07-11 17:53:11,374 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json -2025-07-11 17:53:11,374 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,374 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,374 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 -2025-07-11 17:53:11,374 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,374 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,374 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,374 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,374 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,374 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,374 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.374582 -2025-07-11 17:53:11,374 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) -2025-07-11 17:53:11,374 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,374 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,375 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-DMS-PAGINATION-001' 执行失败。 -2025-07-11 17:53:11,375 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 执行完毕,状态: 失败 -2025-07-11 17:53:11,375 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-004' for 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,375 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,375 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,375 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,375 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,375 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,375 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,375 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourceCollectionPluralCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,375 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-004' (资源集合复数命名检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,375 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json -2025-07-11 17:53:11,375 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json -2025-07-11 17:53:11,375 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,375 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,375 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 -2025-07-11 17:53:11,375 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,375 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,375 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,375 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,375 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,375 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,375 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.375834 -2025-07-11 17:53:11,375 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) -2025-07-11 17:53:11,375 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,375 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,376 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-RESTful-004' 执行失败。 -2025-07-11 17:53:11,376 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-004' 执行完毕,状态: 失败 -2025-07-11 17:53:11,376 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-002' for 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,376 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,376 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,376 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,376 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,376 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,376 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,376 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourcePathNounCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,376 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-002' (资源路径名词检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,376 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json -2025-07-11 17:53:11,376 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json -2025-07-11 17:53:11,376 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,376 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,376 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 -2025-07-11 17:53:11,376 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,376 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,376 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,376 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,376 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,376 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,376 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.376983 -2025-07-11 17:53:11,376 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) -2025-07-11 17:53:11,377 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,377 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.365352"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.365352"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.368844"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.368844"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.370422"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.370422"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.372101"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.372101"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.373196"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.373196"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,869 - __main__ - DEBUG - 已启用详细日志模式 +2025-07-11 18:57:44,869 - __main__ - INFO - 测试报告将保存到: /Users/zpc01/workspace/zzlh/compliance/test_reports/2025-07-11_18-57-44 +2025-07-11 18:57:44,869 - ddms_compliance_suite.test_case_registry - INFO - Discovering custom test cases from: ./custom_testcases +2025-07-11 18:57:44,870 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: security_checks 从 ./custom_testcases/security_checks.py +2025-07-11 18:57:44,870 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-SECURITY-002' (敏感字段加密检查) 来自类 'EncryptedFieldsCheck' (路径: ./custom_testcases/security_checks.py) +2025-07-11 18:57:44,870 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: basic_checks 从 ./custom_testcases/basic_checks.py +2025-07-11 18:57:44,870 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-STATUS-001' (基本状态码 200 检查) 来自类 'StatusCode200Check' (路径: ./custom_testcases/basic_checks.py) +2025-07-11 18:57:44,870 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: tc_llm_compliance_check 从 ./custom_testcases/llm/tc_llm_compliance_check.py +2025-07-11 18:57:44,870 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-LLM-COMPLIANCE-001' (LLM合规性综合检查) 来自类 'LLMComplianceCheckTestCase' (路径: ./custom_testcases/llm/tc_llm_compliance_check.py) +2025-07-11 18:57:44,871 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: required_headers_check 从 ./custom_testcases/setup_checks/required_headers_check.py +2025-07-11 18:57:44,871 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-HEADER-001' (必需请求头Schema验证) 来自类 'RequiredHeadersSchemaCheck' (路径: ./custom_testcases/setup_checks/required_headers_check.py) +2025-07-11 18:57:44,871 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: tc_response_schema_format_001 从 ./custom_testcases/井筒/DMS增加核心存储服务API/tc_response_schema_format_001.py +2025-07-11 18:57:44,871 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-DMS-CORE-SCHEMA-001' (DMS核心存储服务API响应格式检查) 来自类 'ResponseSchemaFormatCheck' (路径: ./custom_testcases/井筒/DMS增加核心存储服务API/tc_response_schema_format_001.py) +2025-07-11 18:57:44,872 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: tc_url_version_check_001 从 ./custom_testcases/井筒/DMS增加核心存储服务API/tc_url_version_check_001.py +2025-07-11 18:57:44,872 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-DMS-URL-VERSION-001' (DMS API URL版本号检查) 来自类 'URLVersionCheckCase' (路径: ./custom_testcases/井筒/DMS增加核心存储服务API/tc_url_version_check_001.py) +2025-07-11 18:57:44,872 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: tc_pagination_params_check 从 ./custom_testcases/井筒/开发指南-后端/tc_pagination_params_check.py +2025-07-11 18:57:44,872 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-DMS-PAGINATION-001' (分页参数检查) 来自类 'PaginationParamsCheckTestCase' (路径: ./custom_testcases/井筒/开发指南-后端/tc_pagination_params_check.py) +2025-07-11 18:57:44,873 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: tc_normative_002 从 ./custom_testcases/井筒/RESTful接口设计要求/tc_normative_002.py +2025-07-11 18:57:44,873 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-RESTful-002' (资源路径名词检查) 来自类 'ResourcePathNounCheckTestCase' (路径: ./custom_testcases/井筒/RESTful接口设计要求/tc_normative_002.py) +2025-07-11 18:57:44,873 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: tc_normative_003 从 ./custom_testcases/井筒/RESTful接口设计要求/tc_normative_003.py +2025-07-11 18:57:44,873 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-RESTful-003' (时间字段ISO 8601格式检查) 来自类 'TimeFormatCheckTestCase' (路径: ./custom_testcases/井筒/RESTful接口设计要求/tc_normative_003.py) +2025-07-11 18:57:44,873 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: tc_normative_combined_001 从 ./custom_testcases/井筒/RESTful接口设计要求/tc_normative_combined_001.py +2025-07-11 18:57:44,873 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-RESTful-001' (核心命名与结构规范检查) 来自类 'CoreNamingStructureTestCase' (路径: ./custom_testcases/井筒/RESTful接口设计要求/tc_normative_combined_001.py) +2025-07-11 18:57:44,874 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: tc_normative_004 从 ./custom_testcases/井筒/RESTful接口设计要求/tc_normative_004.py +2025-07-11 18:57:44,874 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-RESTful-004' (资源集合复数命名检查) 来自类 'ResourceCollectionPluralCheckTestCase' (路径: ./custom_testcases/井筒/RESTful接口设计要求/tc_normative_004.py) +2025-07-11 18:57:44,874 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: https_mandatory_case 从 ./custom_testcases/compliance_catalog/security/https_mandatory_case.py +2025-07-11 18:57:44,874 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-SECURITY-001' (HTTPS 协议强制性检查) 来自类 'HTTPSMandatoryCase' (路径: ./custom_testcases/compliance_catalog/security/https_mandatory_case.py) +2025-07-11 18:57:44,874 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: url_llm_checks 从 ./custom_testcases/compliance_catalog/normative_spec/url_llm_checks.py +2025-07-11 18:57:44,874 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: http_method_usage_case 从 ./custom_testcases/compliance_catalog/normative_spec/http_method_usage_case.py +2025-07-11 18:57:44,875 - 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-07-11 18:57:44,875 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-ERROR-4003-QUERY' (缺失必填查询参数检查) 来自类 'MissingRequiredFieldQueryCase' (路径: ./custom_testcases/compliance_catalog/error_handling/missing_required_field_query_case.py) +2025-07-11 18:57:44,875 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: invalid_enum_value_case 从 ./custom_testcases/compliance_catalog/error_handling/invalid_enum_value_case.py +2025-07-11 18:57:44,875 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-ERROR-4006' (非法枚举值检查) 来自类 'InvalidEnumValueCase' (路径: ./custom_testcases/compliance_catalog/error_handling/invalid_enum_value_case.py) +2025-07-11 18:57:44,875 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: type_mismatch_body_case 从 ./custom_testcases/compliance_catalog/error_handling/type_mismatch_body_case.py +2025-07-11 18:57:44,875 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-ERROR-4001-BODY' (请求体字段类型不匹配检查) 来自类 'TypeMismatchBodyCase' (路径: ./custom_testcases/compliance_catalog/error_handling/type_mismatch_body_case.py) +2025-07-11 18:57:44,876 - 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-07-11 18:57:44,876 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-ERROR-4003-BODY' (缺失必填请求体字段检查) 来自类 'MissingRequiredFieldBodyCase' (路径: ./custom_testcases/compliance_catalog/error_handling/missing_required_field_body_case.py) +2025-07-11 18:57:44,876 - 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-07-11 18:57:44,876 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-ERROR-4001-QUERY' (查询参数类型不匹配检查) 来自类 'TypeMismatchQueryParamCase' (路径: ./custom_testcases/compliance_catalog/error_handling/type_mismatch_query_param_case.py) +2025-07-11 18:57:44,876 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: number_out_of_range_case 从 ./custom_testcases/compliance_catalog/error_handling/number_out_of_range_case.py +2025-07-11 18:57:44,876 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-ERROR-4002' (数值参数越界检查) 来自类 'NumberOutOfRangeCase' (路径: ./custom_testcases/compliance_catalog/error_handling/number_out_of_range_case.py) +2025-07-11 18:57:44,877 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: schema_validation_case 从 ./custom_testcases/compliance_catalog/core_functionality/schema_validation_case.py +2025-07-11 18:57:44,877 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-CORE-FUNC-001' (返回体JSON Schema验证) 来自类 'ResponseSchemaValidationCase' (路径: ./custom_testcases/compliance_catalog/core_functionality/schema_validation_case.py) +2025-07-11 18:57:44,877 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: flexible_schema_validation_case 从 ./custom_testcases/compliance_catalog/core_functionality/flexible_schema_validation_case.py +2025-07-11 18:57:44,877 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-CORE-FUNC-002' (灵活的返回体JSON Schema验证) 来自类 'FlexibleSchemaValidationCase' (路径: ./custom_testcases/compliance_catalog/core_functionality/flexible_schema_validation_case.py) +2025-07-11 18:57:44,877 - ddms_compliance_suite.test_case_registry - INFO - 已根据 execution_order (主要) 和类名 (次要) 对 20 个测试用例类进行了排序。 +2025-07-11 18:57:44,877 - ddms_compliance_suite.test_case_registry - INFO - 测试用例发现完成。总共注册了 20 个独特的测试用例 (基于ID)。发现并排序了 20 个测试用例类。 +2025-07-11 18:57:44,878 - ddms_compliance_suite.llm_utils.llm_service - INFO - LLMService initialized for model 'qwen-plus' at https://dashscope.aliyuncs.com/compatible-mode/v1 +2025-07-11 18:57:44,878 - ddms_compliance_suite.test_orchestrator - INFO - LLMService initialized with model: qwen-plus. +2025-07-11 18:57:44,878 - ddms_compliance_suite.test_orchestrator - INFO - LLMService is initialized, but no LLM generation flags (--use-llm-for-*) are enabled. +2025-07-11 18:57:44,878 - ddms_compliance_suite.stage_registry - INFO - 开始从目录发现测试阶段: custom_stages +2025-07-11 18:57:44,878 - ddms_compliance_suite.stage_registry - DEBUG - 成功加载模块: ddms_compliance_suite.stages.keyword_driven_crud_stage 从 custom_stages/keyword_driven_crud_stage.py +2025-07-11 18:57:44,878 - ddms_compliance_suite.stage_registry - DEBUG - 成功加载模块: ddms_compliance_suite.stages.dms_crud_scenario_stage 从 custom_stages/dms_crud_scenario_stage.py +2025-07-11 18:57:44,878 - ddms_compliance_suite.stage_registry - INFO - 成功注册测试阶段: dms_crud_scenario_stage (来自 ddms_compliance_suite.stages.dms_crud_scenario_stage.DmsCrudScenarioStage) +2025-07-11 18:57:44,878 - ddms_compliance_suite.stage_registry - INFO - 测试阶段发现完成。共加载 1 个阶段。发现 0 个错误。 +2025-07-11 18:57:44,878 - ddms_compliance_suite.test_orchestrator - INFO - StageRegistry initialized. Loaded 1 stages. +2025-07-11 18:57:44,878 - ddms_compliance_suite.test_orchestrator - INFO - Orchestrator output directory set to: /Users/zpc01/workspace/zzlh/compliance/test_reports/2025-07-11_18-57-44 +2025-07-11 18:57:44,878 - root - INFO - strictness_level: TestSeverity.CRITICAL +2025-07-11 18:57:44,878 - __main__ - INFO - 从DMS服务动态发现运行测试: ./assets/doc/dms/domain.json +2025-07-11 18:57:44,878 - ddms_compliance_suite.test_orchestrator - INFO - TestSummary initialized. +2025-07-11 18:57:44,878 - ddms_compliance_suite.test_orchestrator - INFO - 从DMS动态服务启动测试... +2025-07-11 18:57:44,878 - ddms_compliance_suite.input_parser.parser - INFO - Starting DMS spec parsing. Base URL: http://127.0.0.1:5001, Domain Map: ./assets/doc/dms/domain.json +2025-07-11 18:57:44,879 - ddms_compliance_suite.input_parser.parser - INFO - Fetching API list from: http://127.0.0.1:5001/api/schema/manage/schema +2025-07-11 18:57:44,885 - ddms_compliance_suite.input_parser.parser - INFO - Fetching model for 'lujing_test' from: http://127.0.0.1:5001/api/schema/manage/schema/lujing_test.1.0.0 +2025-07-11 18:57:44,886 - ddms_compliance_suite.input_parser.parser - INFO - Fetching model for 'wb_dr_pro_daily_report' from: http://127.0.0.1:5001/api/schema/manage/schema/wb_dr_pro_daily_report.1.0.0 +2025-07-11 18:57:44,887 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行API测试阶段 (Stages)... +2025-07-11 18:57:44,887 - ddms_compliance_suite.test_orchestrator - INFO - 发现了 1 个已定义的测试阶段: ['dms_crud_scenario_stage'] +2025-07-11 18:57:44,887 - ddms_compliance_suite.test_orchestrator - WARNING - 未知的解析规范类型: 。将阶段应用于整个规范 (api_group_name=None). +2025-07-11 18:57:44,887 - ddms_compliance_suite.test_orchestrator - INFO - 将针对 1 个API分组评估测试阶段: [None] +2025-07-11 18:57:44,887 - ddms_compliance_suite.test_orchestrator - INFO - 处理测试阶段定义: ID='dms_crud_scenario_stage', Name='DMS Full CRUD Scenario' +2025-07-11 18:57:44,887 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备阶段 'dms_crud_scenario_stage' 的上下文,针对API分组: 'Global' +2025-07-11 18:57:44,887 - ddms_compliance_suite.test_orchestrator - DEBUG - For Global context, selected 10 endpoint objects. +2025-07-11 18:57:44,887 - ddms_compliance_suite.test_orchestrator - DEBUG - 为阶段 'dms_crud_scenario_stage' 和分组 'Global' 实例化。API对象数量: 10. 元数据: {'name': 'Global (所有API)', 'description': '适用于规范中的所有API'} +2025-07-11 18:57:44,887 - ddms_compliance_suite.test_orchestrator - DEBUG - 检查阶段 'dms_crud_scenario_stage' 是否适用于API分组 'Global'... +2025-07-11 18:57:44,887 - ddms_compliance_suite.stage_framework.DmsCrudScenarioStage - INFO - Found complete CRUD scenario for DMS resource: 'lujing_test' +2025-07-11 18:57:44,887 - ddms_compliance_suite.stage_framework.DmsCrudScenarioStage - INFO - Found complete CRUD scenario for DMS resource: 'wb_dr_pro_daily_report' +2025-07-11 18:57:44,887 - ddms_compliance_suite.test_orchestrator - INFO - 测试阶段 'dms_crud_scenario_stage' 适用于API分组 'Global'。开始执行... +2025-07-11 18:57:44,887 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试阶段: ID='dms_crud_scenario_stage', Name='DMS Full CRUD Scenario', API分组='Global' +2025-07-11 18:57:44,887 - ddms_compliance_suite.test_orchestrator - DEBUG - 调用 stage 'dms_crud_scenario_stage' 的 before_stage 钩子。初始上下文: {} +2025-07-11 18:57:44,887 - ddms_compliance_suite.stage_framework.DmsCrudScenarioStage - INFO - Setting up before_stage for scenario: ['create', 'list', 'read', 'update', 'delete'] +2025-07-11 18:57:44,887 - ddms_compliance_suite.test_orchestrator - INFO - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 开始执行. +2025-07-11 18:57:44,887 - ddms_compliance_suite.test_orchestrator - DEBUG - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 调用 before_step 钩子. 上下文: {'pk_name': 'description', 'pk_value': 'c3782722-693c-41e0-8f7a-6121c09ab40e', 'current_payload': {'description': 'test-entry-from-scenario'}, 'update_payload': {'description': 'updated-test-entry-from-scenario'}, 'scenario_endpoints': {'create': , 'list': , 'read': , 'update': , 'delete': }} +2025-07-11 18:57:44,887 - ddms_compliance_suite.stage_framework.DmsCrudScenarioStage - DEBUG - Executing before_step for step 'Step 1: Create Resource' in stage 'dms_crud_scenario_stage' +2025-07-11 18:57:44,887 - ddms_compliance_suite.test_orchestrator - DEBUG - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 查找端点定义. Key='CREATE', Group='None' +2025-07-11 18:57:44,887 - ddms_compliance_suite.test_orchestrator - INFO - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 已解析端点 'POST /api/dms/wb_ml/v1/lujing_test'. 准备请求数据. +2025-07-11 18:57:44,887 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json +2025-07-11 18:57:44,887 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json +2025-07-11 18:57:44,887 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,887 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,888 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 +2025-07-11 18:57:44,888 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,888 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,888 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,888 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,888 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,888 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,888 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.888069 +2025-07-11 18:57:44,888 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) +2025-07-11 18:57:44,888 - ddms_compliance_suite.test_orchestrator - DEBUG - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 应用请求覆盖: {'body': {'data': ['{{stage_context.current_payload}}']}} +2025-07-11 18:57:44,888 - ddms_compliance_suite.test_orchestrator - DEBUG - [阶段步骤 'Step 1: Create Resource'] 解析上下文路径: 'current_payload' 来自模板 '{{stage_context.current_payload}}' +2025-07-11 18:57:44,888 - ddms_compliance_suite.test_orchestrator - INFO - [测试阶段步骤 'Step 1: Create Resource'] 从上下文解析到值 '{'description': 'test-entry-from-scenario'}...' (路径: 'current_payload') +2025-07-11 18:57:44,889 - ddms_compliance_suite.test_orchestrator - INFO - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 发送API请求: POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_orchestrator - INFO - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 收到响应. Status: 400. 验证中... +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_orchestrator - WARNING - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 预期状态码为 [200, 201], 实际为 400. +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_orchestrator - DEBUG - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 执行断言 'validate_response_is_true' +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_orchestrator - WARNING - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 断言 'validate_response_is_true' 失败: Expected response data to be true, but it was 'None'. +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_orchestrator - DEBUG - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 提取输出到上下文. Map: {} +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_orchestrator - DEBUG - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 调用 after_step 钩子. +2025-07-11 18:57:44,890 - ddms_compliance_suite.stage_framework.DmsCrudScenarioStage - DEBUG - Executing after_step for step 'Step 1: Create Resource' in stage 'dms_crud_scenario_stage' +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_orchestrator - INFO - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 执行完毕. 状态: 失败, 耗时: 0.00s +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_orchestrator - WARNING - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 状态为 失败 且 continue_on_failure=False. 中止测试阶段 'dms_crud_scenario_stage'. +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_orchestrator - DEBUG - 调用 stage 'dms_crud_scenario_stage' 的 after_stage 钩子. 当前阶段结果状态: 失败 +2025-07-11 18:57:44,890 - ddms_compliance_suite.stage_framework.DmsCrudScenarioStage - INFO - Finished scenario 1/2 for this group. +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_orchestrator - INFO - 测试阶段 'dms_crud_scenario_stage' (API分组: 'Global') 执行完毕. 最终状态: 失败, 耗时: 0.00s +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_orchestrator - INFO - API Test Stage execution processed. Considered 1 (stage_definition x api_group) combinations. +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,890 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,891 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: POST /api/dms/wb_ml/v1/lujing_test (Create lujing_test) +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/wb_ml/v1/lujing_test' 发现了 20 个适用的测试用例 (已排序): ['TC-STATUS-001', 'TC-HEADER-001', 'TC-SECURITY-002', 'TC-LLM-COMPLIANCE-001', 'TC-RESTful-001', 'TC-DMS-PAGINATION-001', 'TC-RESTful-004', 'TC-RESTful-002', 'TC-DMS-CORE-SCHEMA-001', 'TC-CORE-FUNC-001', 'TC-RESTful-003', 'TC-DMS-URL-VERSION-001', 'TC-CORE-FUNC-002', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4002', 'TC-ERROR-4006', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY'] +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,892 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'POST /api/dms/wb_ml/v1/lujing_test' 初始化。 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.892671 +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,892 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,893 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,893 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-STATUS-001' 执行成功。 +2025-07-11 18:57:44,893 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,893 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-HEADER-001' for 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,893 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,893 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,893 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,893 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,893 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,893 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,893 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: RequiredHeadersSchemaCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,893 - RequiredHeadersSchemaCheck - INFO - 测试用例 TC-HEADER-001 (必需请求头Schema验证) 已针对端点 'POST /api/dms/wb_ml/v1/lujing_test' 初始化。 +2025-07-11 18:57:44,893 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-HEADER-001' (必需请求头Schema验证) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,893 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json +2025-07-11 18:57:44,893 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json +2025-07-11 18:57:44,893 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,893 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,893 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 +2025-07-11 18:57:44,893 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,893 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,893 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,893 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,893 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,893 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,893 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.893971 +2025-07-11 18:57:44,893 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) +2025-07-11 18:57:44,894 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,894 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,894 - RequiredHeadersSchemaCheck - INFO - API端点: POST /api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,894 - RequiredHeadersSchemaCheck - INFO - 发现的header参数: [] +2025-07-11 18:57:44,894 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Tenant-ID: 找到=False, 必需=False, 名称=None +2025-07-11 18:57:44,894 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Tenant-ID +2025-07-11 18:57:44,894 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Data-Domain: 找到=False, 必需=False, 名称=None +2025-07-11 18:57:44,894 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Data-Domain +2025-07-11 18:57:44,894 - RequiredHeadersSchemaCheck - INFO - 检查请求头 Authorization: 找到=False, 必需=False, 名称=None +2025-07-11 18:57:44,894 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 Authorization +2025-07-11 18:57:44,894 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-HEADER-001' 执行失败。 +2025-07-11 18:57:44,894 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 失败 +2025-07-11 18:57:44,894 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-002' for 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,894 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,894 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,894 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,894 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,894 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,894 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,894 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: EncryptedFieldsCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,895 - testcase.TC-SECURITY-002 - INFO - 测试用例 TC-SECURITY-002 (敏感字段加密检查) 已初始化,将检查以下敏感字段是否加密: {'coord', 'position', 'location'} +2025-07-11 18:57:44,895 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-002' (敏感字段加密检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,895 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json +2025-07-11 18:57:44,895 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json +2025-07-11 18:57:44,895 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,895 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,895 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 +2025-07-11 18:57:44,895 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,895 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,895 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,895 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,895 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,895 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,895 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.895131 +2025-07-11 18:57:44,895 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) +2025-07-11 18:57:44,895 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,895 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,895 - testcase.TC-SECURITY-002 - INFO - response_context.json_content: {'code': 0, 'data': True, 'message': '创建成功'} +2025-07-11 18:57:44,895 - testcase.TC-SECURITY-002 - INFO - response_data:{'code': 0, 'data': True, 'message': '创建成功'} +2025-07-11 18:57:44,896 - testcase.TC-SECURITY-002 - INFO - 未在响应中找到需要检查的敏感字段。 +2025-07-11 18:57:44,896 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-SECURITY-002' 执行成功。 +2025-07-11 18:57:44,896 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-002' 执行完毕,状态: 通过 +2025-07-11 18:57:44,896 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-LLM-COMPLIANCE-001' for 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,896 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,896 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,896 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,896 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,896 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,896 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,896 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: LLMComplianceCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,896 - testcase.TC-LLM-COMPLIANCE-001 - INFO - 已加载合规性标准: [] +2025-07-11 18:57:44,896 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-LLM-COMPLIANCE-001' (LLM合规性综合检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,896 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json +2025-07-11 18:57:44,896 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json +2025-07-11 18:57:44,896 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,896 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,896 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 +2025-07-11 18:57:44,896 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,896 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,896 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,896 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,896 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,896 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,896 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.896599 +2025-07-11 18:57:44,896 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) +2025-07-11 18:57:44,896 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,896 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,897 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-LLM-COMPLIANCE-001' 执行成功。 +2025-07-11 18:57:44,897 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,897 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-001' for 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,897 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,897 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,897 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,897 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,897 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,897 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,897 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: CoreNamingStructureTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,897 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-001' (核心命名与结构规范检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,897 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json +2025-07-11 18:57:44,897 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json +2025-07-11 18:57:44,897 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,897 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,897 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 +2025-07-11 18:57:44,897 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,897 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,897 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,897 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,897 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,897 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,897 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.897636 +2025-07-11 18:57:44,897 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) +2025-07-11 18:57:44,897 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,897 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,898 - testcase.TC-RESTful-001 - INFO - responses: {'200': {'description': 'Success', 'content': {'application/json': {'schema': {'type': 'object', 'properties': {'code': {'type': 'integer'}, 'message': {'type': 'string'}, 'data': {'type': 'boolean'}}}}}}} +2025-07-11 18:57:44,898 - testcase.TC-RESTful-001 - INFO - 检查响应定义: status_code=200, 可用响应定义=['200'] +2025-07-11 18:57:44,898 - testcase.TC-RESTful-001 - INFO - 找到精确状态码 200 的响应定义 +2025-07-11 18:57:44,898 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-001' 执行成功。 +2025-07-11 18:57:44,898 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,898 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-PAGINATION-001' for 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,898 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,898 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,898 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,898 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,898 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,898 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,898 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: PaginationParamsCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,898 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-PAGINATION-001' (分页参数检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,898 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json +2025-07-11 18:57:44,898 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json +2025-07-11 18:57:44,898 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,898 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,898 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 +2025-07-11 18:57:44,898 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,898 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,898 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,898 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,898 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,898 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,898 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.898778 +2025-07-11 18:57:44,898 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) +2025-07-11 18:57:44,898 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,898 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,899 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-DMS-PAGINATION-001' 执行失败。 +2025-07-11 18:57:44,899 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 执行完毕,状态: 失败 +2025-07-11 18:57:44,899 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-004' for 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,899 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,899 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,899 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,899 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,899 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,899 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,899 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourceCollectionPluralCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,899 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-004' (资源集合复数命名检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,899 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json +2025-07-11 18:57:44,899 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json +2025-07-11 18:57:44,899 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,899 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,899 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 +2025-07-11 18:57:44,899 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,899 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,899 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,899 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,899 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,899 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,899 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.899742 +2025-07-11 18:57:44,899 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) +2025-07-11 18:57:44,899 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,899 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 55' -d '{"data": [{"description": "test-entry-from-scenario"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 55\' -d \'{"data": [{"description": "test-entry-from-scenario"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.892671"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.892671"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.893971"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.893971"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.895131"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.895131"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.896599"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.896599"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.897636"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.897636"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' status_code: 200 responses: {'200': {'description': 'Success', 'content': {'application/json': {'schema': {'type': 'object', 'properties': {'code': {'type': 'integer'}, 'message': {'type': 'string'}, 'data': {'type': 'boolean'}}}}}}} -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.374582"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.374582"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.375834"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.375834"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.376983"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,377 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-002' 执行成功。 -2025-07-11 17:53:11,377 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-002' 执行完毕,状态: 通过 -2025-07-11 17:53:11,377 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-CORE-SCHEMA-001' for 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,377 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,377 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,377 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,377 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,377 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,377 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,377 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaFormatCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,377 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-CORE-SCHEMA-001' (DMS核心存储服务API响应格式检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,377 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json -2025-07-11 17:53:11,377 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json -2025-07-11 17:53:11,377 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,377 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,377 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 -2025-07-11 17:53:11,377 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,377 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,377 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,377 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,377 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,377 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,378 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.378001 -2025-07-11 17:53:11,378 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) -2025-07-11 17:53:11,378 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,378 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,378 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行成功。 -2025-07-11 17:53:11,378 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,378 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-001' for 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,378 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,378 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,378 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,378 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,378 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,378 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,379 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,379 - testcase.TC-CORE-FUNC-001 - INFO - 测试用例 'TC-CORE-FUNC-001' 已为端点 'POST /api/dms/wb_ml/v1/lujing_test' 初始化。 -2025-07-11 17:53:11,379 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-001' (返回体JSON Schema验证) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,379 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json -2025-07-11 17:53:11,379 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json -2025-07-11 17:53:11,379 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,379 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,379 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 -2025-07-11 17:53:11,379 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,379 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,379 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,379 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,379 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,379 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,379 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.379166 -2025-07-11 17:53:11,379 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) -2025-07-11 17:53:11,379 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,379 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,380 - ddms_compliance_suite.utils.schema_provider - DEBUG - 尝试从API规范中为状态码 200 查找Schema。 -2025-07-11 17:53:11,380 - testcase.TC-CORE-FUNC-001 - INFO - 将根据从API规范中获取的schema验证响应体。 -2025-07-11 17:53:11,381 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-001' 执行成功。 -2025-07-11 17:53:11,381 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,381 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-003' for 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,381 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,381 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,381 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,381 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,381 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,381 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,381 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TimeFormatCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,381 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-003' (时间字段ISO 8601格式检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,381 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json -2025-07-11 17:53:11,381 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json -2025-07-11 17:53:11,381 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,381 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,381 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 -2025-07-11 17:53:11,381 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,381 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,381 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,381 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,381 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,381 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,381 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.381778 -2025-07-11 17:53:11,381 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) -2025-07-11 17:53:11,381 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,381 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,382 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-003' 执行成功。 -2025-07-11 17:53:11,382 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-003' 执行完毕,状态: 通过 -2025-07-11 17:53:11,382 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-URL-VERSION-001' for 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,382 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,382 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,382 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,382 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,382 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,382 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,382 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: URLVersionCheckCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,382 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-URL-VERSION-001' (DMS API URL版本号检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,382 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json -2025-07-11 17:53:11,382 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json -2025-07-11 17:53:11,382 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,382 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,382 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 -2025-07-11 17:53:11,382 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,382 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,383 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,383 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,383 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,383 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,383 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.383039 -2025-07-11 17:53:11,383 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) -2025-07-11 17:53:11,383 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,383 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,384 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-URL-VERSION-001' 执行成功。 -2025-07-11 17:53:11,384 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,384 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-002' for 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,384 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,384 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,384 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,384 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,384 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,384 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,384 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: FlexibleSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,384 - testcase.TC-CORE-FUNC-002 - INFO - 测试用例 'TC-CORE-FUNC-002' 已为端点 'POST /api/dms/wb_ml/v1/lujing_test' 初始化。 -2025-07-11 17:53:11,384 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-002' (灵活的返回体JSON Schema验证) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,384 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json -2025-07-11 17:53:11,384 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json -2025-07-11 17:53:11,384 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,384 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,384 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 -2025-07-11 17:53:11,384 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,384 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,384 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,384 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,384 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,384 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,384 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.384282 -2025-07-11 17:53:11,384 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) -2025-07-11 17:53:11,384 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,384 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,385 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-002' 执行成功。 -2025-07-11 17:53:11,385 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-002' 执行完毕,状态: 通过 -2025-07-11 17:53:11,385 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-001' for 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,385 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,385 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,385 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,385 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,385 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,385 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,385 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: HTTPSMandatoryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,385 - testcase.TC-SECURITY-001 - INFO - 测试用例 'TC-SECURITY-001' 已为端点 'POST /api/dms/wb_ml/v1/lujing_test' 初始化。 -2025-07-11 17:53:11,385 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-001' (HTTPS 协议强制性检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,385 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json -2025-07-11 17:53:11,385 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json -2025-07-11 17:53:11,385 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,385 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,385 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 -2025-07-11 17:53:11,385 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,385 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,385 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,385 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,385 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,385 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,385 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.385306 -2025-07-11 17:53:11,385 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) -2025-07-11 17:53:11,385 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,385 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,385 - testcase.TC-SECURITY-001 - WARNING - 原始URL 'http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' 不是HTTPS。跳过此测试用例的URL修改。 -2025-07-11 17:53:11,386 - testcase.TC-SECURITY-001 - ERROR - 安全漏洞:API允许通过HTTP成功响应 (200)。 -2025-07-11 17:53:11,386 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-SECURITY-001' 执行失败。 -2025-07-11 17:53:11,386 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-001' 执行完毕,状态: 失败 -2025-07-11 17:53:11,386 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-QUERY' for 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,386 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,386 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,386 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,386 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,386 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,386 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,386 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchQueryParamCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,386 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Initializing: Looking for a simple type query parameter for type mismatch test. -2025-07-11 17:53:11,386 - testcase.TC-ERROR-4001-QUERY - INFO - _find_first_simple_type_parameter: No suitable simple type field found for query parameters. -2025-07-11 17:53:11,386 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No suitable simple type query parameter found for type mismatch test. -2025-07-11 17:53:11,386 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-QUERY' (查询参数类型不匹配检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,386 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json -2025-07-11 17:53:11,386 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json -2025-07-11 17:53:11,386 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,386 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,386 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 -2025-07-11 17:53:11,386 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,386 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,386 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,386 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,386 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,386 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,386 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.386350 -2025-07-11 17:53:11,386 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) -2025-07-11 17:53:11,386 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No target field or original type identified for query param type mismatch. Skipping query param modification. -2025-07-11 17:53:11,386 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,386 - testcase.TC-ERROR-4001-QUERY - DEBUG - TC-ERROR-4001-QUERY is focused on query parameters, generate_request_body will not modify the body. -2025-07-11 17:53:11,386 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,386 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,386 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,386 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' did not modify the URL via modify_request_url hook. -2025-07-11 17:53:11,386 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,386 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,386 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_body, body type: -2025-07-11 17:53:11,388 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Skipped type mismatch (query) validation: No target query parameter was identified. -2025-07-11 17:53:11,388 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: check_performance, elapsed: 0.0015761852264404297 -2025-07-11 17:53:11,388 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4001-QUERY' 执行成功。 -2025-07-11 17:53:11,388 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 执行完毕,状态: 通过 -2025-07-11 17:53:11,388 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-BODY' for 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,388 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,388 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,388 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,388 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,388 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,388 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,388 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,388 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Initializing: Looking for a simple type field in request body for type mismatch test. -2025-07-11 17:53:11,388 - testcase.TC-ERROR-4001-BODY - DEBUG - Found request body schema in content type: application/json -2025-07-11 17:53:11,388 - testcase.TC-ERROR-4001-BODY - DEBUG - _find_simple_type_field_in_schema: Searching for simple type field in 'request body' schema... -2025-07-11 17:53:11,388 - testcase.TC-ERROR-4001-BODY - INFO - Found simple type field: Path=version, Type=string -2025-07-11 17:53:11,388 - testcase.TC-ERROR-4001-BODY - INFO - _find_simple_type_field_in_schema: Found simple type field in 'request body': Path=version, Type=string -2025-07-11 17:53:11,388 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Target field for type mismatch (body): version, Original Type: string -2025-07-11 17:53:11,388 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-BODY' (请求体字段类型不匹配检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,388 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json -2025-07-11 17:53:11,388 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json -2025-07-11 17:53:11,388 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,388 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,388 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 -2025-07-11 17:53:11,388 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,388 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,388 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,388 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,388 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,388 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,388 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.388387 -2025-07-11 17:53:11,388 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) -2025-07-11 17:53:11,388 - testcase.TC-ERROR-4001-BODY - DEBUG - TC-ERROR-4001-BODY is focused on request body, generate_query_params will not modify query parameters. -2025-07-11 17:53:11,388 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,388 - testcase.TC-ERROR-4001-BODY - DEBUG - [TC-ERROR-4001-BODY] Preparing to modify request body for type mismatch. Target path: ['version'], Original type: string -2025-07-11 17:53:11,388 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Generated mismatched value '12345' for original type 'string' at path 'version'. -2025-07-11 17:53:11,388 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 在路径 version (键 'version') 处设置值为 '12345' -2025-07-11 17:53:11,388 - testcase.TC-ERROR-4001-BODY - DEBUG - [TC-ERROR-4001-BODY] Successfully set mismatched value at path using util_set_value_at_path. -2025-07-11 17:53:11,388 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,388 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,388 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,388 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' did not modify the URL via modify_request_url hook. -2025-07-11 17:53:11,388 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,388 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,388 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_body, body type: -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.376983"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.378001"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.378001"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.379166"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.379166"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.381778"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.381778"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.383039"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.383039"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.384282"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.384282"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.385306"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.385306"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.386350"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.386350"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,389 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: check_performance, elapsed: 0.0007448196411132812 -2025-07-11 17:53:11,389 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4001-BODY' 执行失败。 -2025-07-11 17:53:11,389 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 执行完毕,状态: 失败 -2025-07-11 17:53:11,389 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4002' for 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,389 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,389 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,389 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,389 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,389 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,389 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,389 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: NumberOutOfRangeCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,389 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Searching for a ranged numeric field... -2025-07-11 17:53:11,389 - testcase.TC-ERROR-4002 - DEBUG - Found request body schema in content type: application/json -2025-07-11 17:53:11,389 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in request body. -2025-07-11 17:53:11,389 - testcase.TC-ERROR-4002 - DEBUG - 在路径 data.0.record_count 找到范围受限字段。 -2025-07-11 17:53:11,389 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Found ranged numeric field in BODY at path: data.0.record_count -2025-07-11 17:53:11,389 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Target found in 'body' at path 'data.0.record_count'. Type: integer, Min: 0, Max: 10000, Desc: '' -2025-07-11 17:53:11,389 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Setting out-of-range value to 10001 (max is 10000). -2025-07-11 17:53:11,389 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4002' (数值参数越界检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,389 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json -2025-07-11 17:53:11,389 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json -2025-07-11 17:53:11,389 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,389 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,389 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 -2025-07-11 17:53:11,389 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,389 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,389 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,389 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,389 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,389 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,389 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.389858 -2025-07-11 17:53:11,389 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) -2025-07-11 17:53:11,389 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 在路径 data.0.record_count (键 'record_count') 处设置值为 '10001' -2025-07-11 17:53:11,389 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Successfully injected out-of-range value into parameters. -2025-07-11 17:53:11,389 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,389 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,389 - testcase.TC-ERROR-4002 - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,389 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' did not modify the URL via modify_request_url hook. -2025-07-11 17:53:11,389 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,389 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,389 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_body, body type: -2025-07-11 17:53:11,390 - testcase.TC-ERROR-4002 - DEBUG - Hook: check_performance, elapsed: 0.0007638931274414062 -2025-07-11 17:53:11,390 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4002' 执行失败。 -2025-07-11 17:53:11,390 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4002' 执行完毕,状态: 失败 -2025-07-11 17:53:11,390 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4006' for 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,390 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,390 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,390 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,390 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,390 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,390 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,390 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: InvalidEnumValueCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,390 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] Searching for a field with enum constraints... -2025-07-11 17:53:11,391 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No field with enum constraints found in any location. -2025-07-11 17:53:11,391 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No suitable enum field found for this endpoint. -2025-07-11 17:53:11,391 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4006' (非法枚举值检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,391 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json -2025-07-11 17:53:11,391 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json -2025-07-11 17:53:11,391 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,391 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,391 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 -2025-07-11 17:53:11,391 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,391 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,391 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,391 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,391 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,391 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,391 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.391574 -2025-07-11 17:53:11,391 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) -2025-07-11 17:53:11,391 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,391 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,392 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4006' 执行成功。 -2025-07-11 17:53:11,392 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4006' 执行完毕,状态: 通过 -2025-07-11 17:53:11,392 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-BODY' for 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,392 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,392 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,392 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,392 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,392 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,392 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,392 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,392 - ddms_compliance_suite.utils.schema_utils - DEBUG - [Util] 递归查找路径: [], 当前层级必填字段: ['data'], 属性: ['version', 'act', 'data'] -2025-07-11 17:53:11,392 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 策略1: 在路径 root 找到可直接移除的必填字段: 'data' -2025-07-11 17:53:11,392 - testcase.TC-ERROR-4003-BODY - INFO - Found a removable field path in 'request body' schema: 'data' -2025-07-11 17:53:11,392 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-BODY' (缺失必填请求体字段检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,392 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json -2025-07-11 17:53:11,392 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json -2025-07-11 17:53:11,392 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,392 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,392 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 -2025-07-11 17:53:11,392 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,392 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,392 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,392 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,392 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,392 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,392 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.392751 -2025-07-11 17:53:11,392 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) -2025-07-11 17:53:11,392 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 从路径 'data' 成功移除字段 'data' (原值: '[{'description': 'example_string', 'lujing_test_id': 'example_string', 'record_count': 0, 'status': 'active', 'update_date': '2025-07-11T17:53:11.392751'}]')。 -2025-07-11 17:53:11,392 - testcase.TC-ERROR-4003-BODY - INFO - 为进行必填字段缺失测试,已通过工具方法从请求体中移除字段路径 'data'。 -2025-07-11 17:53:11,392 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,392 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,393 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4003-BODY' 执行失败。 -2025-07-11 17:53:11,393 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 执行完毕,状态: 失败 -2025-07-11 17:53:11,393 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-QUERY' for 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,393 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,393 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,393 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,393 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,393 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,393 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,393 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldQueryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,393 - testcase.TC-ERROR-4003-QUERY - INFO - No required 'query' parameter found in endpoint_spec. -2025-07-11 17:53:11,393 - testcase.TC-ERROR-4003-QUERY - INFO - 测试用例 TC-ERROR-4003-QUERY (缺失必填查询参数检查) 已针对端点 'POST /api/dms/wb_ml/v1/lujing_test' 初始化。Target param to remove: None -2025-07-11 17:53:11,393 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-QUERY' (缺失必填查询参数检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,393 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json -2025-07-11 17:53:11,393 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json -2025-07-11 17:53:11,393 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,393 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,393 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 -2025-07-11 17:53:11,393 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,393 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,393 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,393 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,393 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,393 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,394 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.394004 -2025-07-11 17:53:11,394 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) -2025-07-11 17:53:11,394 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,394 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,394 - testcase.TC-ERROR-4003-QUERY - INFO - 由于未识别到可移除的必填查询参数,跳过此测试用例。 -2025-07-11 17:53:11,394 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4003-QUERY' 执行成功。 -2025-07-11 17:53:11,394 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 执行完毕,状态: 通过 -2025-07-11 17:53:11,394 - root - INFO - strictness_level: TestSeverity.CRITICAL -2025-07-11 17:53:11,394 - root - INFO - strictness_level: TestSeverity.CRITICAL -2025-07-11 17:53:11,394 - root - INFO - relevant_failed_tcs: [] -2025-07-11 17:53:11,394 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/wb_ml/v1/lujing_test' 测试完成,最终状态: 通过 -2025-07-11 17:53:11,394 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: POST /api/dms/wb_ml/v1/lujing_test/1.0.0 (List lujing_test) -2025-07-11 17:53:11,394 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,394 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,394 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,394 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,394 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,394 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,394 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,394 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,394 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,394 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,394 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,394 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,394 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,394 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,394 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,394 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,394 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,394 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,394 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,394 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 -2025-07-11 17:53:11,395 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' 发现了 20 个适用的测试用例 (已排序): ['TC-STATUS-001', 'TC-HEADER-001', 'TC-SECURITY-002', 'TC-LLM-COMPLIANCE-001', 'TC-RESTful-001', 'TC-DMS-PAGINATION-001', 'TC-RESTful-004', 'TC-RESTful-002', 'TC-DMS-CORE-SCHEMA-001', 'TC-CORE-FUNC-001', 'TC-RESTful-003', 'TC-DMS-URL-VERSION-001', 'TC-CORE-FUNC-002', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4002', 'TC-ERROR-4006', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY'] -2025-07-11 17:53:11,395 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,395 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,395 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,395 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,395 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,395 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,395 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,395 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,395 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' 初始化。 -2025-07-11 17:53:11,395 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,395 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json -2025-07-11 17:53:11,395 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json -2025-07-11 17:53:11,395 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,395 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,395 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,395 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,395 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-STATUS-001' 执行成功。 -2025-07-11 17:53:11,395 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,395 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-HEADER-001' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,395 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,395 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,395 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,395 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,395 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,396 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,396 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: RequiredHeadersSchemaCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,396 - RequiredHeadersSchemaCheck - INFO - 测试用例 TC-HEADER-001 (必需请求头Schema验证) 已针对端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' 初始化。 -2025-07-11 17:53:11,396 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-HEADER-001' (必需请求头Schema验证) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,396 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json -2025-07-11 17:53:11,396 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json -2025-07-11 17:53:11,396 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,396 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,396 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,396 - RequiredHeadersSchemaCheck - INFO - API端点: POST /api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,396 - RequiredHeadersSchemaCheck - INFO - 发现的header参数: [] -2025-07-11 17:53:11,396 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Tenant-ID: 找到=False, 必需=False, 名称=None -2025-07-11 17:53:11,396 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Tenant-ID -2025-07-11 17:53:11,396 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Data-Domain: 找到=False, 必需=False, 名称=None -2025-07-11 17:53:11,396 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Data-Domain -2025-07-11 17:53:11,396 - RequiredHeadersSchemaCheck - INFO - 检查请求头 Authorization: 找到=False, 必需=False, 名称=None -2025-07-11 17:53:11,396 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 Authorization -2025-07-11 17:53:11,396 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-HEADER-001' 执行失败。 -2025-07-11 17:53:11,396 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 失败 -2025-07-11 17:53:11,396 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-002' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,396 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,396 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,396 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,396 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,396 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,397 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,397 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: EncryptedFieldsCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,397 - testcase.TC-SECURITY-002 - INFO - 测试用例 TC-SECURITY-002 (敏感字段加密检查) 已初始化,将检查以下敏感字段是否加密: {'location', 'position', 'coord'} -2025-07-11 17:53:11,397 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-002' (敏感字段加密检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,397 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json -2025-07-11 17:53:11,397 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json -2025-07-11 17:53:11,397 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,397 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,397 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,397 - testcase.TC-SECURITY-002 - INFO - response_context.json_content: {'code': 0, 'data': [{'description': 'example_string', 'lujing_test_id': 'example_string', 'record_count': 0, 'status': 'active', 'update_date': '2025-07-11T17:53:11.394004'}], 'message': "获取 'lujing_test' 列表成功"} -2025-07-11 17:53:11,397 - testcase.TC-SECURITY-002 - INFO - response_data:{'code': 0, 'data': [{'description': 'example_string', 'lujing_test_id': 'example_string', 'record_count': 0, 'status': 'active', 'update_date': '2025-07-11T17:53:11.394004'}], 'message': "获取 'lujing_test' 列表成功"} -2025-07-11 17:53:11,397 - testcase.TC-SECURITY-002 - INFO - response_data:[{'description': 'example_string', 'lujing_test_id': 'example_string', 'record_count': 0, 'status': 'active', 'update_date': '2025-07-11T17:53:11.394004'}] -2025-07-11 17:53:11,397 - testcase.TC-SECURITY-002 - INFO - response_data:{'description': 'example_string', 'lujing_test_id': 'example_string', 'record_count': 0, 'status': 'active', 'update_date': '2025-07-11T17:53:11.394004'} -2025-07-11 17:53:11,397 - testcase.TC-SECURITY-002 - INFO - 未在响应中找到需要检查的敏感字段。 -2025-07-11 17:53:11,397 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-SECURITY-002' 执行成功。 -2025-07-11 17:53:11,397 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-002' 执行完毕,状态: 通过 -2025-07-11 17:53:11,397 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-LLM-COMPLIANCE-001' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,397 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,397 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,397 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,397 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,397 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,397 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,397 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: LLMComplianceCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,398 - testcase.TC-LLM-COMPLIANCE-001 - INFO - 已加载合规性标准: [] -2025-07-11 17:53:11,398 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-LLM-COMPLIANCE-001' (LLM合规性综合检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,398 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json -2025-07-11 17:53:11,398 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json -2025-07-11 17:53:11,398 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,398 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,398 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,398 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-LLM-COMPLIANCE-001' 执行成功。 -2025-07-11 17:53:11,398 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,398 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-001' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,398 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,398 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,398 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,398 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,398 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,399 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,399 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: CoreNamingStructureTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,399 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-001' (核心命名与结构规范检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,399 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json -2025-07-11 17:53:11,399 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json -2025-07-11 17:53:11,399 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,399 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,399 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,399 - testcase.TC-RESTful-001 - INFO - responses: {'200': {'description': 'Successful Operation', 'content': {'application/json': {'schema': {'type': 'object', 'properties': {'code': {'type': 'integer'}, 'message': {'type': 'string'}, 'data': {'type': 'array', 'items': {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}}}}}}}} -2025-07-11 17:53:11,399 - testcase.TC-RESTful-001 - INFO - 检查响应定义: status_code=200, 可用响应定义=['200'] -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 193' -d '{"version": 12345, "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.388387"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 193\' -d \'{"version": 12345, "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.388387"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 199' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 10001, "status": "active", "update_date": "2025-07-11T17:53:11.389858"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 199\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 10001, "status": "active", "update_date": "2025-07-11T17:53:11.389858"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.391574"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.391574"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.898778"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.898778"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.899742"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,900 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-RESTful-004' 执行失败。 +2025-07-11 18:57:44,900 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-004' 执行完毕,状态: 失败 +2025-07-11 18:57:44,900 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-002' for 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,900 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,900 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,900 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,900 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,900 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,900 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,900 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourcePathNounCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,900 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-002' (资源路径名词检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,900 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json +2025-07-11 18:57:44,900 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json +2025-07-11 18:57:44,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 +2025-07-11 18:57:44,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,900 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.900781 +2025-07-11 18:57:44,900 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) +2025-07-11 18:57:44,900 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,900 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,901 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-002' 执行成功。 +2025-07-11 18:57:44,901 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-002' 执行完毕,状态: 通过 +2025-07-11 18:57:44,901 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-CORE-SCHEMA-001' for 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,901 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,901 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,901 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,901 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,901 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,901 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,901 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaFormatCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,901 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-CORE-SCHEMA-001' (DMS核心存储服务API响应格式检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,901 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json +2025-07-11 18:57:44,901 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json +2025-07-11 18:57:44,901 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,901 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,901 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 +2025-07-11 18:57:44,901 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,901 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,901 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,901 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,901 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,901 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,901 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.901796 +2025-07-11 18:57:44,901 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) +2025-07-11 18:57:44,901 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,901 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,902 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行成功。 +2025-07-11 18:57:44,902 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,902 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-001' for 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,902 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,902 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,902 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,902 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,902 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,902 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,902 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,902 - testcase.TC-CORE-FUNC-001 - INFO - 测试用例 'TC-CORE-FUNC-001' 已为端点 'POST /api/dms/wb_ml/v1/lujing_test' 初始化。 +2025-07-11 18:57:44,902 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-001' (返回体JSON Schema验证) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,902 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json +2025-07-11 18:57:44,902 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json +2025-07-11 18:57:44,902 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,902 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,902 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 +2025-07-11 18:57:44,902 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,902 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,902 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,902 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,902 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,902 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,902 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.902823 +2025-07-11 18:57:44,902 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) +2025-07-11 18:57:44,902 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,902 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,903 - ddms_compliance_suite.utils.schema_provider - DEBUG - 尝试从API规范中为状态码 200 查找Schema。 +2025-07-11 18:57:44,903 - testcase.TC-CORE-FUNC-001 - INFO - 将根据从API规范中获取的schema验证响应体。 +2025-07-11 18:57:44,904 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-001' 执行成功。 +2025-07-11 18:57:44,904 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,904 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-003' for 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,904 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,904 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,904 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,904 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,904 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,904 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,904 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TimeFormatCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,904 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-003' (时间字段ISO 8601格式检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,904 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json +2025-07-11 18:57:44,904 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json +2025-07-11 18:57:44,904 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,904 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,904 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 +2025-07-11 18:57:44,904 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,904 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,904 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,904 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,904 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,904 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,904 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.904921 +2025-07-11 18:57:44,904 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) +2025-07-11 18:57:44,904 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,904 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,905 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-003' 执行成功。 +2025-07-11 18:57:44,905 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-003' 执行完毕,状态: 通过 +2025-07-11 18:57:44,905 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-URL-VERSION-001' for 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,905 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,905 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,905 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,905 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,905 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,905 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,905 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: URLVersionCheckCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,905 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-URL-VERSION-001' (DMS API URL版本号检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,905 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json +2025-07-11 18:57:44,905 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json +2025-07-11 18:57:44,905 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,905 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,905 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 +2025-07-11 18:57:44,905 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,905 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,905 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,905 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,905 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,906 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,906 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.906008 +2025-07-11 18:57:44,906 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) +2025-07-11 18:57:44,906 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,906 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,906 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-URL-VERSION-001' 执行成功。 +2025-07-11 18:57:44,906 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,906 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-002' for 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,906 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,906 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,906 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,906 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,906 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,906 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,906 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: FlexibleSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,907 - testcase.TC-CORE-FUNC-002 - INFO - 测试用例 'TC-CORE-FUNC-002' 已为端点 'POST /api/dms/wb_ml/v1/lujing_test' 初始化。 +2025-07-11 18:57:44,907 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-002' (灵活的返回体JSON Schema验证) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,907 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json +2025-07-11 18:57:44,907 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json +2025-07-11 18:57:44,907 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,907 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,907 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 +2025-07-11 18:57:44,907 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,907 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,907 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,907 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,907 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,907 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,907 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.907137 +2025-07-11 18:57:44,907 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) +2025-07-11 18:57:44,907 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,907 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,907 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-002' 执行成功。 +2025-07-11 18:57:44,907 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-002' 执行完毕,状态: 通过 +2025-07-11 18:57:44,907 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-001' for 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,907 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,907 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,907 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,907 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,907 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,907 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,907 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: HTTPSMandatoryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,907 - testcase.TC-SECURITY-001 - INFO - 测试用例 'TC-SECURITY-001' 已为端点 'POST /api/dms/wb_ml/v1/lujing_test' 初始化。 +2025-07-11 18:57:44,907 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-001' (HTTPS 协议强制性检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,907 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json +2025-07-11 18:57:44,907 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json +2025-07-11 18:57:44,908 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,908 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,908 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 +2025-07-11 18:57:44,908 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,908 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,908 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,908 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,908 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,908 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,908 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.908090 +2025-07-11 18:57:44,908 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) +2025-07-11 18:57:44,908 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,908 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,908 - testcase.TC-SECURITY-001 - WARNING - 原始URL 'http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' 不是HTTPS。跳过此测试用例的URL修改。 +2025-07-11 18:57:44,908 - testcase.TC-SECURITY-001 - ERROR - 安全漏洞:API允许通过HTTP成功响应 (200)。 +2025-07-11 18:57:44,908 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-SECURITY-001' 执行失败。 +2025-07-11 18:57:44,908 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-001' 执行完毕,状态: 失败 +2025-07-11 18:57:44,908 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-QUERY' for 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,908 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,908 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,908 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,908 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,908 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,908 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,908 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchQueryParamCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,909 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Initializing: Looking for a simple type query parameter for type mismatch test. +2025-07-11 18:57:44,909 - testcase.TC-ERROR-4001-QUERY - INFO - _find_first_simple_type_parameter: No suitable simple type field found for query parameters. +2025-07-11 18:57:44,909 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No suitable simple type query parameter found for type mismatch test. +2025-07-11 18:57:44,909 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-QUERY' (查询参数类型不匹配检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,909 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json +2025-07-11 18:57:44,909 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json +2025-07-11 18:57:44,909 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,909 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,909 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 +2025-07-11 18:57:44,909 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,909 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,909 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,909 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,909 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,909 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,909 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.909170 +2025-07-11 18:57:44,909 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) +2025-07-11 18:57:44,909 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No target field or original type identified for query param type mismatch. Skipping query param modification. +2025-07-11 18:57:44,909 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:44,909 - testcase.TC-ERROR-4001-QUERY - DEBUG - TC-ERROR-4001-QUERY is focused on query parameters, generate_request_body will not modify the body. +2025-07-11 18:57:44,909 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,909 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,909 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,909 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' did not modify the URL via modify_request_url hook. +2025-07-11 18:57:44,909 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,909 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:44,909 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_body, body type: +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.899742"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.900781"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.900781"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.901796"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.901796"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.902823"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.902823"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.904921"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.904921"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.906008"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.906008"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.907137"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.907137"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.908090"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.908090"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,910 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Skipped type mismatch (query) validation: No target query parameter was identified. +2025-07-11 18:57:44,910 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: check_performance, elapsed: 0.0007529258728027344 +2025-07-11 18:57:44,910 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4001-QUERY' 执行成功。 +2025-07-11 18:57:44,910 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 执行完毕,状态: 通过 +2025-07-11 18:57:44,910 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-BODY' for 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,910 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,910 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,910 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,910 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,910 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,910 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,910 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,910 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Initializing: Looking for a simple type field in request body for type mismatch test. +2025-07-11 18:57:44,910 - testcase.TC-ERROR-4001-BODY - DEBUG - Found request body schema in content type: application/json +2025-07-11 18:57:44,910 - testcase.TC-ERROR-4001-BODY - DEBUG - _find_simple_type_field_in_schema: Searching for simple type field in 'request body' schema... +2025-07-11 18:57:44,910 - testcase.TC-ERROR-4001-BODY - INFO - Found simple type field: Path=version, Type=string +2025-07-11 18:57:44,910 - testcase.TC-ERROR-4001-BODY - INFO - _find_simple_type_field_in_schema: Found simple type field in 'request body': Path=version, Type=string +2025-07-11 18:57:44,910 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Target field for type mismatch (body): version, Original Type: string +2025-07-11 18:57:44,910 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-BODY' (请求体字段类型不匹配检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,910 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json +2025-07-11 18:57:44,910 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json +2025-07-11 18:57:44,910 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,910 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,910 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 +2025-07-11 18:57:44,910 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,910 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,910 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,910 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,910 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,910 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,910 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.910366 +2025-07-11 18:57:44,910 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) +2025-07-11 18:57:44,910 - testcase.TC-ERROR-4001-BODY - DEBUG - TC-ERROR-4001-BODY is focused on request body, generate_query_params will not modify query parameters. +2025-07-11 18:57:44,910 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:44,910 - testcase.TC-ERROR-4001-BODY - DEBUG - [TC-ERROR-4001-BODY] Preparing to modify request body for type mismatch. Target path: ['version'], Original type: string +2025-07-11 18:57:44,910 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Generated mismatched value '12345' for original type 'string' at path 'version'. +2025-07-11 18:57:44,910 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 在路径 version (键 'version') 处设置值为 '12345' +2025-07-11 18:57:44,910 - testcase.TC-ERROR-4001-BODY - DEBUG - [TC-ERROR-4001-BODY] Successfully set mismatched value at path using util_set_value_at_path. +2025-07-11 18:57:44,910 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,910 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,910 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,910 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' did not modify the URL via modify_request_url hook. +2025-07-11 18:57:44,910 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,910 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:44,910 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_body, body type: +2025-07-11 18:57:44,911 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: check_performance, elapsed: 0.0008378028869628906 +2025-07-11 18:57:44,911 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4001-BODY' 执行失败。 +2025-07-11 18:57:44,911 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 执行完毕,状态: 失败 +2025-07-11 18:57:44,911 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4002' for 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,911 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,911 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,911 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,911 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,911 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,911 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,911 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: NumberOutOfRangeCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,911 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Searching for a ranged numeric field... +2025-07-11 18:57:44,911 - testcase.TC-ERROR-4002 - DEBUG - Found request body schema in content type: application/json +2025-07-11 18:57:44,911 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in request body. +2025-07-11 18:57:44,911 - testcase.TC-ERROR-4002 - DEBUG - 在路径 data.0.record_count 找到范围受限字段。 +2025-07-11 18:57:44,911 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Found ranged numeric field in BODY at path: data.0.record_count +2025-07-11 18:57:44,911 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Target found in 'body' at path 'data.0.record_count'. Type: integer, Min: 0, Max: 10000, Desc: '' +2025-07-11 18:57:44,911 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Setting out-of-range value to 10001 (max is 10000). +2025-07-11 18:57:44,911 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4002' (数值参数越界检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,911 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json +2025-07-11 18:57:44,911 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json +2025-07-11 18:57:44,911 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,911 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,911 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 +2025-07-11 18:57:44,911 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,911 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,911 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,911 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,911 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,911 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,912 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.912003 +2025-07-11 18:57:44,912 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) +2025-07-11 18:57:44,912 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 在路径 data.0.record_count (键 'record_count') 处设置值为 '10001' +2025-07-11 18:57:44,912 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Successfully injected out-of-range value into parameters. +2025-07-11 18:57:44,912 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,912 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,912 - testcase.TC-ERROR-4002 - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,912 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' did not modify the URL via modify_request_url hook. +2025-07-11 18:57:44,912 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,912 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:44,912 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_body, body type: +2025-07-11 18:57:44,912 - testcase.TC-ERROR-4002 - DEBUG - Hook: check_performance, elapsed: 0.0007319450378417969 +2025-07-11 18:57:44,912 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4002' 执行失败。 +2025-07-11 18:57:44,912 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4002' 执行完毕,状态: 失败 +2025-07-11 18:57:44,912 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4006' for 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,912 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,912 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,912 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,912 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,912 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,912 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,913 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: InvalidEnumValueCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,913 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] Searching for a field with enum constraints... +2025-07-11 18:57:44,913 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No field with enum constraints found in any location. +2025-07-11 18:57:44,913 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No suitable enum field found for this endpoint. +2025-07-11 18:57:44,913 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4006' (非法枚举值检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,913 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json +2025-07-11 18:57:44,913 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json +2025-07-11 18:57:44,913 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,913 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,913 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 +2025-07-11 18:57:44,913 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,913 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,913 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,913 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,913 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,913 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,913 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.913606 +2025-07-11 18:57:44,913 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) +2025-07-11 18:57:44,913 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,913 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,914 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4006' 执行成功。 +2025-07-11 18:57:44,914 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4006' 执行完毕,状态: 通过 +2025-07-11 18:57:44,914 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-BODY' for 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,914 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,914 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,914 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,914 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,914 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,914 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,914 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,914 - ddms_compliance_suite.utils.schema_utils - DEBUG - [Util] 递归查找路径: [], 当前层级必填字段: ['data'], 属性: ['version', 'act', 'data'] +2025-07-11 18:57:44,914 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 策略1: 在路径 root 找到可直接移除的必填字段: 'data' +2025-07-11 18:57:44,914 - testcase.TC-ERROR-4003-BODY - INFO - Found a removable field path in 'request body' schema: 'data' +2025-07-11 18:57:44,914 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-BODY' (缺失必填请求体字段检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,914 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json +2025-07-11 18:57:44,914 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json +2025-07-11 18:57:44,914 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,914 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,914 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 +2025-07-11 18:57:44,914 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,914 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,914 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,914 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,914 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,914 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,914 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.914705 +2025-07-11 18:57:44,914 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) +2025-07-11 18:57:44,914 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 从路径 'data' 成功移除字段 'data' (原值: '[{'description': 'example_string', 'lujing_test_id': 'example_string', 'record_count': 0, 'status': 'active', 'update_date': '2025-07-11T18:57:44.914705'}]')。 +2025-07-11 18:57:44,914 - testcase.TC-ERROR-4003-BODY - INFO - 为进行必填字段缺失测试,已通过工具方法从请求体中移除字段路径 'data'。 +2025-07-11 18:57:44,914 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,914 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,915 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4003-BODY' 执行失败。 +2025-07-11 18:57:44,915 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 执行完毕,状态: 失败 +2025-07-11 18:57:44,915 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-QUERY' for 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,915 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,915 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,915 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,915 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,915 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,915 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,915 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldQueryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,915 - testcase.TC-ERROR-4003-QUERY - INFO - No required 'query' parameter found in endpoint_spec. +2025-07-11 18:57:44,915 - testcase.TC-ERROR-4003-QUERY - INFO - 测试用例 TC-ERROR-4003-QUERY (缺失必填查询参数检查) 已针对端点 'POST /api/dms/wb_ml/v1/lujing_test' 初始化。Target param to remove: None +2025-07-11 18:57:44,915 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-QUERY' (缺失必填查询参数检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,915 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json +2025-07-11 18:57:44,915 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json +2025-07-11 18:57:44,915 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,915 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,915 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 +2025-07-11 18:57:44,915 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,915 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,915 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,915 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,915 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,915 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,915 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.915752 +2025-07-11 18:57:44,915 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) +2025-07-11 18:57:44,915 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,915 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,916 - testcase.TC-ERROR-4003-QUERY - INFO - 由于未识别到可移除的必填查询参数,跳过此测试用例。 +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4003-QUERY' 执行成功。 +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 执行完毕,状态: 通过 +2025-07-11 18:57:44,916 - root - INFO - strictness_level: TestSeverity.CRITICAL +2025-07-11 18:57:44,916 - root - INFO - strictness_level: TestSeverity.CRITICAL +2025-07-11 18:57:44,916 - root - INFO - relevant_failed_tcs: [] +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/wb_ml/v1/lujing_test' 测试完成,最终状态: 通过 +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: POST /api/dms/wb_ml/v1/lujing_test/1.0.0 (List lujing_test) +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0'。 +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' 发现了 20 个适用的测试用例 (已排序): ['TC-STATUS-001', 'TC-HEADER-001', 'TC-SECURITY-002', 'TC-LLM-COMPLIANCE-001', 'TC-RESTful-001', 'TC-DMS-PAGINATION-001', 'TC-RESTful-004', 'TC-RESTful-002', 'TC-DMS-CORE-SCHEMA-001', 'TC-CORE-FUNC-001', 'TC-RESTful-003', 'TC-DMS-URL-VERSION-001', 'TC-CORE-FUNC-002', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4002', 'TC-ERROR-4006', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY'] +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,916 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,917 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' 初始化。 +2025-07-11 18:57:44,917 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,917 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json +2025-07-11 18:57:44,917 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json +2025-07-11 18:57:44,917 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:44,917 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,917 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,917 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,917 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-STATUS-001' 执行成功。 +2025-07-11 18:57:44,917 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,917 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-HEADER-001' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,917 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,917 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,917 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,917 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,917 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,917 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,917 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: RequiredHeadersSchemaCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,917 - RequiredHeadersSchemaCheck - INFO - 测试用例 TC-HEADER-001 (必需请求头Schema验证) 已针对端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' 初始化。 +2025-07-11 18:57:44,917 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-HEADER-001' (必需请求头Schema验证) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,917 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json +2025-07-11 18:57:44,917 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json +2025-07-11 18:57:44,918 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:44,918 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,918 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,918 - RequiredHeadersSchemaCheck - INFO - API端点: POST /api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,918 - RequiredHeadersSchemaCheck - INFO - 发现的header参数: [] +2025-07-11 18:57:44,918 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Tenant-ID: 找到=False, 必需=False, 名称=None +2025-07-11 18:57:44,918 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Tenant-ID +2025-07-11 18:57:44,918 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Data-Domain: 找到=False, 必需=False, 名称=None +2025-07-11 18:57:44,918 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Data-Domain +2025-07-11 18:57:44,918 - RequiredHeadersSchemaCheck - INFO - 检查请求头 Authorization: 找到=False, 必需=False, 名称=None +2025-07-11 18:57:44,918 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 Authorization +2025-07-11 18:57:44,918 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-HEADER-001' 执行失败。 +2025-07-11 18:57:44,918 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 失败 +2025-07-11 18:57:44,918 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-002' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,918 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,918 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,918 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,918 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,918 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,919 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,919 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: EncryptedFieldsCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,919 - testcase.TC-SECURITY-002 - INFO - 测试用例 TC-SECURITY-002 (敏感字段加密检查) 已初始化,将检查以下敏感字段是否加密: {'coord', 'position', 'location'} +2025-07-11 18:57:44,919 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-002' (敏感字段加密检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,919 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json +2025-07-11 18:57:44,919 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json +2025-07-11 18:57:44,919 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:44,919 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,919 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,919 - testcase.TC-SECURITY-002 - INFO - response_context.json_content: {'code': 0, 'data': [{'description': 'example_string', 'lujing_test_id': 'example_string', 'record_count': 0, 'status': 'active', 'update_date': '2025-07-11T18:57:44.915752'}], 'message': "获取 'lujing_test' 列表成功"} +2025-07-11 18:57:44,919 - testcase.TC-SECURITY-002 - INFO - response_data:{'code': 0, 'data': [{'description': 'example_string', 'lujing_test_id': 'example_string', 'record_count': 0, 'status': 'active', 'update_date': '2025-07-11T18:57:44.915752'}], 'message': "获取 'lujing_test' 列表成功"} +2025-07-11 18:57:44,919 - testcase.TC-SECURITY-002 - INFO - response_data:[{'description': 'example_string', 'lujing_test_id': 'example_string', 'record_count': 0, 'status': 'active', 'update_date': '2025-07-11T18:57:44.915752'}] +2025-07-11 18:57:44,919 - testcase.TC-SECURITY-002 - INFO - response_data:{'description': 'example_string', 'lujing_test_id': 'example_string', 'record_count': 0, 'status': 'active', 'update_date': '2025-07-11T18:57:44.915752'} +2025-07-11 18:57:44,919 - testcase.TC-SECURITY-002 - INFO - 未在响应中找到需要检查的敏感字段。 +2025-07-11 18:57:44,919 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-SECURITY-002' 执行成功。 +2025-07-11 18:57:44,919 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-002' 执行完毕,状态: 通过 +2025-07-11 18:57:44,919 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-LLM-COMPLIANCE-001' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,919 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,919 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,919 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,919 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,919 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,919 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,919 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: LLMComplianceCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,919 - testcase.TC-LLM-COMPLIANCE-001 - INFO - 已加载合规性标准: [] +2025-07-11 18:57:44,920 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-LLM-COMPLIANCE-001' (LLM合规性综合检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,920 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json +2025-07-11 18:57:44,920 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json +2025-07-11 18:57:44,920 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:44,920 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,920 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.909170"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.909170"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 193' -d '{"version": 12345, "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.910366"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 193\' -d \'{"version": 12345, "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.910366"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 199' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 10001, "status": "active", "update_date": "2025-07-11T18:57:44.912003"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 199\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 10001, "status": "active", "update_date": "2025-07-11T18:57:44.912003"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.913606"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.913606"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 30' -d '{"version": "1.0.0", "act": 0}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 30\' -d \'{"version": "1.0.0", "act": 0}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.394004"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.394004"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.915752"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.915752"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' DEBUG: curlify generated command (raw): curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 DEBUG: curlify generated command (repr): "curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0" DEBUG: curlify generated command (raw): curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 DEBUG: curlify generated command (repr): "curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0" DEBUG: curlify generated command (raw): curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 DEBUG: curlify generated command (repr): "curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0" +2025-07-11 18:57:44,920 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-LLM-COMPLIANCE-001' 执行成功。 +2025-07-11 18:57:44,920 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,920 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-001' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,920 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,920 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,920 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,920 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,920 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,920 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,920 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: CoreNamingStructureTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,920 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-001' (核心命名与结构规范检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,920 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json +2025-07-11 18:57:44,920 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json +2025-07-11 18:57:44,920 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:44,920 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,920 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,921 - testcase.TC-RESTful-001 - INFO - responses: {'200': {'description': 'Successful Operation', 'content': {'application/json': {'schema': {'type': 'object', 'properties': {'code': {'type': 'integer'}, 'message': {'type': 'string'}, 'data': {'type': 'array', 'items': {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}}}}}}}} +2025-07-11 18:57:44,921 - testcase.TC-RESTful-001 - INFO - 检查响应定义: status_code=200, 可用响应定义=['200'] +2025-07-11 18:57:44,921 - testcase.TC-RESTful-001 - INFO - 找到精确状态码 200 的响应定义 +2025-07-11 18:57:44,921 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-RESTful-001' 执行失败。 +2025-07-11 18:57:44,921 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-001' 执行完毕,状态: 失败 +2025-07-11 18:57:44,921 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-PAGINATION-001' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,921 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,921 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,921 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,921 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,921 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,921 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,921 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: PaginationParamsCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,921 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-PAGINATION-001' (分页参数检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,921 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json +2025-07-11 18:57:44,921 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json +2025-07-11 18:57:44,921 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:44,922 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,922 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,922 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-DMS-PAGINATION-001' 执行失败。 +2025-07-11 18:57:44,922 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 执行完毕,状态: 失败 +2025-07-11 18:57:44,922 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-004' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,922 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,922 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,922 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,922 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,922 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,922 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,922 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourceCollectionPluralCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,922 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-004' (资源集合复数命名检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,922 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json +2025-07-11 18:57:44,922 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json +2025-07-11 18:57:44,922 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:44,922 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,922 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,923 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-RESTful-004' 执行失败。 +2025-07-11 18:57:44,923 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-004' 执行完毕,状态: 失败 +2025-07-11 18:57:44,923 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-002' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,923 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,923 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,923 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,923 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,923 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,923 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,923 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourcePathNounCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,923 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-002' (资源路径名词检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,923 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json +2025-07-11 18:57:44,923 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json +2025-07-11 18:57:44,923 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:44,923 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,923 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,924 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-002' 执行成功。 +2025-07-11 18:57:44,924 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-002' 执行完毕,状态: 通过 +2025-07-11 18:57:44,924 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-CORE-SCHEMA-001' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,924 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,924 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,924 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,924 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,924 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,924 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,924 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaFormatCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,924 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-CORE-SCHEMA-001' (DMS核心存储服务API响应格式检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,924 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json +2025-07-11 18:57:44,924 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json +2025-07-11 18:57:44,924 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:44,924 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,924 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,925 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行成功。 +2025-07-11 18:57:44,925 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,925 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-001' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,925 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,925 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,925 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,925 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,925 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,925 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,925 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,925 - testcase.TC-CORE-FUNC-001 - INFO - 测试用例 'TC-CORE-FUNC-001' 已为端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' 初始化。 +2025-07-11 18:57:44,925 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-001' (返回体JSON Schema验证) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,925 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json +2025-07-11 18:57:44,925 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json +2025-07-11 18:57:44,925 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:44,925 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,925 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,926 - ddms_compliance_suite.utils.schema_provider - DEBUG - 尝试从API规范中为状态码 200 查找Schema。 +2025-07-11 18:57:44,926 - testcase.TC-CORE-FUNC-001 - INFO - 将根据从API规范中获取的schema验证响应体。 +2025-07-11 18:57:44,926 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-001' 执行成功。 +2025-07-11 18:57:44,926 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,926 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-003' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,926 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,926 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,926 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,926 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,926 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,926 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,926 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TimeFormatCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,926 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-003' (时间字段ISO 8601格式检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,926 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json +2025-07-11 18:57:44,926 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json +2025-07-11 18:57:44,926 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:44,926 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,926 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,927 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-RESTful-003' 执行失败。 +2025-07-11 18:57:44,927 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-003' 执行完毕,状态: 失败 +2025-07-11 18:57:44,927 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-URL-VERSION-001' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,927 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,927 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,927 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,927 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,927 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,927 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,927 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: URLVersionCheckCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,927 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-URL-VERSION-001' (DMS API URL版本号检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,927 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json +2025-07-11 18:57:44,927 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json +2025-07-11 18:57:44,927 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:44,927 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,927 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,928 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-URL-VERSION-001' 执行成功。 +2025-07-11 18:57:44,928 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,928 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-002' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,928 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,928 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,928 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,928 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,928 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,928 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,928 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: FlexibleSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,928 - testcase.TC-CORE-FUNC-002 - INFO - 测试用例 'TC-CORE-FUNC-002' 已为端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' 初始化。 +2025-07-11 18:57:44,928 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-002' (灵活的返回体JSON Schema验证) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,928 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json +2025-07-11 18:57:44,928 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json +2025-07-11 18:57:44,928 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:44,928 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,928 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,928 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-002' 执行成功。 +2025-07-11 18:57:44,928 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-002' 执行完毕,状态: 通过 +2025-07-11 18:57:44,928 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-001' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,928 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,928 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,928 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,928 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,928 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,929 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,929 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: HTTPSMandatoryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,929 - testcase.TC-SECURITY-001 - INFO - 测试用例 'TC-SECURITY-001' 已为端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' 初始化。 +2025-07-11 18:57:44,929 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-001' (HTTPS 协议强制性检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,929 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json +2025-07-11 18:57:44,929 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json +2025-07-11 18:57:44,929 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:44,929 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,929 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,929 - testcase.TC-SECURITY-001 - WARNING - 原始URL 'http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0' 不是HTTPS。跳过此测试用例的URL修改。 +2025-07-11 18:57:44,929 - testcase.TC-SECURITY-001 - ERROR - 安全漏洞:API允许通过HTTP成功响应 (200)。 +2025-07-11 18:57:44,929 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-SECURITY-001' 执行失败。 +2025-07-11 18:57:44,929 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-001' 执行完毕,状态: 失败 +2025-07-11 18:57:44,929 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-QUERY' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,929 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,929 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,929 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,929 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,929 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,929 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,929 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchQueryParamCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,929 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' initialized for endpoint: POST /api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,929 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Initializing: Looking for a simple type query parameter for type mismatch test. +2025-07-11 18:57:44,929 - testcase.TC-ERROR-4001-QUERY - INFO - _find_first_simple_type_parameter: No suitable simple type field found for query parameters. +2025-07-11 18:57:44,929 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No suitable simple type query parameter found for type mismatch test. +2025-07-11 18:57:44,929 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-QUERY' (查询参数类型不匹配检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,929 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json +2025-07-11 18:57:44,929 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json +2025-07-11 18:57:44,929 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:44,929 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No target field or original type identified for query param type mismatch. Skipping query param modification. +2025-07-11 18:57:44,929 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:44,929 - testcase.TC-ERROR-4001-QUERY - DEBUG - TC-ERROR-4001-QUERY is focused on query parameters, generate_request_body will not modify the body. +2025-07-11 18:57:44,930 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,930 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,930 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,930 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' did not modify the URL via modify_request_url hook. +2025-07-11 18:57:44,930 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,930 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:44,930 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_body, body type: DEBUG: curlify generated command (raw): curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 DEBUG: curlify generated command (repr): "curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0" DEBUG: curlify generated command (raw): curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 DEBUG: curlify generated command (repr): "curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0" status_code: 200 -responses: 2025-07-11 17:53:11,399 - testcase.TC-RESTful-001 - INFO - 找到精确状态码 200 的响应定义 -2025-07-11 17:53:11,399 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-RESTful-001' 执行失败。 -2025-07-11 17:53:11,399 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-001' 执行完毕,状态: 失败 -2025-07-11 17:53:11,400 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-PAGINATION-001' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,400 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,400 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,400 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,400 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,400 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,400 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,400 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: PaginationParamsCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,400 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-PAGINATION-001' (分页参数检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,400 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json -2025-07-11 17:53:11,400 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json -2025-07-11 17:53:11,400 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,400 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,400 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,400 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-DMS-PAGINATION-001' 执行失败。 -2025-07-11 17:53:11,400 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 执行完毕,状态: 失败 -2025-07-11 17:53:11,400 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-004' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,400 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,400 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,400 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,400 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,400 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,401 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,401 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourceCollectionPluralCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,401 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-004' (资源集合复数命名检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,401 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json -2025-07-11 17:53:11,401 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json -2025-07-11 17:53:11,401 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,401 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,401 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,401 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-RESTful-004' 执行失败。 -2025-07-11 17:53:11,401 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-004' 执行完毕,状态: 失败 -2025-07-11 17:53:11,401 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-002' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,401 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,401 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,401 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,401 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,401 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,401 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,401 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourcePathNounCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,401 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-002' (资源路径名词检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,401 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json -2025-07-11 17:53:11,401 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json -2025-07-11 17:53:11,401 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,401 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,401 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,402 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-002' 执行成功。 -2025-07-11 17:53:11,402 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-002' 执行完毕,状态: 通过 -2025-07-11 17:53:11,402 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-CORE-SCHEMA-001' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,402 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,402 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,402 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,402 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,402 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,402 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,402 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaFormatCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,402 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-CORE-SCHEMA-001' (DMS核心存储服务API响应格式检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,402 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json -2025-07-11 17:53:11,402 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json -2025-07-11 17:53:11,402 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,402 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,402 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,403 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行成功。 -2025-07-11 17:53:11,403 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,403 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-001' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,403 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,403 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,403 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,403 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,403 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,403 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,403 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,403 - testcase.TC-CORE-FUNC-001 - INFO - 测试用例 'TC-CORE-FUNC-001' 已为端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' 初始化。 -2025-07-11 17:53:11,403 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-001' (返回体JSON Schema验证) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,403 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json -2025-07-11 17:53:11,403 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json -2025-07-11 17:53:11,403 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,403 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,403 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,404 - ddms_compliance_suite.utils.schema_provider - DEBUG - 尝试从API规范中为状态码 200 查找Schema。 -2025-07-11 17:53:11,404 - testcase.TC-CORE-FUNC-001 - INFO - 将根据从API规范中获取的schema验证响应体。 -2025-07-11 17:53:11,404 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-001' 执行成功。 -2025-07-11 17:53:11,404 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,404 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-003' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,404 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,404 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,404 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,404 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,404 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,404 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,404 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TimeFormatCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,404 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-003' (时间字段ISO 8601格式检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,404 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json -2025-07-11 17:53:11,404 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json -2025-07-11 17:53:11,404 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,404 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,404 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,405 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-RESTful-003' 执行失败。 -2025-07-11 17:53:11,405 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-003' 执行完毕,状态: 失败 -2025-07-11 17:53:11,405 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-URL-VERSION-001' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,405 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,405 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,405 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,405 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,405 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,405 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,405 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: URLVersionCheckCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,405 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-URL-VERSION-001' (DMS API URL版本号检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,405 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json -2025-07-11 17:53:11,405 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json -2025-07-11 17:53:11,405 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,405 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,405 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,406 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-URL-VERSION-001' 执行成功。 -2025-07-11 17:53:11,406 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,406 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-002' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,406 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,406 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,406 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,406 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,406 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,406 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,406 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: FlexibleSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,406 - testcase.TC-CORE-FUNC-002 - INFO - 测试用例 'TC-CORE-FUNC-002' 已为端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' 初始化。 -2025-07-11 17:53:11,406 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-002' (灵活的返回体JSON Schema验证) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,406 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json -2025-07-11 17:53:11,406 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json -2025-07-11 17:53:11,406 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,406 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,406 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,407 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-002' 执行成功。 -2025-07-11 17:53:11,407 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-002' 执行完毕,状态: 通过 -2025-07-11 17:53:11,407 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-001' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,407 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,407 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,407 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,407 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,407 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,407 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,407 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: HTTPSMandatoryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,407 - testcase.TC-SECURITY-001 - INFO - 测试用例 'TC-SECURITY-001' 已为端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' 初始化。 -2025-07-11 17:53:11,407 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-001' (HTTPS 协议强制性检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,407 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json -2025-07-11 17:53:11,407 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json -2025-07-11 17:53:11,407 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,407 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,407 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,407 - testcase.TC-SECURITY-001 - WARNING - 原始URL 'http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0' 不是HTTPS。跳过此测试用例的URL修改。 -2025-07-11 17:53:11,408 - testcase.TC-SECURITY-001 - ERROR - 安全漏洞:API允许通过HTTP成功响应 (200)。 -2025-07-11 17:53:11,408 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-SECURITY-001' 执行失败。 -2025-07-11 17:53:11,408 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-001' 执行完毕,状态: 失败 -2025-07-11 17:53:11,408 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-QUERY' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,408 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,408 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,408 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,408 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,408 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,408 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,408 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchQueryParamCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,408 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' initialized for endpoint: POST /api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,408 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Initializing: Looking for a simple type query parameter for type mismatch test. -2025-07-11 17:53:11,408 - testcase.TC-ERROR-4001-QUERY - INFO - _find_first_simple_type_parameter: No suitable simple type field found for query parameters. -2025-07-11 17:53:11,408 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No suitable simple type query parameter found for type mismatch test. -2025-07-11 17:53:11,408 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-QUERY' (查询参数类型不匹配检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,408 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json -2025-07-11 17:53:11,408 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json -2025-07-11 17:53:11,408 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,408 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No target field or original type identified for query param type mismatch. Skipping query param modification. -2025-07-11 17:53:11,408 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,408 - testcase.TC-ERROR-4001-QUERY - DEBUG - TC-ERROR-4001-QUERY is focused on query parameters, generate_request_body will not modify the body. -2025-07-11 17:53:11,408 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,408 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,408 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,408 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' did not modify the URL via modify_request_url hook. -2025-07-11 17:53:11,408 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,408 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,408 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_body, body type: -2025-07-11 17:53:11,409 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Skipped type mismatch (query) validation: No target query parameter was identified. -2025-07-11 17:53:11,409 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: check_performance, elapsed: 0.0006561279296875 -2025-07-11 17:53:11,409 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4001-QUERY' 执行成功。 -2025-07-11 17:53:11,409 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 执行完毕,状态: 通过 -2025-07-11 17:53:11,409 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-BODY' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,409 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,409 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,409 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,409 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,409 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,409 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,409 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,409 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' initialized for endpoint: POST /api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,409 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Initializing: Looking for a simple type field in request body for type mismatch test. -2025-07-11 17:53:11,409 - testcase.TC-ERROR-4001-BODY - DEBUG - No suitable request body schema found -2025-07-11 17:53:11,409 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] No request body schema found for endpoint. Skipping type mismatch target search. -2025-07-11 17:53:11,409 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Conclusion: No target field identified for request body type mismatch test. -2025-07-11 17:53:11,409 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-BODY' (请求体字段类型不匹配检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,409 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json -2025-07-11 17:53:11,409 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json -2025-07-11 17:53:11,409 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,409 - testcase.TC-ERROR-4001-BODY - DEBUG - TC-ERROR-4001-BODY is focused on request body, generate_query_params will not modify query parameters. -2025-07-11 17:53:11,409 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,409 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] No target field or original type identified for body type mismatch. Skipping body modification. -2025-07-11 17:53:11,409 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,409 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,409 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,409 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' did not modify the URL via modify_request_url hook. -2025-07-11 17:53:11,409 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,409 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,409 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_body, body type: -2025-07-11 17:53:11,410 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Skipped type mismatch (body) validation: No target field was identified. -2025-07-11 17:53:11,410 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: check_performance, elapsed: 0.0007050037384033203 -2025-07-11 17:53:11,410 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4001-BODY' 执行成功。 -2025-07-11 17:53:11,410 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 执行完毕,状态: 通过 -2025-07-11 17:53:11,410 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4002' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,410 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,410 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,410 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,410 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,410 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,410 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,410 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: NumberOutOfRangeCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,410 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' initialized for endpoint: POST /api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,410 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Searching for a ranged numeric field... -2025-07-11 17:53:11,410 - testcase.TC-ERROR-4002 - DEBUG - No suitable request body schema found -2025-07-11 17:53:11,410 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in query parameters. -2025-07-11 17:53:11,410 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in path parameters. -2025-07-11 17:53:11,410 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in header parameters. -2025-07-11 17:53:11,410 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] No ranged numeric field found in any location. -2025-07-11 17:53:11,410 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] No suitable ranged numeric field found for this endpoint. -2025-07-11 17:53:11,410 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4002' (数值参数越界检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,410 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json -2025-07-11 17:53:11,410 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json -2025-07-11 17:53:11,410 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,410 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,410 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,410 - testcase.TC-ERROR-4002 - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,410 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' did not modify the URL via modify_request_url hook. -2025-07-11 17:53:11,410 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,410 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,410 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_body, body type: -{'200': {'description': 'Successful Operation', 'content': {'application/json': {'schema': {'type': 'object', 'properties': {'code': {'type': 'integer'}, 'message': {'type': 'string'}, 'data': {'type': 'array', 'items': {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}}}}}}}} +responses: {'200': {'description': 'Successful Operation', 'content': {'application/json': {'schema': {'type': 'object', 'properties': {'code': {'type': 'integer'}, 'message': {'type': 'string'}, 'data': {'type': 'array', 'items': {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}}}}}}}} DEBUG: curlify generated command (raw): curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 DEBUG: curlify generated command (repr): "curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0" DEBUG: curlify generated command (raw): curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 @@ -1359,342 +1316,378 @@ DEBUG: curlify generated command (raw): curl -X POST -H 'User-Agent: python-requ DEBUG: curlify generated command (repr): "curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0" DEBUG: curlify generated command (raw): curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 DEBUG: curlify generated command (repr): "curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0" +2025-07-11 18:57:44,930 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Skipped type mismatch (query) validation: No target query parameter was identified. +2025-07-11 18:57:44,930 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: check_performance, elapsed: 0.0006449222564697266 +2025-07-11 18:57:44,930 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4001-QUERY' 执行成功。 +2025-07-11 18:57:44,930 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 执行完毕,状态: 通过 +2025-07-11 18:57:44,930 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-BODY' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,930 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,930 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,930 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,930 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,930 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,930 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,930 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,930 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' initialized for endpoint: POST /api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,930 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Initializing: Looking for a simple type field in request body for type mismatch test. +2025-07-11 18:57:44,930 - testcase.TC-ERROR-4001-BODY - DEBUG - No suitable request body schema found +2025-07-11 18:57:44,930 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] No request body schema found for endpoint. Skipping type mismatch target search. +2025-07-11 18:57:44,930 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Conclusion: No target field identified for request body type mismatch test. +2025-07-11 18:57:44,930 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-BODY' (请求体字段类型不匹配检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,930 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json +2025-07-11 18:57:44,930 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json +2025-07-11 18:57:44,930 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:44,930 - testcase.TC-ERROR-4001-BODY - DEBUG - TC-ERROR-4001-BODY is focused on request body, generate_query_params will not modify query parameters. +2025-07-11 18:57:44,930 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:44,930 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] No target field or original type identified for body type mismatch. Skipping body modification. +2025-07-11 18:57:44,930 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,930 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,930 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,930 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' did not modify the URL via modify_request_url hook. +2025-07-11 18:57:44,930 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,930 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:44,930 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_body, body type: +2025-07-11 18:57:44,931 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Skipped type mismatch (body) validation: No target field was identified. +2025-07-11 18:57:44,931 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: check_performance, elapsed: 0.0006871223449707031 +2025-07-11 18:57:44,931 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4001-BODY' 执行成功。 +2025-07-11 18:57:44,931 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 执行完毕,状态: 通过 +2025-07-11 18:57:44,931 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4002' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,931 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,931 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,931 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,931 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,931 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,931 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,931 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: NumberOutOfRangeCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,931 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' initialized for endpoint: POST /api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,931 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Searching for a ranged numeric field... +2025-07-11 18:57:44,931 - testcase.TC-ERROR-4002 - DEBUG - No suitable request body schema found +2025-07-11 18:57:44,931 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in query parameters. +2025-07-11 18:57:44,931 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in path parameters. +2025-07-11 18:57:44,931 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in header parameters. +2025-07-11 18:57:44,931 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] No ranged numeric field found in any location. +2025-07-11 18:57:44,931 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] No suitable ranged numeric field found for this endpoint. +2025-07-11 18:57:44,931 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4002' (数值参数越界检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,931 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json +2025-07-11 18:57:44,931 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json +2025-07-11 18:57:44,931 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:44,931 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,931 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,931 - testcase.TC-ERROR-4002 - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,931 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' did not modify the URL via modify_request_url hook. +2025-07-11 18:57:44,931 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,931 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:44,931 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_body, body type: +2025-07-11 18:57:44,932 - testcase.TC-ERROR-4002 - DEBUG - Hook: check_performance, elapsed: 0.0006368160247802734 +2025-07-11 18:57:44,932 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4002' 执行成功。 +2025-07-11 18:57:44,932 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4002' 执行完毕,状态: 通过 +2025-07-11 18:57:44,932 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4006' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,932 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,932 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,932 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,932 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,932 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,932 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,932 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: InvalidEnumValueCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,932 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] Searching for a field with enum constraints... +2025-07-11 18:57:44,932 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No field with enum constraints found in any location. +2025-07-11 18:57:44,932 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No suitable enum field found for this endpoint. +2025-07-11 18:57:44,932 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4006' (非法枚举值检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,932 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json +2025-07-11 18:57:44,932 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json +2025-07-11 18:57:44,932 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:44,932 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,932 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,933 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4006' 执行成功。 +2025-07-11 18:57:44,933 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4006' 执行完毕,状态: 通过 +2025-07-11 18:57:44,933 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-BODY' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,933 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,933 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,933 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,933 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,933 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,933 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,933 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,933 - testcase.TC-ERROR-4003-BODY - INFO - 此端点规范中未定义或找到请求体 schema(通过基类方法)。 +2025-07-11 18:57:44,933 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-BODY' (缺失必填请求体字段检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,933 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json +2025-07-11 18:57:44,933 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json +2025-07-11 18:57:44,933 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:44,933 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,933 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,934 - testcase.TC-ERROR-4003-BODY - INFO - 由于未识别到可移除的必填请求体字段,跳过此测试用例的验证。 +2025-07-11 18:57:44,934 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4003-BODY' 执行成功。 +2025-07-11 18:57:44,934 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 执行完毕,状态: 通过 +2025-07-11 18:57:44,934 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-QUERY' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,934 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,934 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,934 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,934 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,934 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,934 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,934 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldQueryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,934 - testcase.TC-ERROR-4003-QUERY - INFO - No required 'query' parameter found in endpoint_spec. +2025-07-11 18:57:44,934 - testcase.TC-ERROR-4003-QUERY - INFO - 测试用例 TC-ERROR-4003-QUERY (缺失必填查询参数检查) 已针对端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' 初始化。Target param to remove: None +2025-07-11 18:57:44,934 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-QUERY' (缺失必填查询参数检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' +2025-07-11 18:57:44,934 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json +2025-07-11 18:57:44,934 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json +2025-07-11 18:57:44,934 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:44,934 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,934 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +2025-07-11 18:57:44,935 - testcase.TC-ERROR-4003-QUERY - INFO - 由于未识别到可移除的必填查询参数,跳过此测试用例。 +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4003-QUERY' 执行成功。 +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 执行完毕,状态: 通过 +2025-07-11 18:57:44,935 - root - INFO - strictness_level: TestSeverity.CRITICAL +2025-07-11 18:57:44,935 - root - INFO - strictness_level: TestSeverity.CRITICAL +2025-07-11 18:57:44,935 - root - INFO - relevant_failed_tcs: [] +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' 测试完成,最终状态: 通过 +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id} (Read lujing_test) +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}' 发现了 20 个适用的测试用例 (已排序): ['TC-STATUS-001', 'TC-HEADER-001', 'TC-SECURITY-002', 'TC-LLM-COMPLIANCE-001', 'TC-RESTful-001', 'TC-DMS-PAGINATION-001', 'TC-RESTful-004', 'TC-RESTful-002', 'TC-DMS-CORE-SCHEMA-001', 'TC-CORE-FUNC-001', 'TC-RESTful-003', 'TC-DMS-URL-VERSION-001', 'TC-CORE-FUNC-002', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4002', 'TC-ERROR-4006', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY'] +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}' +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 parameters[0] ('id') 的 schema... +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,935 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}' 初始化。 +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}' +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial path param for 'read_lujing_test': {'id': 'param_id'} +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'read_lujing_test': None +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'read_lujing_test': application/json +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'read_lujing_test' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {'id': 'param_id'} +2025-07-11 18:57:44,935 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0/param_id +2025-07-11 18:57:44,936 - testcase.TC-STATUS-001 - WARNING - 状态码验证失败: 期望 200, 实际 404 for http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0/param_id +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - ERROR - 关键的前置测试用例 'TC-STATUS-001' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}' 失败。后续测试将被跳过。原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-STATUS-001' 执行失败。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 失败 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-HEADER-001' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-HEADER-001' 被跳过。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 跳过 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-SECURITY-002' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-SECURITY-002' 被跳过。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-002' 执行完毕,状态: 跳过 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-LLM-COMPLIANCE-001' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-LLM-COMPLIANCE-001' 被跳过。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 执行完毕,状态: 跳过 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-RESTful-001' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-RESTful-001' 被跳过。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-001' 执行完毕,状态: 跳过 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-DMS-PAGINATION-001' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-DMS-PAGINATION-001' 被跳过。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 执行完毕,状态: 跳过 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-RESTful-004' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-RESTful-004' 被跳过。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-004' 执行完毕,状态: 跳过 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-RESTful-002' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-RESTful-002' 被跳过。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-002' 执行完毕,状态: 跳过 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-DMS-CORE-SCHEMA-001' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-DMS-CORE-SCHEMA-001' 被跳过。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行完毕,状态: 跳过 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-CORE-FUNC-001' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-CORE-FUNC-001' 被跳过。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-001' 执行完毕,状态: 跳过 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-RESTful-003' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-RESTful-003' 被跳过。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-003' 执行完毕,状态: 跳过 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-DMS-URL-VERSION-001' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-DMS-URL-VERSION-001' 被跳过。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 执行完毕,状态: 跳过 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-CORE-FUNC-002' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-CORE-FUNC-002' 被跳过。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-002' 执行完毕,状态: 跳过 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-SECURITY-001' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-SECURITY-001' 被跳过。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-001' 执行完毕,状态: 跳过 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-ERROR-4001-QUERY' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-ERROR-4001-QUERY' 被跳过。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 执行完毕,状态: 跳过 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-ERROR-4001-BODY' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-ERROR-4001-BODY' 被跳过。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 执行完毕,状态: 跳过 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-ERROR-4002' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-ERROR-4002' 被跳过。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4002' 执行完毕,状态: 跳过 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-ERROR-4006' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-ERROR-4006' 被跳过。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4006' 执行完毕,状态: 跳过 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-ERROR-4003-BODY' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-ERROR-4003-BODY' 被跳过。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 执行完毕,状态: 跳过 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-ERROR-4003-QUERY' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-ERROR-4003-QUERY' 被跳过。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 执行完毕,状态: 跳过 +2025-07-11 18:57:44,936 - root - INFO - strictness_level: TestSeverity.CRITICAL +2025-07-11 18:57:44,936 - root - INFO - strictness_level: TestSeverity.CRITICAL +2025-07-11 18:57:44,936 - root - INFO - relevant_failed_tcs: [] +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}' 测试完成,最终状态: 失败 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: PUT /api/dms/wb_ml/v1/lujing_test (Update lujing_test) +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,936 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,937 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,937 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,937 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,937 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,937 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'PUT /api/dms/wb_ml/v1/lujing_test' 发现了 20 个适用的测试用例 (已排序): ['TC-STATUS-001', 'TC-HEADER-001', 'TC-SECURITY-002', 'TC-LLM-COMPLIANCE-001', 'TC-RESTful-001', 'TC-DMS-PAGINATION-001', 'TC-RESTful-004', 'TC-RESTful-002', 'TC-DMS-CORE-SCHEMA-001', 'TC-CORE-FUNC-001', 'TC-RESTful-003', 'TC-DMS-URL-VERSION-001', 'TC-CORE-FUNC-002', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4002', 'TC-ERROR-4006', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY'] +2025-07-11 18:57:44,937 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,937 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,937 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,937 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,937 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,937 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,937 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,937 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,937 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'PUT /api/dms/wb_ml/v1/lujing_test' 初始化。 +2025-07-11 18:57:44,937 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,937 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json +2025-07-11 18:57:44,937 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json +2025-07-11 18:57:44,937 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,937 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,937 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 +2025-07-11 18:57:44,937 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,937 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,937 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,937 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,937 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,937 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,937 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.937246 +2025-07-11 18:57:44,937 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) +2025-07-11 18:57:44,937 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,937 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,938 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,938 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-STATUS-001' 执行成功。 +2025-07-11 18:57:44,938 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,938 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-HEADER-001' for 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,938 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,938 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,938 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,938 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,938 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,938 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,938 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: RequiredHeadersSchemaCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,938 - RequiredHeadersSchemaCheck - INFO - 测试用例 TC-HEADER-001 (必需请求头Schema验证) 已针对端点 'PUT /api/dms/wb_ml/v1/lujing_test' 初始化。 +2025-07-11 18:57:44,938 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-HEADER-001' (必需请求头Schema验证) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,938 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json +2025-07-11 18:57:44,938 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json +2025-07-11 18:57:44,938 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,938 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,938 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 +2025-07-11 18:57:44,938 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,938 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,938 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,938 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,938 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,938 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,938 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.938274 +2025-07-11 18:57:44,938 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) +2025-07-11 18:57:44,938 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,938 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,938 - RequiredHeadersSchemaCheck - INFO - API端点: PUT /api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,938 - RequiredHeadersSchemaCheck - INFO - 发现的header参数: [] +2025-07-11 18:57:44,938 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Tenant-ID: 找到=False, 必需=False, 名称=None +2025-07-11 18:57:44,939 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Tenant-ID +2025-07-11 18:57:44,939 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Data-Domain: 找到=False, 必需=False, 名称=None +2025-07-11 18:57:44,939 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Data-Domain +2025-07-11 18:57:44,939 - RequiredHeadersSchemaCheck - INFO - 检查请求头 Authorization: 找到=False, 必需=False, 名称=None +2025-07-11 18:57:44,939 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 Authorization +2025-07-11 18:57:44,939 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-HEADER-001' 执行失败。 +2025-07-11 18:57:44,939 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 失败 +2025-07-11 18:57:44,939 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-002' for 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,939 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,939 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,939 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,939 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,939 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,939 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,939 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: EncryptedFieldsCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,939 - testcase.TC-SECURITY-002 - INFO - 测试用例 TC-SECURITY-002 (敏感字段加密检查) 已初始化,将检查以下敏感字段是否加密: {'coord', 'position', 'location'} +2025-07-11 18:57:44,939 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-002' (敏感字段加密检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,939 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json +2025-07-11 18:57:44,939 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json +2025-07-11 18:57:44,939 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,939 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,939 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 +2025-07-11 18:57:44,939 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,939 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,939 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,939 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,939 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,939 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,939 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.939302 +2025-07-11 18:57:44,939 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) +2025-07-11 18:57:44,939 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,939 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,940 - testcase.TC-SECURITY-002 - INFO - response_context.json_content: {'code': 0, 'data': True, 'message': '创建成功'} +2025-07-11 18:57:44,940 - testcase.TC-SECURITY-002 - INFO - response_data:{'code': 0, 'data': True, 'message': '创建成功'} +2025-07-11 18:57:44,940 - testcase.TC-SECURITY-002 - INFO - 未在响应中找到需要检查的敏感字段。 +2025-07-11 18:57:44,940 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-SECURITY-002' 执行成功。 +2025-07-11 18:57:44,940 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-002' 执行完毕,状态: 通过 +2025-07-11 18:57:44,940 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-LLM-COMPLIANCE-001' for 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,940 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,940 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,940 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,940 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,940 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,940 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,940 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: LLMComplianceCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,940 - testcase.TC-LLM-COMPLIANCE-001 - INFO - 已加载合规性标准: [] +2025-07-11 18:57:44,940 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-LLM-COMPLIANCE-001' (LLM合规性综合检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,940 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json +2025-07-11 18:57:44,940 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json +2025-07-11 18:57:44,940 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,940 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,940 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 +2025-07-11 18:57:44,940 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,940 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,940 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,940 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,940 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,940 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,940 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.940349 +2025-07-11 18:57:44,940 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) +2025-07-11 18:57:44,940 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,940 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test DEBUG: curlify generated command (raw): curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 DEBUG: curlify generated command (repr): "curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0" DEBUG: curlify generated command (raw): curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 DEBUG: curlify generated command (repr): "curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0" -2025-07-11 17:53:11,411 - testcase.TC-ERROR-4002 - DEBUG - Hook: check_performance, elapsed: 0.000762939453125 -2025-07-11 17:53:11,411 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4002' 执行成功。 -2025-07-11 17:53:11,411 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4002' 执行完毕,状态: 通过 -2025-07-11 17:53:11,411 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4006' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,411 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,411 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,411 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,411 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,411 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,411 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,411 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: InvalidEnumValueCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,411 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] Searching for a field with enum constraints... -2025-07-11 17:53:11,411 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No field with enum constraints found in any location. -2025-07-11 17:53:11,411 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No suitable enum field found for this endpoint. -2025-07-11 17:53:11,411 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4006' (非法枚举值检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,411 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json -2025-07-11 17:53:11,411 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json -2025-07-11 17:53:11,411 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,411 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,411 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,412 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4006' 执行成功。 -2025-07-11 17:53:11,412 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4006' 执行完毕,状态: 通过 -2025-07-11 17:53:11,412 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-BODY' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,412 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,412 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,412 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,412 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,412 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,412 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,412 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,412 - testcase.TC-ERROR-4003-BODY - INFO - 此端点规范中未定义或找到请求体 schema(通过基类方法)。 -2025-07-11 17:53:11,412 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-BODY' (缺失必填请求体字段检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,412 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json -2025-07-11 17:53:11,412 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json -2025-07-11 17:53:11,412 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,412 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,412 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,413 - testcase.TC-ERROR-4003-BODY - INFO - 由于未识别到可移除的必填请求体字段,跳过此测试用例的验证。 -2025-07-11 17:53:11,413 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4003-BODY' 执行成功。 -2025-07-11 17:53:11,413 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 执行完毕,状态: 通过 -2025-07-11 17:53:11,413 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-QUERY' for 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,413 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,413 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,413 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,413 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,413 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,413 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,413 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldQueryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,413 - testcase.TC-ERROR-4003-QUERY - INFO - No required 'query' parameter found in endpoint_spec. -2025-07-11 17:53:11,413 - testcase.TC-ERROR-4003-QUERY - INFO - 测试用例 TC-ERROR-4003-QUERY (缺失必填查询参数检查) 已针对端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' 初始化。Target param to remove: None -2025-07-11 17:53:11,413 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-QUERY' (缺失必填查询参数检查) for endpoint 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' -2025-07-11 17:53:11,413 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_lujing_test': application/json -2025-07-11 17:53:11,413 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_lujing_test': application/json -2025-07-11 17:53:11,413 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_lujing_test' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,413 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,413 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 -2025-07-11 17:53:11,414 - testcase.TC-ERROR-4003-QUERY - INFO - 由于未识别到可移除的必填查询参数,跳过此测试用例。 -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4003-QUERY' 执行成功。 -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 执行完毕,状态: 通过 -2025-07-11 17:53:11,414 - root - INFO - strictness_level: TestSeverity.CRITICAL -2025-07-11 17:53:11,414 - root - INFO - strictness_level: TestSeverity.CRITICAL -2025-07-11 17:53:11,414 - root - INFO - relevant_failed_tcs: [] -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/wb_ml/v1/lujing_test/1.0.0' 测试完成,最终状态: 通过 -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id} (Read lujing_test) -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'。 -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}' 发现了 20 个适用的测试用例 (已排序): ['TC-STATUS-001', 'TC-HEADER-001', 'TC-SECURITY-002', 'TC-LLM-COMPLIANCE-001', 'TC-RESTful-001', 'TC-DMS-PAGINATION-001', 'TC-RESTful-004', 'TC-RESTful-002', 'TC-DMS-CORE-SCHEMA-001', 'TC-CORE-FUNC-001', 'TC-RESTful-003', 'TC-DMS-URL-VERSION-001', 'TC-CORE-FUNC-002', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4002', 'TC-ERROR-4006', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY'] -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}' -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 parameters[0] ('id') 的 schema... -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,414 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}' 初始化。 -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}' -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial path param for 'read_lujing_test': {'id': 'param_id'} -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'read_lujing_test': None -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'read_lujing_test': application/json -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'read_lujing_test' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {'id': 'param_id'} -2025-07-11 17:53:11,414 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0/param_id -2025-07-11 17:53:11,415 - testcase.TC-STATUS-001 - WARNING - 状态码验证失败: 期望 200, 实际 404 for http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0/param_id -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - ERROR - 关键的前置测试用例 'TC-STATUS-001' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}' 失败。后续测试将被跳过。原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-STATUS-001' 执行失败。 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 失败 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-HEADER-001' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-HEADER-001' 被跳过。 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-SECURITY-002' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-SECURITY-002' 被跳过。 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-002' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-LLM-COMPLIANCE-001' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-LLM-COMPLIANCE-001' 被跳过。 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-RESTful-001' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-RESTful-001' 被跳过。 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-001' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-DMS-PAGINATION-001' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-DMS-PAGINATION-001' 被跳过。 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-RESTful-004' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-RESTful-004' 被跳过。 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-004' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-RESTful-002' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-RESTful-002' 被跳过。 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-002' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-DMS-CORE-SCHEMA-001' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-DMS-CORE-SCHEMA-001' 被跳过。 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-CORE-FUNC-001' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-CORE-FUNC-001' 被跳过。 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-001' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-RESTful-003' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-RESTful-003' 被跳过。 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-003' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-DMS-URL-VERSION-001' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-DMS-URL-VERSION-001' 被跳过。 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-CORE-FUNC-002' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-CORE-FUNC-002' 被跳过。 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-002' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-SECURITY-001' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-SECURITY-001' 被跳过。 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-001' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-ERROR-4001-QUERY' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-ERROR-4001-QUERY' 被跳过。 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-ERROR-4001-BODY' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-ERROR-4001-BODY' 被跳过。 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-ERROR-4002' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-ERROR-4002' 被跳过。 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4002' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-ERROR-4006' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-ERROR-4006' 被跳过。 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4006' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-ERROR-4003-BODY' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-ERROR-4003-BODY' 被跳过。 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-ERROR-4003-QUERY' for 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-ERROR-4003-QUERY' 被跳过。 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,415 - root - INFO - strictness_level: TestSeverity.CRITICAL -2025-07-11 17:53:11,415 - root - INFO - strictness_level: TestSeverity.CRITICAL -2025-07-11 17:53:11,415 - root - INFO - relevant_failed_tcs: [] -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}' 测试完成,最终状态: 失败 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: PUT /api/dms/wb_ml/v1/lujing_test (Update lujing_test) -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,415 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'PUT /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'PUT /api/dms/wb_ml/v1/lujing_test' 发现了 20 个适用的测试用例 (已排序): ['TC-STATUS-001', 'TC-HEADER-001', 'TC-SECURITY-002', 'TC-LLM-COMPLIANCE-001', 'TC-RESTful-001', 'TC-DMS-PAGINATION-001', 'TC-RESTful-004', 'TC-RESTful-002', 'TC-DMS-CORE-SCHEMA-001', 'TC-CORE-FUNC-001', 'TC-RESTful-003', 'TC-DMS-URL-VERSION-001', 'TC-CORE-FUNC-002', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4002', 'TC-ERROR-4006', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY'] -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,416 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'PUT /api/dms/wb_ml/v1/lujing_test' 初始化。 -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.416328 -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,416 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,417 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,417 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-STATUS-001' 执行成功。 -2025-07-11 17:53:11,417 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,417 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-HEADER-001' for 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,417 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,417 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,417 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,417 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,417 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,417 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,417 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: RequiredHeadersSchemaCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,417 - RequiredHeadersSchemaCheck - INFO - 测试用例 TC-HEADER-001 (必需请求头Schema验证) 已针对端点 'PUT /api/dms/wb_ml/v1/lujing_test' 初始化。 -2025-07-11 17:53:11,417 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-HEADER-001' (必需请求头Schema验证) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,417 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json -2025-07-11 17:53:11,417 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json -2025-07-11 17:53:11,417 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,417 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,417 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 -2025-07-11 17:53:11,417 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,417 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,417 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,417 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,417 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,417 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,417 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.417493 -2025-07-11 17:53:11,417 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) -2025-07-11 17:53:11,417 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,417 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,418 - RequiredHeadersSchemaCheck - INFO - API端点: PUT /api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,418 - RequiredHeadersSchemaCheck - INFO - 发现的header参数: [] -2025-07-11 17:53:11,418 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Tenant-ID: 找到=False, 必需=False, 名称=None -2025-07-11 17:53:11,418 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Tenant-ID -2025-07-11 17:53:11,418 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Data-Domain: 找到=False, 必需=False, 名称=None -2025-07-11 17:53:11,418 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Data-Domain -2025-07-11 17:53:11,418 - RequiredHeadersSchemaCheck - INFO - 检查请求头 Authorization: 找到=False, 必需=False, 名称=None -2025-07-11 17:53:11,418 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 Authorization -2025-07-11 17:53:11,418 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-HEADER-001' 执行失败。 -2025-07-11 17:53:11,418 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 失败 -2025-07-11 17:53:11,418 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-002' for 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,418 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,418 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,418 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,418 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,418 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,418 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,418 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: EncryptedFieldsCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,418 - testcase.TC-SECURITY-002 - INFO - 测试用例 TC-SECURITY-002 (敏感字段加密检查) 已初始化,将检查以下敏感字段是否加密: {'location', 'position', 'coord'} -2025-07-11 17:53:11,418 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-002' (敏感字段加密检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,418 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json -2025-07-11 17:53:11,418 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json -2025-07-11 17:53:11,418 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,418 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,418 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 -2025-07-11 17:53:11,418 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,418 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,418 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,418 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,418 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,418 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,418 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.418636 -2025-07-11 17:53:11,418 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) -2025-07-11 17:53:11,418 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,418 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,419 - testcase.TC-SECURITY-002 - INFO - response_context.json_content: {'code': 0, 'data': True, 'message': '创建成功'} -2025-07-11 17:53:11,419 - testcase.TC-SECURITY-002 - INFO - response_data:{'code': 0, 'data': True, 'message': '创建成功'} -2025-07-11 17:53:11,419 - testcase.TC-SECURITY-002 - INFO - 未在响应中找到需要检查的敏感字段。 -2025-07-11 17:53:11,419 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-SECURITY-002' 执行成功。 -2025-07-11 17:53:11,419 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-002' 执行完毕,状态: 通过 -2025-07-11 17:53:11,419 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-LLM-COMPLIANCE-001' for 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,419 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,419 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,419 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,419 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,419 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,419 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,419 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: LLMComplianceCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,419 - testcase.TC-LLM-COMPLIANCE-001 - INFO - 已加载合规性标准: [] -2025-07-11 17:53:11,419 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-LLM-COMPLIANCE-001' (LLM合规性综合检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,419 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json -2025-07-11 17:53:11,419 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json -2025-07-11 17:53:11,419 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,419 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,419 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 -2025-07-11 17:53:11,419 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,419 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,419 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,419 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,419 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,419 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,419 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.419742 -2025-07-11 17:53:11,419 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) -2025-07-11 17:53:11,419 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,419 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,420 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-LLM-COMPLIANCE-001' 执行成功。 -2025-07-11 17:53:11,420 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,420 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-001' for 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,420 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,420 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,420 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,420 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,420 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,420 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,420 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: CoreNamingStructureTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,420 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-001' (核心命名与结构规范检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,420 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json -2025-07-11 17:53:11,420 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json -2025-07-11 17:53:11,420 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,420 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,420 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 -2025-07-11 17:53:11,420 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,421 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,421 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,421 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,421 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,421 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,421 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.421044 -2025-07-11 17:53:11,421 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) -2025-07-11 17:53:11,421 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,421 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test DEBUG: curlify generated command (raw): curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 DEBUG: curlify generated command (repr): "curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0" DEBUG: curlify generated command (raw): curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 @@ -1705,764 +1698,768 @@ DEBUG: curlify generated command (raw): curl -X POST -H 'User-Agent: python-requ DEBUG: curlify generated command (repr): "curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0" DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0/param_id DEBUG: curlify generated command (repr): "curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0/param_id" -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.416328"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.416328"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.417493"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.417493"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.418636"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.418636"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.419742"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.419742"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.421044"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,421 - testcase.TC-RESTful-001 - INFO - responses: {'200': {'description': 'Success', 'content': {'application/json': {'schema': {'type': 'object', 'properties': {'code': {'type': 'integer'}, 'message': {'type': 'string'}, 'data': {'type': 'boolean'}}}}}}} -2025-07-11 17:53:11,421 - testcase.TC-RESTful-001 - INFO - 检查响应定义: status_code=200, 可用响应定义=['200'] -2025-07-11 17:53:11,421 - testcase.TC-RESTful-001 - INFO - 找到精确状态码 200 的响应定义 -2025-07-11 17:53:11,421 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-001' 执行成功。 -2025-07-11 17:53:11,421 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,421 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-PAGINATION-001' for 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,421 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,422 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,422 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,422 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,422 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,422 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,422 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: PaginationParamsCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,422 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-PAGINATION-001' (分页参数检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,422 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json -2025-07-11 17:53:11,422 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json -2025-07-11 17:53:11,422 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,422 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,422 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 -2025-07-11 17:53:11,422 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,422 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,422 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,422 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,422 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,422 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,422 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.422184 -2025-07-11 17:53:11,422 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) -2025-07-11 17:53:11,422 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,422 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,423 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-DMS-PAGINATION-001' 执行失败。 -2025-07-11 17:53:11,423 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 执行完毕,状态: 失败 -2025-07-11 17:53:11,423 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-004' for 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,423 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,423 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,423 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,423 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,423 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,423 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,423 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourceCollectionPluralCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,423 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-004' (资源集合复数命名检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,423 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json -2025-07-11 17:53:11,423 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json -2025-07-11 17:53:11,423 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,423 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,423 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 -2025-07-11 17:53:11,423 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,423 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,423 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,423 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,423 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,423 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,423 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.423306 -2025-07-11 17:53:11,423 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) -2025-07-11 17:53:11,423 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,423 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,424 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-004' 执行成功。 -2025-07-11 17:53:11,424 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-004' 执行完毕,状态: 通过 -2025-07-11 17:53:11,424 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-002' for 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,424 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,424 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,424 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,424 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,424 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,424 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,424 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourcePathNounCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,424 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-002' (资源路径名词检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,424 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json -2025-07-11 17:53:11,424 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json -2025-07-11 17:53:11,424 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,424 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,424 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 -2025-07-11 17:53:11,424 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,424 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,424 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,424 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,424 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,424 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,424 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.424326 -2025-07-11 17:53:11,424 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) -2025-07-11 17:53:11,424 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,424 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,425 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-002' 执行成功。 -2025-07-11 17:53:11,425 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-002' 执行完毕,状态: 通过 -2025-07-11 17:53:11,425 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-CORE-SCHEMA-001' for 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,425 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,425 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,425 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,425 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,425 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,425 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,425 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaFormatCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,425 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-CORE-SCHEMA-001' (DMS核心存储服务API响应格式检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,425 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json -2025-07-11 17:53:11,425 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json -2025-07-11 17:53:11,425 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,425 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,425 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 -2025-07-11 17:53:11,425 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,425 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,425 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,425 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,425 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,425 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,425 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.425368 -2025-07-11 17:53:11,425 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) -2025-07-11 17:53:11,425 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,425 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,426 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行成功。 -2025-07-11 17:53:11,426 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,426 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-001' for 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,426 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,426 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,426 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,426 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,426 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,426 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,426 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,426 - testcase.TC-CORE-FUNC-001 - INFO - 测试用例 'TC-CORE-FUNC-001' 已为端点 'PUT /api/dms/wb_ml/v1/lujing_test' 初始化。 -2025-07-11 17:53:11,426 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-001' (返回体JSON Schema验证) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,426 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json -2025-07-11 17:53:11,426 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json -2025-07-11 17:53:11,426 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,426 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,426 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 -2025-07-11 17:53:11,426 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,426 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,426 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,426 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,426 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,426 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,426 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.426346 -2025-07-11 17:53:11,426 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) -2025-07-11 17:53:11,426 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,426 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,427 - ddms_compliance_suite.utils.schema_provider - DEBUG - 尝试从API规范中为状态码 200 查找Schema。 -2025-07-11 17:53:11,427 - testcase.TC-CORE-FUNC-001 - INFO - 将根据从API规范中获取的schema验证响应体。 -2025-07-11 17:53:11,427 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-001' 执行成功。 -2025-07-11 17:53:11,427 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,427 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-003' for 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,427 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,427 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,427 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,427 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,427 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,427 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,427 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TimeFormatCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,427 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-003' (时间字段ISO 8601格式检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,427 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json -2025-07-11 17:53:11,427 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json -2025-07-11 17:53:11,427 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,427 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,427 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 -2025-07-11 17:53:11,427 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,427 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,427 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,427 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,427 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,427 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,427 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.427322 -2025-07-11 17:53:11,427 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) -2025-07-11 17:53:11,427 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,427 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,428 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-003' 执行成功。 -2025-07-11 17:53:11,428 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-003' 执行完毕,状态: 通过 -2025-07-11 17:53:11,428 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-URL-VERSION-001' for 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,428 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,428 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,428 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,428 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,428 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,428 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,428 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: URLVersionCheckCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,428 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-URL-VERSION-001' (DMS API URL版本号检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,428 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json -2025-07-11 17:53:11,428 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json -2025-07-11 17:53:11,428 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,428 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,428 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 -2025-07-11 17:53:11,428 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,428 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,428 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,428 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,428 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,428 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,428 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.428394 -2025-07-11 17:53:11,428 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) -2025-07-11 17:53:11,428 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,428 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,429 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-URL-VERSION-001' 执行成功。 -2025-07-11 17:53:11,429 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,429 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-002' for 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,429 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,429 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,429 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,429 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,429 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,429 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,429 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: FlexibleSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,429 - testcase.TC-CORE-FUNC-002 - INFO - 测试用例 'TC-CORE-FUNC-002' 已为端点 'PUT /api/dms/wb_ml/v1/lujing_test' 初始化。 -2025-07-11 17:53:11,429 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-002' (灵活的返回体JSON Schema验证) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,429 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json -2025-07-11 17:53:11,429 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json -2025-07-11 17:53:11,429 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,429 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,429 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 -2025-07-11 17:53:11,429 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,429 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,429 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,429 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,429 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,429 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,429 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.429420 -2025-07-11 17:53:11,429 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) -2025-07-11 17:53:11,429 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,429 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.421044"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.937246"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.937246"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.938274"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.938274"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.939302"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.939302"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.940349"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,941 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-LLM-COMPLIANCE-001' 执行成功。 +2025-07-11 18:57:44,941 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,941 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-001' for 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,941 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,941 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,941 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,941 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,941 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,941 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,941 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: CoreNamingStructureTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,941 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-001' (核心命名与结构规范检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,941 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json +2025-07-11 18:57:44,941 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json +2025-07-11 18:57:44,941 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,941 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,941 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 +2025-07-11 18:57:44,941 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,941 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,941 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,941 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,941 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,941 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,941 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.941289 +2025-07-11 18:57:44,941 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) +2025-07-11 18:57:44,941 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,941 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,941 - testcase.TC-RESTful-001 - INFO - responses: {'200': {'description': 'Success', 'content': {'application/json': {'schema': {'type': 'object', 'properties': {'code': {'type': 'integer'}, 'message': {'type': 'string'}, 'data': {'type': 'boolean'}}}}}}} +2025-07-11 18:57:44,941 - testcase.TC-RESTful-001 - INFO - 检查响应定义: status_code=200, 可用响应定义=['200'] +2025-07-11 18:57:44,942 - testcase.TC-RESTful-001 - INFO - 找到精确状态码 200 的响应定义 +2025-07-11 18:57:44,942 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-001' 执行成功。 +2025-07-11 18:57:44,942 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,942 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-PAGINATION-001' for 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,942 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,942 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,942 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,942 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,942 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,942 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,942 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: PaginationParamsCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,942 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-PAGINATION-001' (分页参数检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,942 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json +2025-07-11 18:57:44,942 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json +2025-07-11 18:57:44,942 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,942 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,942 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 +2025-07-11 18:57:44,942 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,942 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,942 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,942 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,942 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,942 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,942 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.942224 +2025-07-11 18:57:44,942 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) +2025-07-11 18:57:44,942 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,942 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,942 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-DMS-PAGINATION-001' 执行失败。 +2025-07-11 18:57:44,943 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 执行完毕,状态: 失败 +2025-07-11 18:57:44,943 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-004' for 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,943 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,943 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,943 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,943 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,943 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,943 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,943 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourceCollectionPluralCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,943 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-004' (资源集合复数命名检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,943 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json +2025-07-11 18:57:44,943 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json +2025-07-11 18:57:44,943 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,943 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,943 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 +2025-07-11 18:57:44,943 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,943 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,943 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,943 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,943 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,943 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,943 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.943255 +2025-07-11 18:57:44,943 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) +2025-07-11 18:57:44,943 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,943 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,944 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-004' 执行成功。 +2025-07-11 18:57:44,944 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-004' 执行完毕,状态: 通过 +2025-07-11 18:57:44,944 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-002' for 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,944 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,944 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,944 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,944 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,944 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,944 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,944 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourcePathNounCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,944 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-002' (资源路径名词检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,944 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json +2025-07-11 18:57:44,944 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json +2025-07-11 18:57:44,944 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,944 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,944 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 +2025-07-11 18:57:44,944 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,944 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,944 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,944 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,944 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,944 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,944 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.944255 +2025-07-11 18:57:44,944 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) +2025-07-11 18:57:44,944 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,944 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,945 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-002' 执行成功。 +2025-07-11 18:57:44,945 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-002' 执行完毕,状态: 通过 +2025-07-11 18:57:44,945 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-CORE-SCHEMA-001' for 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,945 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,945 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,945 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,945 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,945 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,945 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,945 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaFormatCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,945 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-CORE-SCHEMA-001' (DMS核心存储服务API响应格式检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,945 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json +2025-07-11 18:57:44,945 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json +2025-07-11 18:57:44,945 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,945 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,945 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 +2025-07-11 18:57:44,945 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,945 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,945 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,945 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,945 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,945 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,945 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.945356 +2025-07-11 18:57:44,945 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) +2025-07-11 18:57:44,945 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,945 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,946 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行成功。 +2025-07-11 18:57:44,946 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,946 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-001' for 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,946 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,946 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,946 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,946 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,946 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,946 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,946 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,946 - testcase.TC-CORE-FUNC-001 - INFO - 测试用例 'TC-CORE-FUNC-001' 已为端点 'PUT /api/dms/wb_ml/v1/lujing_test' 初始化。 +2025-07-11 18:57:44,946 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-001' (返回体JSON Schema验证) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,946 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json +2025-07-11 18:57:44,946 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json +2025-07-11 18:57:44,946 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,946 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,946 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 +2025-07-11 18:57:44,946 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,946 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,946 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,946 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,946 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,946 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,946 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.946323 +2025-07-11 18:57:44,946 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) +2025-07-11 18:57:44,946 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,946 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,947 - ddms_compliance_suite.utils.schema_provider - DEBUG - 尝试从API规范中为状态码 200 查找Schema。 +2025-07-11 18:57:44,947 - testcase.TC-CORE-FUNC-001 - INFO - 将根据从API规范中获取的schema验证响应体。 +2025-07-11 18:57:44,947 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-001' 执行成功。 +2025-07-11 18:57:44,947 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,947 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-003' for 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,947 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,947 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,947 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,947 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,947 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,947 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,947 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TimeFormatCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,947 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-003' (时间字段ISO 8601格式检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,947 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json +2025-07-11 18:57:44,947 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json +2025-07-11 18:57:44,947 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,947 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,947 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 +2025-07-11 18:57:44,947 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,947 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,947 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,947 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,947 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,947 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,947 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.947295 +2025-07-11 18:57:44,947 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) +2025-07-11 18:57:44,947 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,947 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,948 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-003' 执行成功。 +2025-07-11 18:57:44,948 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-003' 执行完毕,状态: 通过 +2025-07-11 18:57:44,948 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-URL-VERSION-001' for 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,948 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,948 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,948 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,948 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,948 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,948 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,948 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: URLVersionCheckCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,948 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-URL-VERSION-001' (DMS API URL版本号检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,948 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json +2025-07-11 18:57:44,948 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json +2025-07-11 18:57:44,948 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,948 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,948 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 +2025-07-11 18:57:44,948 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,948 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,948 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,948 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,948 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,948 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,948 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.948436 +2025-07-11 18:57:44,948 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) +2025-07-11 18:57:44,948 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,948 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.940349"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.941289"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.941289"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' status_code: 200 responses: {'200': {'description': 'Success', 'content': {'application/json': {'schema': {'type': 'object', 'properties': {'code': {'type': 'integer'}, 'message': {'type': 'string'}, 'data': {'type': 'boolean'}}}}}}} -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.422184"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.422184"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.423306"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.423306"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.424326"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.424326"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.425368"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.425368"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.426346"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.426346"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.427322"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.427322"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.428394"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.428394"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,430 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-002' 执行成功。 -2025-07-11 17:53:11,430 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-002' 执行完毕,状态: 通过 -2025-07-11 17:53:11,430 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-001' for 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,430 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,430 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,430 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,430 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,430 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,430 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,430 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: HTTPSMandatoryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,430 - testcase.TC-SECURITY-001 - INFO - 测试用例 'TC-SECURITY-001' 已为端点 'PUT /api/dms/wb_ml/v1/lujing_test' 初始化。 -2025-07-11 17:53:11,430 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-001' (HTTPS 协议强制性检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,430 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json -2025-07-11 17:53:11,430 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json -2025-07-11 17:53:11,430 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,430 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,430 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 -2025-07-11 17:53:11,430 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,430 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,430 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,430 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,430 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,430 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,430 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.430437 -2025-07-11 17:53:11,430 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) -2025-07-11 17:53:11,430 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,430 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,430 - testcase.TC-SECURITY-001 - WARNING - 原始URL 'http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' 不是HTTPS。跳过此测试用例的URL修改。 -2025-07-11 17:53:11,431 - testcase.TC-SECURITY-001 - ERROR - 安全漏洞:API允许通过HTTP成功响应 (200)。 -2025-07-11 17:53:11,431 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-SECURITY-001' 执行失败。 -2025-07-11 17:53:11,431 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-001' 执行完毕,状态: 失败 -2025-07-11 17:53:11,431 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-QUERY' for 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,431 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,431 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,431 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,431 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,431 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,431 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,431 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchQueryParamCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,431 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' initialized for endpoint: PUT /api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,431 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Initializing: Looking for a simple type query parameter for type mismatch test. -2025-07-11 17:53:11,431 - testcase.TC-ERROR-4001-QUERY - INFO - _find_first_simple_type_parameter: No suitable simple type field found for query parameters. -2025-07-11 17:53:11,431 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No suitable simple type query parameter found for type mismatch test. -2025-07-11 17:53:11,431 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-QUERY' (查询参数类型不匹配检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,431 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json -2025-07-11 17:53:11,431 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json -2025-07-11 17:53:11,431 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,431 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,431 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 -2025-07-11 17:53:11,431 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,431 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,431 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,431 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,431 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,431 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,431 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.431487 -2025-07-11 17:53:11,431 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) -2025-07-11 17:53:11,431 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No target field or original type identified for query param type mismatch. Skipping query param modification. -2025-07-11 17:53:11,431 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,431 - testcase.TC-ERROR-4001-QUERY - DEBUG - TC-ERROR-4001-QUERY is focused on query parameters, generate_request_body will not modify the body. -2025-07-11 17:53:11,431 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,431 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,431 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,431 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' did not modify the URL via modify_request_url hook. -2025-07-11 17:53:11,431 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,431 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,431 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_body, body type: -2025-07-11 17:53:11,432 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Skipped type mismatch (query) validation: No target query parameter was identified. -2025-07-11 17:53:11,432 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: check_performance, elapsed: 0.0006959438323974609 -2025-07-11 17:53:11,432 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4001-QUERY' 执行成功。 -2025-07-11 17:53:11,432 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 执行完毕,状态: 通过 -2025-07-11 17:53:11,432 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-BODY' for 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,432 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,432 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,432 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,432 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,432 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,432 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,432 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,432 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' initialized for endpoint: PUT /api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,432 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Initializing: Looking for a simple type field in request body for type mismatch test. -2025-07-11 17:53:11,432 - testcase.TC-ERROR-4001-BODY - DEBUG - Found request body schema in content type: application/json -2025-07-11 17:53:11,432 - testcase.TC-ERROR-4001-BODY - DEBUG - _find_simple_type_field_in_schema: Searching for simple type field in 'request body' schema... -2025-07-11 17:53:11,432 - testcase.TC-ERROR-4001-BODY - INFO - Found simple type field: Path=version, Type=string -2025-07-11 17:53:11,432 - testcase.TC-ERROR-4001-BODY - INFO - _find_simple_type_field_in_schema: Found simple type field in 'request body': Path=version, Type=string -2025-07-11 17:53:11,432 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Target field for type mismatch (body): version, Original Type: string -2025-07-11 17:53:11,432 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-BODY' (请求体字段类型不匹配检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,432 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json -2025-07-11 17:53:11,432 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json -2025-07-11 17:53:11,432 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,432 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,432 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 -2025-07-11 17:53:11,432 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,432 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,432 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,432 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,432 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,432 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,432 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.432731 -2025-07-11 17:53:11,432 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) -2025-07-11 17:53:11,432 - testcase.TC-ERROR-4001-BODY - DEBUG - TC-ERROR-4001-BODY is focused on request body, generate_query_params will not modify query parameters. -2025-07-11 17:53:11,432 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,432 - testcase.TC-ERROR-4001-BODY - DEBUG - [TC-ERROR-4001-BODY] Preparing to modify request body for type mismatch. Target path: ['version'], Original type: string -2025-07-11 17:53:11,432 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Generated mismatched value '12345' for original type 'string' at path 'version'. -2025-07-11 17:53:11,432 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 在路径 version (键 'version') 处设置值为 '12345' -2025-07-11 17:53:11,432 - testcase.TC-ERROR-4001-BODY - DEBUG - [TC-ERROR-4001-BODY] Successfully set mismatched value at path using util_set_value_at_path. -2025-07-11 17:53:11,432 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,432 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,432 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,432 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' did not modify the URL via modify_request_url hook. -2025-07-11 17:53:11,432 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,432 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,432 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_body, body type: -2025-07-11 17:53:11,433 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: check_performance, elapsed: 0.0009379386901855469 -2025-07-11 17:53:11,433 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4001-BODY' 执行失败。 -2025-07-11 17:53:11,433 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 执行完毕,状态: 失败 -2025-07-11 17:53:11,433 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4002' for 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,433 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,433 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,434 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,434 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,434 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,434 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,434 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: NumberOutOfRangeCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,434 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' initialized for endpoint: PUT /api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,434 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Searching for a ranged numeric field... -2025-07-11 17:53:11,434 - testcase.TC-ERROR-4002 - DEBUG - Found request body schema in content type: application/json -2025-07-11 17:53:11,434 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in request body. -2025-07-11 17:53:11,434 - testcase.TC-ERROR-4002 - DEBUG - 在路径 data.0.record_count 找到范围受限字段。 -2025-07-11 17:53:11,434 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Found ranged numeric field in BODY at path: data.0.record_count -2025-07-11 17:53:11,434 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Target found in 'body' at path 'data.0.record_count'. Type: integer, Min: 0, Max: 10000, Desc: '' -2025-07-11 17:53:11,434 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Setting out-of-range value to 10001 (max is 10000). -2025-07-11 17:53:11,434 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4002' (数值参数越界检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,434 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json -2025-07-11 17:53:11,434 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json -2025-07-11 17:53:11,434 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,434 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,434 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 -2025-07-11 17:53:11,434 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,434 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,434 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,434 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,434 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,434 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,434 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.434687 -2025-07-11 17:53:11,434 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) -2025-07-11 17:53:11,434 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 在路径 data.0.record_count (键 'record_count') 处设置值为 '10001' -2025-07-11 17:53:11,434 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Successfully injected out-of-range value into parameters. -2025-07-11 17:53:11,434 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,434 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,434 - testcase.TC-ERROR-4002 - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,434 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' did not modify the URL via modify_request_url hook. -2025-07-11 17:53:11,434 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,434 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,434 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_body, body type: -2025-07-11 17:53:11,435 - testcase.TC-ERROR-4002 - DEBUG - Hook: check_performance, elapsed: 0.0009801387786865234 -2025-07-11 17:53:11,435 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4002' 执行失败。 -2025-07-11 17:53:11,435 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4002' 执行完毕,状态: 失败 -2025-07-11 17:53:11,435 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4006' for 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,435 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,435 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,435 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,435 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,435 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,435 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,435 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: InvalidEnumValueCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,435 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] Searching for a field with enum constraints... -2025-07-11 17:53:11,435 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No field with enum constraints found in any location. -2025-07-11 17:53:11,435 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No suitable enum field found for this endpoint. -2025-07-11 17:53:11,436 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4006' (非法枚举值检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,436 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json -2025-07-11 17:53:11,436 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json -2025-07-11 17:53:11,436 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,436 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,436 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 -2025-07-11 17:53:11,436 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,436 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,436 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,436 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,436 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,436 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,436 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.436122 -2025-07-11 17:53:11,436 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) -2025-07-11 17:53:11,436 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,436 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,437 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4006' 执行成功。 -2025-07-11 17:53:11,437 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4006' 执行完毕,状态: 通过 -2025-07-11 17:53:11,437 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-BODY' for 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,437 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,437 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,437 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,437 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,437 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,437 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,437 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,437 - ddms_compliance_suite.utils.schema_utils - DEBUG - [Util] 递归查找路径: [], 当前层级必填字段: ['data'], 属性: ['version', 'act', 'data'] -2025-07-11 17:53:11,437 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 策略1: 在路径 root 找到可直接移除的必填字段: 'data' -2025-07-11 17:53:11,437 - testcase.TC-ERROR-4003-BODY - INFO - Found a removable field path in 'request body' schema: 'data' -2025-07-11 17:53:11,437 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-BODY' (缺失必填请求体字段检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,437 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json -2025-07-11 17:53:11,437 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json -2025-07-11 17:53:11,437 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,437 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,437 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 -2025-07-11 17:53:11,437 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,437 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,437 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,437 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,437 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,437 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,437 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.437424 -2025-07-11 17:53:11,437 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) -2025-07-11 17:53:11,437 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 从路径 'data' 成功移除字段 'data' (原值: '[{'description': 'example_string', 'lujing_test_id': 'example_string', 'record_count': 0, 'status': 'active', 'update_date': '2025-07-11T17:53:11.437424'}]')。 -2025-07-11 17:53:11,437 - testcase.TC-ERROR-4003-BODY - INFO - 为进行必填字段缺失测试,已通过工具方法从请求体中移除字段路径 'data'。 -2025-07-11 17:53:11,437 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,437 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,438 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4003-BODY' 执行失败。 -2025-07-11 17:53:11,438 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 执行完毕,状态: 失败 -2025-07-11 17:53:11,438 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-QUERY' for 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,438 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,438 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,438 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,438 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,438 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,438 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,438 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldQueryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,438 - testcase.TC-ERROR-4003-QUERY - INFO - No required 'query' parameter found in endpoint_spec. -2025-07-11 17:53:11,438 - testcase.TC-ERROR-4003-QUERY - INFO - 测试用例 TC-ERROR-4003-QUERY (缺失必填查询参数检查) 已针对端点 'PUT /api/dms/wb_ml/v1/lujing_test' 初始化。Target param to remove: None -2025-07-11 17:53:11,438 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-QUERY' (缺失必填查询参数检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,438 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json -2025-07-11 17:53:11,438 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json -2025-07-11 17:53:11,438 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,438 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,438 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 -2025-07-11 17:53:11,438 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,438 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] -2025-07-11 17:53:11,438 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,438 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string -2025-07-11 17:53:11,438 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 -2025-07-11 17:53:11,438 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active -2025-07-11 17:53:11,438 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T17:53:11.438603 -2025-07-11 17:53:11,438 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) -2025-07-11 17:53:11,438 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,438 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,439 - testcase.TC-ERROR-4003-QUERY - INFO - 由于未识别到可移除的必填查询参数,跳过此测试用例。 -2025-07-11 17:53:11,439 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4003-QUERY' 执行成功。 -2025-07-11 17:53:11,439 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 执行完毕,状态: 通过 -2025-07-11 17:53:11,439 - root - INFO - strictness_level: TestSeverity.CRITICAL -2025-07-11 17:53:11,439 - root - INFO - strictness_level: TestSeverity.CRITICAL -2025-07-11 17:53:11,439 - root - INFO - relevant_failed_tcs: [] -2025-07-11 17:53:11,439 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'PUT /api/dms/wb_ml/v1/lujing_test' 测试完成,最终状态: 通过 -2025-07-11 17:53:11,439 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: DELETE /api/dms/wb_ml/v1/lujing_test (Delete lujing_test) -2025-07-11 17:53:11,439 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,439 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,439 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,439 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,439 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,439 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,439 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,439 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,439 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,439 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,439 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,439 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,439 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,439 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,439 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,439 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,439 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,439 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,439 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,439 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 -2025-07-11 17:53:11,439 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'DELETE /api/dms/wb_ml/v1/lujing_test' 发现了 20 个适用的测试用例 (已排序): ['TC-STATUS-001', 'TC-HEADER-001', 'TC-SECURITY-002', 'TC-LLM-COMPLIANCE-001', 'TC-RESTful-001', 'TC-DMS-PAGINATION-001', 'TC-RESTful-004', 'TC-RESTful-002', 'TC-DMS-CORE-SCHEMA-001', 'TC-CORE-FUNC-001', 'TC-RESTful-003', 'TC-DMS-URL-VERSION-001', 'TC-CORE-FUNC-002', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4002', 'TC-ERROR-4006', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY'] -2025-07-11 17:53:11,439 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,439 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,439 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,440 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,440 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,440 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,440 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,440 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,440 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'DELETE /api/dms/wb_ml/v1/lujing_test' 初始化。 -2025-07-11 17:53:11,440 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,440 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json -2025-07-11 17:53:11,440 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json -2025-07-11 17:53:11,440 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,440 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,440 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,440 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,440 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,440 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) -2025-07-11 17:53:11,440 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,440 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.429420"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.429420"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.430437"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.430437"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.431487"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.431487"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 193' -d '{"version": 12345, "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.432731"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 193\' -d \'{"version": 12345, "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.432731"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 199' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 10001, "status": "active", "update_date": "2025-07-11T17:53:11.434687"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 199\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 10001, "status": "active", "update_date": "2025-07-11T17:53:11.434687"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.436122"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.436122"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.942224"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.942224"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.943255"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.943255"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.944255"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.944255"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.945356"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.945356"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.946323"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.946323"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.947295"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.947295"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,949 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-URL-VERSION-001' 执行成功。 +2025-07-11 18:57:44,949 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,949 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-002' for 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,949 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,949 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,949 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,949 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,949 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,949 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,949 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: FlexibleSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,949 - testcase.TC-CORE-FUNC-002 - INFO - 测试用例 'TC-CORE-FUNC-002' 已为端点 'PUT /api/dms/wb_ml/v1/lujing_test' 初始化。 +2025-07-11 18:57:44,949 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-002' (灵活的返回体JSON Schema验证) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,949 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json +2025-07-11 18:57:44,949 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json +2025-07-11 18:57:44,949 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,949 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,949 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 +2025-07-11 18:57:44,949 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,949 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,949 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,949 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,949 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,949 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,949 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.949567 +2025-07-11 18:57:44,949 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) +2025-07-11 18:57:44,949 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,949 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,950 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-002' 执行成功。 +2025-07-11 18:57:44,950 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-002' 执行完毕,状态: 通过 +2025-07-11 18:57:44,950 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-001' for 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,950 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,950 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,950 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,950 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,950 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,950 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,950 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: HTTPSMandatoryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,950 - testcase.TC-SECURITY-001 - INFO - 测试用例 'TC-SECURITY-001' 已为端点 'PUT /api/dms/wb_ml/v1/lujing_test' 初始化。 +2025-07-11 18:57:44,950 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-001' (HTTPS 协议强制性检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,950 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json +2025-07-11 18:57:44,950 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json +2025-07-11 18:57:44,950 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,950 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,950 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 +2025-07-11 18:57:44,950 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,950 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,950 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,950 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,950 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,950 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,950 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.950599 +2025-07-11 18:57:44,950 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) +2025-07-11 18:57:44,950 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,950 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,950 - testcase.TC-SECURITY-001 - WARNING - 原始URL 'http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' 不是HTTPS。跳过此测试用例的URL修改。 +2025-07-11 18:57:44,951 - testcase.TC-SECURITY-001 - ERROR - 安全漏洞:API允许通过HTTP成功响应 (200)。 +2025-07-11 18:57:44,951 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-SECURITY-001' 执行失败。 +2025-07-11 18:57:44,951 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-001' 执行完毕,状态: 失败 +2025-07-11 18:57:44,951 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-QUERY' for 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,951 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,951 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,951 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,951 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,951 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,951 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,951 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchQueryParamCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,951 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' initialized for endpoint: PUT /api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,951 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Initializing: Looking for a simple type query parameter for type mismatch test. +2025-07-11 18:57:44,951 - testcase.TC-ERROR-4001-QUERY - INFO - _find_first_simple_type_parameter: No suitable simple type field found for query parameters. +2025-07-11 18:57:44,951 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No suitable simple type query parameter found for type mismatch test. +2025-07-11 18:57:44,951 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-QUERY' (查询参数类型不匹配检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,951 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json +2025-07-11 18:57:44,951 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json +2025-07-11 18:57:44,951 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,951 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,951 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 +2025-07-11 18:57:44,951 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,951 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,951 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,951 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,951 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,951 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,951 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.951607 +2025-07-11 18:57:44,951 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) +2025-07-11 18:57:44,951 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No target field or original type identified for query param type mismatch. Skipping query param modification. +2025-07-11 18:57:44,951 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:44,951 - testcase.TC-ERROR-4001-QUERY - DEBUG - TC-ERROR-4001-QUERY is focused on query parameters, generate_request_body will not modify the body. +2025-07-11 18:57:44,951 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,951 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,951 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,951 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' did not modify the URL via modify_request_url hook. +2025-07-11 18:57:44,951 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,951 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:44,951 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_body, body type: +2025-07-11 18:57:44,952 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Skipped type mismatch (query) validation: No target query parameter was identified. +2025-07-11 18:57:44,952 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: check_performance, elapsed: 0.0006699562072753906 +2025-07-11 18:57:44,952 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4001-QUERY' 执行成功。 +2025-07-11 18:57:44,952 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 执行完毕,状态: 通过 +2025-07-11 18:57:44,952 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-BODY' for 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,952 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,952 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,952 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,952 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,952 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,952 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,952 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,952 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' initialized for endpoint: PUT /api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,952 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Initializing: Looking for a simple type field in request body for type mismatch test. +2025-07-11 18:57:44,952 - testcase.TC-ERROR-4001-BODY - DEBUG - Found request body schema in content type: application/json +2025-07-11 18:57:44,952 - testcase.TC-ERROR-4001-BODY - DEBUG - _find_simple_type_field_in_schema: Searching for simple type field in 'request body' schema... +2025-07-11 18:57:44,952 - testcase.TC-ERROR-4001-BODY - INFO - Found simple type field: Path=version, Type=string +2025-07-11 18:57:44,952 - testcase.TC-ERROR-4001-BODY - INFO - _find_simple_type_field_in_schema: Found simple type field in 'request body': Path=version, Type=string +2025-07-11 18:57:44,952 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Target field for type mismatch (body): version, Original Type: string +2025-07-11 18:57:44,952 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-BODY' (请求体字段类型不匹配检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,952 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json +2025-07-11 18:57:44,952 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json +2025-07-11 18:57:44,952 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,952 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,952 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 +2025-07-11 18:57:44,952 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,952 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,952 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,952 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,952 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,952 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,952 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.952712 +2025-07-11 18:57:44,952 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) +2025-07-11 18:57:44,952 - testcase.TC-ERROR-4001-BODY - DEBUG - TC-ERROR-4001-BODY is focused on request body, generate_query_params will not modify query parameters. +2025-07-11 18:57:44,952 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:44,952 - testcase.TC-ERROR-4001-BODY - DEBUG - [TC-ERROR-4001-BODY] Preparing to modify request body for type mismatch. Target path: ['version'], Original type: string +2025-07-11 18:57:44,952 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Generated mismatched value '12345' for original type 'string' at path 'version'. +2025-07-11 18:57:44,952 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 在路径 version (键 'version') 处设置值为 '12345' +2025-07-11 18:57:44,952 - testcase.TC-ERROR-4001-BODY - DEBUG - [TC-ERROR-4001-BODY] Successfully set mismatched value at path using util_set_value_at_path. +2025-07-11 18:57:44,952 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,952 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,952 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,952 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' did not modify the URL via modify_request_url hook. +2025-07-11 18:57:44,952 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,952 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:44,952 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_body, body type: +2025-07-11 18:57:44,953 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: check_performance, elapsed: 0.0006530284881591797 +2025-07-11 18:57:44,953 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4001-BODY' 执行失败。 +2025-07-11 18:57:44,953 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 执行完毕,状态: 失败 +2025-07-11 18:57:44,953 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4002' for 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,953 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,953 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,953 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,953 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,953 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,953 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,953 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: NumberOutOfRangeCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,953 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' initialized for endpoint: PUT /api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,953 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Searching for a ranged numeric field... +2025-07-11 18:57:44,953 - testcase.TC-ERROR-4002 - DEBUG - Found request body schema in content type: application/json +2025-07-11 18:57:44,953 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in request body. +2025-07-11 18:57:44,953 - testcase.TC-ERROR-4002 - DEBUG - 在路径 data.0.record_count 找到范围受限字段。 +2025-07-11 18:57:44,953 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Found ranged numeric field in BODY at path: data.0.record_count +2025-07-11 18:57:44,953 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Target found in 'body' at path 'data.0.record_count'. Type: integer, Min: 0, Max: 10000, Desc: '' +2025-07-11 18:57:44,953 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Setting out-of-range value to 10001 (max is 10000). +2025-07-11 18:57:44,953 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4002' (数值参数越界检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,953 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json +2025-07-11 18:57:44,953 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json +2025-07-11 18:57:44,953 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,953 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,953 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 +2025-07-11 18:57:44,953 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,953 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,953 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,953 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,953 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,953 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,953 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.953838 +2025-07-11 18:57:44,953 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) +2025-07-11 18:57:44,953 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 在路径 data.0.record_count (键 'record_count') 处设置值为 '10001' +2025-07-11 18:57:44,953 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Successfully injected out-of-range value into parameters. +2025-07-11 18:57:44,953 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,953 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,953 - testcase.TC-ERROR-4002 - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,953 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' did not modify the URL via modify_request_url hook. +2025-07-11 18:57:44,953 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,953 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:44,953 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_body, body type: +2025-07-11 18:57:44,954 - testcase.TC-ERROR-4002 - DEBUG - Hook: check_performance, elapsed: 0.0006530284881591797 +2025-07-11 18:57:44,954 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4002' 执行失败。 +2025-07-11 18:57:44,954 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4002' 执行完毕,状态: 失败 +2025-07-11 18:57:44,954 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4006' for 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,954 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,954 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,954 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,954 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,954 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,954 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,954 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: InvalidEnumValueCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,954 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] Searching for a field with enum constraints... +2025-07-11 18:57:44,954 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No field with enum constraints found in any location. +2025-07-11 18:57:44,954 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No suitable enum field found for this endpoint. +2025-07-11 18:57:44,954 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4006' (非法枚举值检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,954 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json +2025-07-11 18:57:44,954 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json +2025-07-11 18:57:44,954 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,954 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,954 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 +2025-07-11 18:57:44,954 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,954 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,954 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,954 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,954 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,954 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,954 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.954880 +2025-07-11 18:57:44,954 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) +2025-07-11 18:57:44,954 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,954 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,955 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4006' 执行成功。 +2025-07-11 18:57:44,955 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4006' 执行完毕,状态: 通过 +2025-07-11 18:57:44,955 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-BODY' for 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,955 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,955 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,955 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,955 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,955 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,955 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,955 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,955 - ddms_compliance_suite.utils.schema_utils - DEBUG - [Util] 递归查找路径: [], 当前层级必填字段: ['data'], 属性: ['version', 'act', 'data'] +2025-07-11 18:57:44,955 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 策略1: 在路径 root 找到可直接移除的必填字段: 'data' +2025-07-11 18:57:44,955 - testcase.TC-ERROR-4003-BODY - INFO - Found a removable field path in 'request body' schema: 'data' +2025-07-11 18:57:44,955 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-BODY' (缺失必填请求体字段检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,955 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json +2025-07-11 18:57:44,955 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json +2025-07-11 18:57:44,955 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,955 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,955 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 +2025-07-11 18:57:44,955 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,955 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,955 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,955 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,955 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,955 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,955 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.955852 +2025-07-11 18:57:44,955 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) +2025-07-11 18:57:44,955 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 从路径 'data' 成功移除字段 'data' (原值: '[{'description': 'example_string', 'lujing_test_id': 'example_string', 'record_count': 0, 'status': 'active', 'update_date': '2025-07-11T18:57:44.955852'}]')。 +2025-07-11 18:57:44,955 - testcase.TC-ERROR-4003-BODY - INFO - 为进行必填字段缺失测试,已通过工具方法从请求体中移除字段路径 'data'。 +2025-07-11 18:57:44,955 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,955 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,956 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4003-BODY' 执行失败。 +2025-07-11 18:57:44,956 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 执行完毕,状态: 失败 +2025-07-11 18:57:44,956 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-QUERY' for 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,956 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,956 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,956 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,956 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,956 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,956 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,956 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldQueryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,956 - testcase.TC-ERROR-4003-QUERY - INFO - No required 'query' parameter found in endpoint_spec. +2025-07-11 18:57:44,956 - testcase.TC-ERROR-4003-QUERY - INFO - 测试用例 TC-ERROR-4003-QUERY (缺失必填查询参数检查) 已针对端点 'PUT /api/dms/wb_ml/v1/lujing_test' 初始化。Target param to remove: None +2025-07-11 18:57:44,956 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-QUERY' (缺失必填查询参数检查) for endpoint 'PUT /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,956 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_lujing_test': application/json +2025-07-11 18:57:44,956 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_lujing_test': application/json +2025-07-11 18:57:44,956 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,956 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,956 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 使用 schema 中的 'example' 值 for (context: update_lujing_test_body.act): 0 +2025-07-11 18:57:44,956 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 array 类型数据 for (context: update_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,956 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 object 类型数据 for (context: update_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:44,956 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,956 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:44,956 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 number/integer 类型数据 for (context: update_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:44,956 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('') for (context: update_lujing_test_body.data[0].status): active +2025-07-11 18:57:44,956 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_lujing_test] 生成 string 类型数据 ('date-time') for (context: update_lujing_test_body.data[0].update_date): 2025-07-11T18:57:44.956832 +2025-07-11 18:57:44,956 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_lujing_test' (type: ) +2025-07-11 18:57:44,956 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,956 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.948436"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.948436"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.949567"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.949567"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.950599"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.950599"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.951607"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.951607"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 193' -d '{"version": 12345, "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.952712"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 193\' -d \'{"version": 12345, "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.952712"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 199' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 10001, "status": "active", "update_date": "2025-07-11T18:57:44.953838"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 199\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 10001, "status": "active", "update_date": "2025-07-11T18:57:44.953838"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.954880"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.954880"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 30' -d '{"version": "1.0.0", "act": 0}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 30\' -d \'{"version": "1.0.0", "act": 0}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.438603"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.438603"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,441 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,441 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-STATUS-001' 执行成功。 -2025-07-11 17:53:11,441 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,441 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-HEADER-001' for 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,441 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,441 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,441 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,441 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,441 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,441 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,441 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: RequiredHeadersSchemaCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,441 - RequiredHeadersSchemaCheck - INFO - 测试用例 TC-HEADER-001 (必需请求头Schema验证) 已针对端点 'DELETE /api/dms/wb_ml/v1/lujing_test' 初始化。 -2025-07-11 17:53:11,441 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-HEADER-001' (必需请求头Schema验证) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,441 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json -2025-07-11 17:53:11,441 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json -2025-07-11 17:53:11,441 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,441 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,441 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,441 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,441 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,441 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) -2025-07-11 17:53:11,441 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,441 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,442 - RequiredHeadersSchemaCheck - INFO - API端点: DELETE /api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,442 - RequiredHeadersSchemaCheck - INFO - 发现的header参数: [] -2025-07-11 17:53:11,442 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Tenant-ID: 找到=False, 必需=False, 名称=None -2025-07-11 17:53:11,442 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Tenant-ID -2025-07-11 17:53:11,442 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Data-Domain: 找到=False, 必需=False, 名称=None -2025-07-11 17:53:11,442 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Data-Domain -2025-07-11 17:53:11,442 - RequiredHeadersSchemaCheck - INFO - 检查请求头 Authorization: 找到=False, 必需=False, 名称=None -2025-07-11 17:53:11,442 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 Authorization -2025-07-11 17:53:11,442 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-HEADER-001' 执行失败。 -2025-07-11 17:53:11,442 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 失败 -2025-07-11 17:53:11,442 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-002' for 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,442 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,442 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,442 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,442 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,442 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,442 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,442 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: EncryptedFieldsCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,442 - testcase.TC-SECURITY-002 - INFO - 测试用例 TC-SECURITY-002 (敏感字段加密检查) 已初始化,将检查以下敏感字段是否加密: {'location', 'position', 'coord'} -2025-07-11 17:53:11,442 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-002' (敏感字段加密检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,442 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json -2025-07-11 17:53:11,442 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json -2025-07-11 17:53:11,442 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,442 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,442 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,442 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,442 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,442 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) -2025-07-11 17:53:11,442 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,442 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,443 - testcase.TC-SECURITY-002 - INFO - response_context.json_content: {'code': 404, 'data': False, 'message': '未找到要删除的资源'} -2025-07-11 17:53:11,443 - testcase.TC-SECURITY-002 - INFO - response_data:{'code': 404, 'data': False, 'message': '未找到要删除的资源'} -2025-07-11 17:53:11,443 - testcase.TC-SECURITY-002 - INFO - 未在响应中找到需要检查的敏感字段。 -2025-07-11 17:53:11,443 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-SECURITY-002' 执行成功。 -2025-07-11 17:53:11,443 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-002' 执行完毕,状态: 通过 -2025-07-11 17:53:11,443 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-LLM-COMPLIANCE-001' for 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,443 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,443 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,443 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,443 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,443 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,443 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,443 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: LLMComplianceCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,443 - testcase.TC-LLM-COMPLIANCE-001 - INFO - 已加载合规性标准: [] -2025-07-11 17:53:11,443 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-LLM-COMPLIANCE-001' (LLM合规性综合检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,443 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json -2025-07-11 17:53:11,443 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json -2025-07-11 17:53:11,443 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,443 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,443 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,443 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,443 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,443 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) -2025-07-11 17:53:11,443 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,443 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,444 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-LLM-COMPLIANCE-001' 执行成功。 -2025-07-11 17:53:11,444 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,444 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-001' for 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,444 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,444 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,444 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,444 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,444 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,444 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,444 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: CoreNamingStructureTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,444 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-001' (核心命名与结构规范检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,444 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json -2025-07-11 17:53:11,444 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json -2025-07-11 17:53:11,444 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,444 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,444 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,444 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,444 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,444 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) -2025-07-11 17:53:11,444 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,444 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,445 - testcase.TC-RESTful-001 - INFO - responses: {'200': {'description': 'Success', 'content': {'application/json': {'schema': {'type': 'object', 'properties': {'code': {'type': 'integer'}, 'message': {'type': 'string'}, 'data': {'type': 'boolean'}}}}}}} -2025-07-11 17:53:11,445 - testcase.TC-RESTful-001 - INFO - 检查响应定义: status_code=200, 可用响应定义=['200'] -2025-07-11 17:53:11,445 - testcase.TC-RESTful-001 - INFO - 找到精确状态码 200 的响应定义 -2025-07-11 17:53:11,445 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-001' 执行成功。 -2025-07-11 17:53:11,445 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,445 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-PAGINATION-001' for 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,445 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,445 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,445 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,445 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,445 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,445 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,445 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: PaginationParamsCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,445 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-PAGINATION-001' (分页参数检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,445 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json -2025-07-11 17:53:11,445 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json -2025-07-11 17:53:11,445 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,445 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,445 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,445 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,445 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,445 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) -2025-07-11 17:53:11,445 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,445 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,446 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-DMS-PAGINATION-001' 执行失败。 -2025-07-11 17:53:11,446 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 执行完毕,状态: 失败 -2025-07-11 17:53:11,446 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-004' for 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,446 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,446 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,446 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,446 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,446 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,446 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,446 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourceCollectionPluralCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,446 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-004' (资源集合复数命名检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,446 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json -2025-07-11 17:53:11,446 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json -2025-07-11 17:53:11,446 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,446 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,446 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,446 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,446 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,446 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) -2025-07-11 17:53:11,446 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,446 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,447 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-004' 执行成功。 -2025-07-11 17:53:11,447 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-004' 执行完毕,状态: 通过 -2025-07-11 17:53:11,447 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-002' for 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,447 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,447 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,447 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,447 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,447 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,447 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,447 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourcePathNounCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,447 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-002' (资源路径名词检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,447 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json -2025-07-11 17:53:11,447 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json -2025-07-11 17:53:11,447 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,447 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,447 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,447 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,447 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,447 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) -2025-07-11 17:53:11,447 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,447 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,448 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-002' 执行成功。 -2025-07-11 17:53:11,448 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-002' 执行完毕,状态: 通过 -2025-07-11 17:53:11,448 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-CORE-SCHEMA-001' for 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,448 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,448 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,448 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,448 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,448 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,448 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,448 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaFormatCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,448 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-CORE-SCHEMA-001' (DMS核心存储服务API响应格式检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,448 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json -2025-07-11 17:53:11,448 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json -2025-07-11 17:53:11,448 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,448 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,448 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,448 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,448 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,448 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) -2025-07-11 17:53:11,448 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,448 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,449 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行成功。 -2025-07-11 17:53:11,449 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,449 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-001' for 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,449 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,449 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,449 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,449 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,449 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,449 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,449 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,449 - testcase.TC-CORE-FUNC-001 - INFO - 测试用例 'TC-CORE-FUNC-001' 已为端点 'DELETE /api/dms/wb_ml/v1/lujing_test' 初始化。 -2025-07-11 17:53:11,449 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-001' (返回体JSON Schema验证) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,449 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json -2025-07-11 17:53:11,449 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json -2025-07-11 17:53:11,449 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,449 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,449 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,449 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,449 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,449 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) -2025-07-11 17:53:11,449 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,449 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,957 - testcase.TC-ERROR-4003-QUERY - INFO - 由于未识别到可移除的必填查询参数,跳过此测试用例。 +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4003-QUERY' 执行成功。 +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 执行完毕,状态: 通过 +2025-07-11 18:57:44,957 - root - INFO - strictness_level: TestSeverity.CRITICAL +2025-07-11 18:57:44,957 - root - INFO - strictness_level: TestSeverity.CRITICAL +2025-07-11 18:57:44,957 - root - INFO - relevant_failed_tcs: [] +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'PUT /api/dms/wb_ml/v1/lujing_test' 测试完成,最终状态: 通过 +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: DELETE /api/dms/wb_ml/v1/lujing_test (Delete lujing_test) +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'DELETE /api/dms/wb_ml/v1/lujing_test'。 +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'DELETE /api/dms/wb_ml/v1/lujing_test' 发现了 20 个适用的测试用例 (已排序): ['TC-STATUS-001', 'TC-HEADER-001', 'TC-SECURITY-002', 'TC-LLM-COMPLIANCE-001', 'TC-RESTful-001', 'TC-DMS-PAGINATION-001', 'TC-RESTful-004', 'TC-RESTful-002', 'TC-DMS-CORE-SCHEMA-001', 'TC-CORE-FUNC-001', 'TC-RESTful-003', 'TC-DMS-URL-VERSION-001', 'TC-CORE-FUNC-002', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4002', 'TC-ERROR-4006', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY'] +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,957 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'DELETE /api/dms/wb_ml/v1/lujing_test' 初始化。 +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,957 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:44,958 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] +2025-07-11 18:57:44,958 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,958 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) +2025-07-11 18:57:44,958 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,958 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,958 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,958 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-STATUS-001' 执行成功。 +2025-07-11 18:57:44,958 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,958 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-HEADER-001' for 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,958 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,958 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,958 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,958 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,958 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,958 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,958 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: RequiredHeadersSchemaCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,958 - RequiredHeadersSchemaCheck - INFO - 测试用例 TC-HEADER-001 (必需请求头Schema验证) 已针对端点 'DELETE /api/dms/wb_ml/v1/lujing_test' 初始化。 +2025-07-11 18:57:44,958 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-HEADER-001' (必需请求头Schema验证) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,958 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json +2025-07-11 18:57:44,958 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json +2025-07-11 18:57:44,958 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] +2025-07-11 18:57:44,958 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,958 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:44,958 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] +2025-07-11 18:57:44,958 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,958 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) +2025-07-11 18:57:44,958 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,958 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,959 - RequiredHeadersSchemaCheck - INFO - API端点: DELETE /api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,959 - RequiredHeadersSchemaCheck - INFO - 发现的header参数: [] +2025-07-11 18:57:44,959 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Tenant-ID: 找到=False, 必需=False, 名称=None +2025-07-11 18:57:44,959 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Tenant-ID +2025-07-11 18:57:44,959 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Data-Domain: 找到=False, 必需=False, 名称=None +2025-07-11 18:57:44,959 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Data-Domain +2025-07-11 18:57:44,959 - RequiredHeadersSchemaCheck - INFO - 检查请求头 Authorization: 找到=False, 必需=False, 名称=None +2025-07-11 18:57:44,959 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 Authorization +2025-07-11 18:57:44,959 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-HEADER-001' 执行失败。 +2025-07-11 18:57:44,959 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 失败 +2025-07-11 18:57:44,959 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-002' for 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,959 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,959 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,959 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,959 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,959 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,959 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,959 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: EncryptedFieldsCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,959 - testcase.TC-SECURITY-002 - INFO - 测试用例 TC-SECURITY-002 (敏感字段加密检查) 已初始化,将检查以下敏感字段是否加密: {'coord', 'position', 'location'} +2025-07-11 18:57:44,959 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-002' (敏感字段加密检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,959 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json +2025-07-11 18:57:44,959 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json +2025-07-11 18:57:44,959 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] +2025-07-11 18:57:44,959 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,959 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:44,959 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] +2025-07-11 18:57:44,959 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,959 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) +2025-07-11 18:57:44,959 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,959 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,960 - testcase.TC-SECURITY-002 - INFO - response_context.json_content: {'code': 404, 'data': False, 'message': '未找到要删除的资源'} +2025-07-11 18:57:44,960 - testcase.TC-SECURITY-002 - INFO - response_data:{'code': 404, 'data': False, 'message': '未找到要删除的资源'} +2025-07-11 18:57:44,960 - testcase.TC-SECURITY-002 - INFO - 未在响应中找到需要检查的敏感字段。 +2025-07-11 18:57:44,960 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-SECURITY-002' 执行成功。 +2025-07-11 18:57:44,960 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-002' 执行完毕,状态: 通过 +2025-07-11 18:57:44,960 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-LLM-COMPLIANCE-001' for 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,960 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,960 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,960 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,960 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,960 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,960 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,960 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: LLMComplianceCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,960 - testcase.TC-LLM-COMPLIANCE-001 - INFO - 已加载合规性标准: [] +2025-07-11 18:57:44,960 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-LLM-COMPLIANCE-001' (LLM合规性综合检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,960 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json +2025-07-11 18:57:44,960 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json +2025-07-11 18:57:44,960 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] +2025-07-11 18:57:44,960 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,960 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:44,960 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] +2025-07-11 18:57:44,960 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,960 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) +2025-07-11 18:57:44,960 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,960 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,961 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-LLM-COMPLIANCE-001' 执行成功。 +2025-07-11 18:57:44,961 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,961 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-001' for 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,961 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,961 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,961 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,961 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,961 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,961 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,961 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: CoreNamingStructureTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,961 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-001' (核心命名与结构规范检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,961 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json +2025-07-11 18:57:44,961 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json +2025-07-11 18:57:44,961 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] +2025-07-11 18:57:44,961 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,961 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:44,961 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] +2025-07-11 18:57:44,961 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,961 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) +2025-07-11 18:57:44,961 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,961 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,962 - testcase.TC-RESTful-001 - INFO - responses: {'200': {'description': 'Success', 'content': {'application/json': {'schema': {'type': 'object', 'properties': {'code': {'type': 'integer'}, 'message': {'type': 'string'}, 'data': {'type': 'boolean'}}}}}}} +2025-07-11 18:57:44,962 - testcase.TC-RESTful-001 - INFO - 检查响应定义: status_code=200, 可用响应定义=['200'] +2025-07-11 18:57:44,962 - testcase.TC-RESTful-001 - INFO - 找到精确状态码 200 的响应定义 +2025-07-11 18:57:44,962 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-001' 执行成功。 +2025-07-11 18:57:44,962 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,962 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-PAGINATION-001' for 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,962 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,962 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,962 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,962 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,962 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,962 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,962 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: PaginationParamsCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,962 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-PAGINATION-001' (分页参数检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,962 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json +2025-07-11 18:57:44,962 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json +2025-07-11 18:57:44,962 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] +2025-07-11 18:57:44,962 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,962 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:44,962 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] +2025-07-11 18:57:44,962 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,962 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) +2025-07-11 18:57:44,962 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,962 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,963 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-DMS-PAGINATION-001' 执行失败。 +2025-07-11 18:57:44,963 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 执行完毕,状态: 失败 +2025-07-11 18:57:44,963 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-004' for 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,963 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,963 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,963 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,963 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,963 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,963 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,963 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourceCollectionPluralCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,963 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-004' (资源集合复数命名检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,963 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json +2025-07-11 18:57:44,963 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json +2025-07-11 18:57:44,963 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] +2025-07-11 18:57:44,963 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,963 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:44,963 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] +2025-07-11 18:57:44,963 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,963 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) +2025-07-11 18:57:44,963 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,963 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,964 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-004' 执行成功。 +2025-07-11 18:57:44,964 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-004' 执行完毕,状态: 通过 +2025-07-11 18:57:44,964 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-002' for 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,964 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,964 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,964 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,964 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,964 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,964 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,964 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourcePathNounCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,964 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-002' (资源路径名词检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,964 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json +2025-07-11 18:57:44,964 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json +2025-07-11 18:57:44,964 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] +2025-07-11 18:57:44,964 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,964 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:44,964 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] +2025-07-11 18:57:44,964 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,964 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) +2025-07-11 18:57:44,964 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,964 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,965 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-002' 执行成功。 +2025-07-11 18:57:44,965 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-002' 执行完毕,状态: 通过 +2025-07-11 18:57:44,965 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-CORE-SCHEMA-001' for 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,965 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,965 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,965 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,965 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,965 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,965 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,965 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaFormatCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,965 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-CORE-SCHEMA-001' (DMS核心存储服务API响应格式检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,965 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json +2025-07-11 18:57:44,965 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json +2025-07-11 18:57:44,965 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] +2025-07-11 18:57:44,965 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,965 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:44,965 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] +2025-07-11 18:57:44,965 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,965 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) +2025-07-11 18:57:44,965 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,965 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.956832"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 195\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.956832"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' DEBUG: curlify generated command (raw): curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test DEBUG: curlify generated command (repr): 'curl -X DELETE -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 65\' -d \'{"version": "1.0.0", "data": [{"description": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' DEBUG: curlify generated command (raw): curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test @@ -2482,282 +2479,281 @@ DEBUG: curlify generated command (repr): 'curl -X DELETE -H \'User-Agent: python DEBUG: curlify generated command (raw): curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test DEBUG: curlify generated command (repr): 'curl -X DELETE -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 65\' -d \'{"version": "1.0.0", "data": [{"description": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' DEBUG: curlify generated command (raw): curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,966 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行成功。 +2025-07-11 18:57:44,966 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,966 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-001' for 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,966 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,966 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,966 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,966 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,966 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,966 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,966 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,966 - testcase.TC-CORE-FUNC-001 - INFO - 测试用例 'TC-CORE-FUNC-001' 已为端点 'DELETE /api/dms/wb_ml/v1/lujing_test' 初始化。 +2025-07-11 18:57:44,966 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-001' (返回体JSON Schema验证) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,966 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json +2025-07-11 18:57:44,966 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json +2025-07-11 18:57:44,966 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] +2025-07-11 18:57:44,966 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,966 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:44,966 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] +2025-07-11 18:57:44,966 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,966 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) +2025-07-11 18:57:44,966 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,966 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,967 - ddms_compliance_suite.utils.schema_provider - DEBUG - 尝试从API规范中为状态码 200 查找Schema。 +2025-07-11 18:57:44,967 - testcase.TC-CORE-FUNC-001 - INFO - 将根据从API规范中获取的schema验证响应体。 +2025-07-11 18:57:44,967 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-001' 执行成功。 +2025-07-11 18:57:44,967 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,967 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-003' for 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,967 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,967 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,967 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,967 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,967 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,967 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,967 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TimeFormatCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,967 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-003' (时间字段ISO 8601格式检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,967 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json +2025-07-11 18:57:44,967 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json +2025-07-11 18:57:44,967 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] +2025-07-11 18:57:44,967 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,967 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:44,967 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] +2025-07-11 18:57:44,967 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,967 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) +2025-07-11 18:57:44,967 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,967 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,968 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-003' 执行成功。 +2025-07-11 18:57:44,968 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-003' 执行完毕,状态: 通过 +2025-07-11 18:57:44,968 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-URL-VERSION-001' for 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,968 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,968 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,968 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,968 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,968 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,968 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,968 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: URLVersionCheckCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,968 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-URL-VERSION-001' (DMS API URL版本号检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,968 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json +2025-07-11 18:57:44,968 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json +2025-07-11 18:57:44,968 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] +2025-07-11 18:57:44,968 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,968 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:44,968 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] +2025-07-11 18:57:44,968 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,968 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) +2025-07-11 18:57:44,968 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,968 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,969 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-URL-VERSION-001' 执行成功。 +2025-07-11 18:57:44,969 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,969 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-002' for 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,969 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,969 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,969 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,969 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,969 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,969 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,969 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: FlexibleSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,969 - testcase.TC-CORE-FUNC-002 - INFO - 测试用例 'TC-CORE-FUNC-002' 已为端点 'DELETE /api/dms/wb_ml/v1/lujing_test' 初始化。 +2025-07-11 18:57:44,969 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-002' (灵活的返回体JSON Schema验证) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,969 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json +2025-07-11 18:57:44,969 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json +2025-07-11 18:57:44,969 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] +2025-07-11 18:57:44,969 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,969 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:44,969 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] +2025-07-11 18:57:44,969 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,969 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) +2025-07-11 18:57:44,969 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,969 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,970 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-002' 执行成功。 +2025-07-11 18:57:44,970 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-002' 执行完毕,状态: 通过 +2025-07-11 18:57:44,970 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-001' for 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,970 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,970 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,970 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,970 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,970 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,970 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,970 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: HTTPSMandatoryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,970 - testcase.TC-SECURITY-001 - INFO - 测试用例 'TC-SECURITY-001' 已为端点 'DELETE /api/dms/wb_ml/v1/lujing_test' 初始化。 +2025-07-11 18:57:44,970 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-001' (HTTPS 协议强制性检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,970 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json +2025-07-11 18:57:44,970 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json +2025-07-11 18:57:44,970 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] +2025-07-11 18:57:44,970 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,970 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:44,970 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] +2025-07-11 18:57:44,970 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,970 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) +2025-07-11 18:57:44,970 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,970 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,970 - testcase.TC-SECURITY-001 - WARNING - 原始URL 'http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' 不是HTTPS。跳过此测试用例的URL修改。 +2025-07-11 18:57:44,971 - testcase.TC-SECURITY-001 - ERROR - 安全漏洞:API允许通过HTTP成功响应 (200)。 +2025-07-11 18:57:44,971 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-SECURITY-001' 执行失败。 +2025-07-11 18:57:44,971 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-001' 执行完毕,状态: 失败 +2025-07-11 18:57:44,971 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-QUERY' for 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,971 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,971 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,971 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,971 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,971 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,971 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,971 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchQueryParamCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,971 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' initialized for endpoint: DELETE /api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,971 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Initializing: Looking for a simple type query parameter for type mismatch test. +2025-07-11 18:57:44,971 - testcase.TC-ERROR-4001-QUERY - INFO - _find_first_simple_type_parameter: No suitable simple type field found for query parameters. +2025-07-11 18:57:44,971 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No suitable simple type query parameter found for type mismatch test. +2025-07-11 18:57:44,971 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-QUERY' (查询参数类型不匹配检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,971 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json +2025-07-11 18:57:44,971 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json +2025-07-11 18:57:44,971 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] +2025-07-11 18:57:44,971 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,971 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:44,971 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] +2025-07-11 18:57:44,971 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,971 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) +2025-07-11 18:57:44,971 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No target field or original type identified for query param type mismatch. Skipping query param modification. +2025-07-11 18:57:44,971 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:44,971 - testcase.TC-ERROR-4001-QUERY - DEBUG - TC-ERROR-4001-QUERY is focused on query parameters, generate_request_body will not modify the body. +2025-07-11 18:57:44,971 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,971 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,971 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,971 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' did not modify the URL via modify_request_url hook. +2025-07-11 18:57:44,971 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,971 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:44,971 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_body, body type: +2025-07-11 18:57:44,972 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Skipped type mismatch (query) validation: No target query parameter was identified. +2025-07-11 18:57:44,972 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: check_performance, elapsed: 0.0006310939788818359 +2025-07-11 18:57:44,972 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4001-QUERY' 执行成功。 +2025-07-11 18:57:44,972 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 执行完毕,状态: 通过 +2025-07-11 18:57:44,972 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-BODY' for 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,972 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,972 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,972 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,972 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,972 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,972 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,972 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,972 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' initialized for endpoint: DELETE /api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,972 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Initializing: Looking for a simple type field in request body for type mismatch test. +2025-07-11 18:57:44,972 - testcase.TC-ERROR-4001-BODY - DEBUG - Found request body schema in content type: application/json +2025-07-11 18:57:44,972 - testcase.TC-ERROR-4001-BODY - DEBUG - _find_simple_type_field_in_schema: Searching for simple type field in 'request body' schema... +2025-07-11 18:57:44,972 - testcase.TC-ERROR-4001-BODY - INFO - Found simple type field: Path=version, Type=string +2025-07-11 18:57:44,972 - testcase.TC-ERROR-4001-BODY - INFO - _find_simple_type_field_in_schema: Found simple type field in 'request body': Path=version, Type=string +2025-07-11 18:57:44,972 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Target field for type mismatch (body): version, Original Type: string +2025-07-11 18:57:44,972 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-BODY' (请求体字段类型不匹配检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,972 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json +2025-07-11 18:57:44,972 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json +2025-07-11 18:57:44,972 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] +2025-07-11 18:57:44,972 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,972 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:44,972 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] +2025-07-11 18:57:44,972 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,972 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) +2025-07-11 18:57:44,972 - testcase.TC-ERROR-4001-BODY - DEBUG - TC-ERROR-4001-BODY is focused on request body, generate_query_params will not modify query parameters. +2025-07-11 18:57:44,972 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:44,972 - testcase.TC-ERROR-4001-BODY - DEBUG - [TC-ERROR-4001-BODY] Preparing to modify request body for type mismatch. Target path: ['version'], Original type: string +2025-07-11 18:57:44,972 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Generated mismatched value '12345' for original type 'string' at path 'version'. +2025-07-11 18:57:44,972 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 在路径 version (键 'version') 处设置值为 '12345' +2025-07-11 18:57:44,972 - testcase.TC-ERROR-4001-BODY - DEBUG - [TC-ERROR-4001-BODY] Successfully set mismatched value at path using util_set_value_at_path. +2025-07-11 18:57:44,972 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,972 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,972 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,972 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' did not modify the URL via modify_request_url hook. +2025-07-11 18:57:44,972 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,972 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:44,972 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_body, body type: +2025-07-11 18:57:44,973 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: check_performance, elapsed: 0.0006258487701416016 +2025-07-11 18:57:44,973 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4001-BODY' 执行失败。 +2025-07-11 18:57:44,973 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 执行完毕,状态: 失败 +2025-07-11 18:57:44,973 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4002' for 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,973 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,973 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,973 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,973 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,973 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,973 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,973 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: NumberOutOfRangeCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,973 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' initialized for endpoint: DELETE /api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,973 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Searching for a ranged numeric field... +2025-07-11 18:57:44,973 - testcase.TC-ERROR-4002 - DEBUG - Found request body schema in content type: application/json +2025-07-11 18:57:44,973 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in request body. +2025-07-11 18:57:44,973 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in query parameters. +2025-07-11 18:57:44,973 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in path parameters. +2025-07-11 18:57:44,973 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in header parameters. +2025-07-11 18:57:44,973 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] No ranged numeric field found in any location. +2025-07-11 18:57:44,973 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] No suitable ranged numeric field found for this endpoint. +2025-07-11 18:57:44,973 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4002' (数值参数越界检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,973 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json +2025-07-11 18:57:44,973 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json +2025-07-11 18:57:44,973 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] +2025-07-11 18:57:44,973 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,973 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:44,973 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] +2025-07-11 18:57:44,973 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,973 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) +2025-07-11 18:57:44,973 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,973 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,973 - testcase.TC-ERROR-4002 - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,973 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' did not modify the URL via modify_request_url hook. +2025-07-11 18:57:44,973 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,973 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:44,973 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_body, body type: +2025-07-11 18:57:44,974 - testcase.TC-ERROR-4002 - DEBUG - Hook: check_performance, elapsed: 0.0006501674652099609 +2025-07-11 18:57:44,974 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4002' 执行成功。 +2025-07-11 18:57:44,974 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4002' 执行完毕,状态: 通过 +2025-07-11 18:57:44,974 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4006' for 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,974 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,974 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,974 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,974 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,974 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,974 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,974 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: InvalidEnumValueCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,974 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] Searching for a field with enum constraints... +2025-07-11 18:57:44,974 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No field with enum constraints found in any location. +2025-07-11 18:57:44,974 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No suitable enum field found for this endpoint. +2025-07-11 18:57:44,974 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4006' (非法枚举值检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,974 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json +2025-07-11 18:57:44,974 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json +2025-07-11 18:57:44,974 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] +2025-07-11 18:57:44,974 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,974 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:44,974 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] +2025-07-11 18:57:44,974 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,974 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) +2025-07-11 18:57:44,974 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,974 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,975 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4006' 执行成功。 +2025-07-11 18:57:44,975 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4006' 执行完毕,状态: 通过 +2025-07-11 18:57:44,975 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-BODY' for 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,975 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,975 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,975 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,975 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,975 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,975 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,975 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,975 - ddms_compliance_suite.utils.schema_utils - DEBUG - [Util] 递归查找路径: [], 当前层级必填字段: ['data'], 属性: ['version', 'data'] +2025-07-11 18:57:44,975 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 策略1: 在路径 root 找到可直接移除的必填字段: 'data' +2025-07-11 18:57:44,975 - testcase.TC-ERROR-4003-BODY - INFO - Found a removable field path in 'request body' schema: 'data' +2025-07-11 18:57:44,975 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-BODY' (缺失必填请求体字段检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,975 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json +2025-07-11 18:57:44,975 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json +2025-07-11 18:57:44,975 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] +2025-07-11 18:57:44,975 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,975 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:44,975 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] +2025-07-11 18:57:44,975 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,975 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) +2025-07-11 18:57:44,975 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 从路径 'data' 成功移除字段 'data' (原值: '[{'description': 'example_string'}]')。 +2025-07-11 18:57:44,975 - testcase.TC-ERROR-4003-BODY - INFO - 为进行必填字段缺失测试,已通过工具方法从请求体中移除字段路径 'data'。 +2025-07-11 18:57:44,975 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,975 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test DEBUG: curlify generated command (repr): 'curl -X DELETE -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 65\' -d \'{"version": "1.0.0", "data": [{"description": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' DEBUG: curlify generated command (raw): curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,450 - ddms_compliance_suite.utils.schema_provider - DEBUG - 尝试从API规范中为状态码 200 查找Schema。 -2025-07-11 17:53:11,450 - testcase.TC-CORE-FUNC-001 - INFO - 将根据从API规范中获取的schema验证响应体。 -2025-07-11 17:53:11,450 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-001' 执行成功。 -2025-07-11 17:53:11,450 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,450 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-003' for 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,450 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,450 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,450 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,450 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,450 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,450 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,450 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TimeFormatCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,450 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-003' (时间字段ISO 8601格式检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,450 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json -2025-07-11 17:53:11,450 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json -2025-07-11 17:53:11,450 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,450 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,450 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,450 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,450 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,450 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) -2025-07-11 17:53:11,450 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,450 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,451 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-003' 执行成功。 -2025-07-11 17:53:11,451 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-003' 执行完毕,状态: 通过 -2025-07-11 17:53:11,451 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-URL-VERSION-001' for 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,451 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,451 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,451 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,451 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,451 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,451 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,451 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: URLVersionCheckCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,451 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-URL-VERSION-001' (DMS API URL版本号检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,451 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json -2025-07-11 17:53:11,451 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json -2025-07-11 17:53:11,451 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,451 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,451 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,451 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,451 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,451 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) -2025-07-11 17:53:11,451 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,451 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,452 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-URL-VERSION-001' 执行成功。 -2025-07-11 17:53:11,452 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,452 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-002' for 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,452 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,452 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,452 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,452 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,452 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,452 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,452 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: FlexibleSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,452 - testcase.TC-CORE-FUNC-002 - INFO - 测试用例 'TC-CORE-FUNC-002' 已为端点 'DELETE /api/dms/wb_ml/v1/lujing_test' 初始化。 -2025-07-11 17:53:11,452 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-002' (灵活的返回体JSON Schema验证) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,452 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json -2025-07-11 17:53:11,452 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json -2025-07-11 17:53:11,452 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,452 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,452 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,452 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,452 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,452 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) -2025-07-11 17:53:11,452 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,452 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,453 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-002' 执行成功。 -2025-07-11 17:53:11,453 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-002' 执行完毕,状态: 通过 -2025-07-11 17:53:11,453 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-001' for 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,453 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,453 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,453 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,453 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,453 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,453 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,453 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: HTTPSMandatoryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,453 - testcase.TC-SECURITY-001 - INFO - 测试用例 'TC-SECURITY-001' 已为端点 'DELETE /api/dms/wb_ml/v1/lujing_test' 初始化。 -2025-07-11 17:53:11,453 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-001' (HTTPS 协议强制性检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,453 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json -2025-07-11 17:53:11,453 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json -2025-07-11 17:53:11,453 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,453 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,453 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,453 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,453 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,453 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) -2025-07-11 17:53:11,453 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,453 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,453 - testcase.TC-SECURITY-001 - WARNING - 原始URL 'http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' 不是HTTPS。跳过此测试用例的URL修改。 -2025-07-11 17:53:11,454 - testcase.TC-SECURITY-001 - ERROR - 安全漏洞:API允许通过HTTP成功响应 (200)。 -2025-07-11 17:53:11,454 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-SECURITY-001' 执行失败。 -2025-07-11 17:53:11,454 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-001' 执行完毕,状态: 失败 -2025-07-11 17:53:11,454 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-QUERY' for 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,454 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,454 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,454 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,454 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,454 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,454 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,454 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchQueryParamCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,454 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' initialized for endpoint: DELETE /api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,454 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Initializing: Looking for a simple type query parameter for type mismatch test. -2025-07-11 17:53:11,454 - testcase.TC-ERROR-4001-QUERY - INFO - _find_first_simple_type_parameter: No suitable simple type field found for query parameters. -2025-07-11 17:53:11,454 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No suitable simple type query parameter found for type mismatch test. -2025-07-11 17:53:11,454 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-QUERY' (查询参数类型不匹配检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,454 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json -2025-07-11 17:53:11,454 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json -2025-07-11 17:53:11,454 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,454 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,454 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,454 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,454 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,454 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) -2025-07-11 17:53:11,454 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No target field or original type identified for query param type mismatch. Skipping query param modification. -2025-07-11 17:53:11,455 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,455 - testcase.TC-ERROR-4001-QUERY - DEBUG - TC-ERROR-4001-QUERY is focused on query parameters, generate_request_body will not modify the body. -2025-07-11 17:53:11,455 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,455 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,455 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,455 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' did not modify the URL via modify_request_url hook. -2025-07-11 17:53:11,455 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,455 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,455 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_body, body type: -2025-07-11 17:53:11,456 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Skipped type mismatch (query) validation: No target query parameter was identified. -2025-07-11 17:53:11,456 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: check_performance, elapsed: 0.001287221908569336 -2025-07-11 17:53:11,456 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4001-QUERY' 执行成功。 -2025-07-11 17:53:11,456 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 执行完毕,状态: 通过 -2025-07-11 17:53:11,456 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-BODY' for 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,456 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,456 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,456 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,456 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,456 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,456 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,456 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,456 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' initialized for endpoint: DELETE /api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,456 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Initializing: Looking for a simple type field in request body for type mismatch test. -2025-07-11 17:53:11,456 - testcase.TC-ERROR-4001-BODY - DEBUG - Found request body schema in content type: application/json -2025-07-11 17:53:11,456 - testcase.TC-ERROR-4001-BODY - DEBUG - _find_simple_type_field_in_schema: Searching for simple type field in 'request body' schema... -2025-07-11 17:53:11,456 - testcase.TC-ERROR-4001-BODY - INFO - Found simple type field: Path=version, Type=string -2025-07-11 17:53:11,456 - testcase.TC-ERROR-4001-BODY - INFO - _find_simple_type_field_in_schema: Found simple type field in 'request body': Path=version, Type=string -2025-07-11 17:53:11,456 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Target field for type mismatch (body): version, Original Type: string -2025-07-11 17:53:11,456 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-BODY' (请求体字段类型不匹配检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,456 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json -2025-07-11 17:53:11,456 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json -2025-07-11 17:53:11,456 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,456 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,456 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,456 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,456 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,456 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) -2025-07-11 17:53:11,456 - testcase.TC-ERROR-4001-BODY - DEBUG - TC-ERROR-4001-BODY is focused on request body, generate_query_params will not modify query parameters. -2025-07-11 17:53:11,456 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,456 - testcase.TC-ERROR-4001-BODY - DEBUG - [TC-ERROR-4001-BODY] Preparing to modify request body for type mismatch. Target path: ['version'], Original type: string -2025-07-11 17:53:11,456 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Generated mismatched value '12345' for original type 'string' at path 'version'. -2025-07-11 17:53:11,456 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 在路径 version (键 'version') 处设置值为 '12345' -2025-07-11 17:53:11,456 - testcase.TC-ERROR-4001-BODY - DEBUG - [TC-ERROR-4001-BODY] Successfully set mismatched value at path using util_set_value_at_path. -2025-07-11 17:53:11,456 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,456 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,456 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,456 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' did not modify the URL via modify_request_url hook. -2025-07-11 17:53:11,456 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,456 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,456 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_body, body type: -2025-07-11 17:53:11,458 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: check_performance, elapsed: 0.001188039779663086 -2025-07-11 17:53:11,458 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4001-BODY' 执行失败。 -2025-07-11 17:53:11,458 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 执行完毕,状态: 失败 -2025-07-11 17:53:11,458 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4002' for 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,458 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,458 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,458 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,458 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,458 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,458 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,458 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: NumberOutOfRangeCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,458 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' initialized for endpoint: DELETE /api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,458 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Searching for a ranged numeric field... -2025-07-11 17:53:11,458 - testcase.TC-ERROR-4002 - DEBUG - Found request body schema in content type: application/json -2025-07-11 17:53:11,458 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in request body. -2025-07-11 17:53:11,458 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in query parameters. -2025-07-11 17:53:11,458 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in path parameters. -2025-07-11 17:53:11,458 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in header parameters. -2025-07-11 17:53:11,458 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] No ranged numeric field found in any location. -2025-07-11 17:53:11,458 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] No suitable ranged numeric field found for this endpoint. -2025-07-11 17:53:11,458 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4002' (数值参数越界检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,458 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json -2025-07-11 17:53:11,458 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json -2025-07-11 17:53:11,458 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,458 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,458 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,458 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,458 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,458 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) -2025-07-11 17:53:11,458 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,458 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,458 - testcase.TC-ERROR-4002 - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,458 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' did not modify the URL via modify_request_url hook. -2025-07-11 17:53:11,458 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,458 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,458 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_body, body type: -2025-07-11 17:53:11,459 - testcase.TC-ERROR-4002 - DEBUG - Hook: check_performance, elapsed: 0.0011968612670898438 -2025-07-11 17:53:11,459 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4002' 执行成功。 -2025-07-11 17:53:11,459 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4002' 执行完毕,状态: 通过 -2025-07-11 17:53:11,459 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4006' for 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,459 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,459 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,459 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,459 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,459 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,459 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,459 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: InvalidEnumValueCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,459 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] Searching for a field with enum constraints... -2025-07-11 17:53:11,459 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No field with enum constraints found in any location. -2025-07-11 17:53:11,459 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No suitable enum field found for this endpoint. -2025-07-11 17:53:11,460 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4006' (非法枚举值检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,460 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json -2025-07-11 17:53:11,460 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json -2025-07-11 17:53:11,460 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,460 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,460 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,460 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,460 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,460 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) -2025-07-11 17:53:11,460 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,460 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,460 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4006' 执行成功。 -2025-07-11 17:53:11,460 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4006' 执行完毕,状态: 通过 -2025-07-11 17:53:11,461 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-BODY' for 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,461 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,461 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,461 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,461 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,461 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,461 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,461 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,461 - ddms_compliance_suite.utils.schema_utils - DEBUG - [Util] 递归查找路径: [], 当前层级必填字段: ['data'], 属性: ['version', 'data'] -2025-07-11 17:53:11,461 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 策略1: 在路径 root 找到可直接移除的必填字段: 'data' -2025-07-11 17:53:11,461 - testcase.TC-ERROR-4003-BODY - INFO - Found a removable field path in 'request body' schema: 'data' -2025-07-11 17:53:11,461 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-BODY' (缺失必填请求体字段检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,461 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json -2025-07-11 17:53:11,461 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json -2025-07-11 17:53:11,461 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,461 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,461 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,461 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,461 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,461 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) -2025-07-11 17:53:11,461 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 从路径 'data' 成功移除字段 'data' (原值: '[{'description': 'example_string'}]')。 -2025-07-11 17:53:11,461 - testcase.TC-ERROR-4003-BODY - INFO - 为进行必填字段缺失测试,已通过工具方法从请求体中移除字段路径 'data'。 -2025-07-11 17:53:11,461 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,461 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,462 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4003-BODY' 执行失败。 -2025-07-11 17:53:11,462 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 执行完毕,状态: 失败 -2025-07-11 17:53:11,462 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-QUERY' for 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,462 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,462 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,462 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,462 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,462 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,462 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,462 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldQueryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,462 - testcase.TC-ERROR-4003-QUERY - INFO - No required 'query' parameter found in endpoint_spec. -2025-07-11 17:53:11,462 - testcase.TC-ERROR-4003-QUERY - INFO - 测试用例 TC-ERROR-4003-QUERY (缺失必填查询参数检查) 已针对端点 'DELETE /api/dms/wb_ml/v1/lujing_test' 初始化。Target param to remove: None -2025-07-11 17:53:11,462 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-QUERY' (缺失必填查询参数检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' -2025-07-11 17:53:11,462 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json -2025-07-11 17:53:11,462 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json -2025-07-11 17:53:11,462 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,462 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 -2025-07-11 17:53:11,462 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,462 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,462 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string -2025-07-11 17:53:11,462 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) -2025-07-11 17:53:11,462 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,462 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test DEBUG: curlify generated command (repr): 'curl -X DELETE -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 65\' -d \'{"version": "1.0.0", "data": [{"description": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' DEBUG: curlify generated command (raw): curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test DEBUG: curlify generated command (repr): 'curl -X DELETE -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 65\' -d \'{"version": "1.0.0", "data": [{"description": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' @@ -2776,967 +2772,972 @@ DEBUG: curlify generated command (repr): 'curl -X DELETE -H \'User-Agent: python DEBUG: curlify generated command (raw): curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test DEBUG: curlify generated command (repr): 'curl -X DELETE -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 65\' -d \'{"version": "1.0.0", "data": [{"description": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' DEBUG: curlify generated command (raw): curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 20' -d '{"version": "1.0.0"}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,976 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4003-BODY' 执行失败。 +2025-07-11 18:57:44,976 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 执行完毕,状态: 失败 +2025-07-11 18:57:44,976 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-QUERY' for 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,976 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,976 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,976 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,976 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,976 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,976 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,976 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldQueryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,976 - testcase.TC-ERROR-4003-QUERY - INFO - No required 'query' parameter found in endpoint_spec. +2025-07-11 18:57:44,976 - testcase.TC-ERROR-4003-QUERY - INFO - 测试用例 TC-ERROR-4003-QUERY (缺失必填查询参数检查) 已针对端点 'DELETE /api/dms/wb_ml/v1/lujing_test' 初始化。Target param to remove: None +2025-07-11 18:57:44,976 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-QUERY' (缺失必填查询参数检查) for endpoint 'DELETE /api/dms/wb_ml/v1/lujing_test' +2025-07-11 18:57:44,976 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_lujing_test': application/json +2025-07-11 18:57:44,976 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_lujing_test': application/json +2025-07-11 18:57:44,976 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body). Properties: ['version', 'data'] +2025-07-11 18:57:44,976 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 使用 schema 中的 'example' 值 for (context: delete_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:44,976 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 array 类型数据 for (context: delete_lujing_test_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:44,976 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 object 类型数据 for (context: delete_lujing_test_body.data[0]). Properties: ['description'] +2025-07-11 18:57:44,976 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_lujing_test] 生成 string 类型数据 ('') for (context: delete_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:44,976 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_lujing_test' (type: ) +2025-07-11 18:57:44,976 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,976 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:44,977 - testcase.TC-ERROR-4003-QUERY - INFO - 由于未识别到可移除的必填查询参数,跳过此测试用例。 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4003-QUERY' 执行成功。 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 执行完毕,状态: 通过 +2025-07-11 18:57:44,977 - root - INFO - strictness_level: TestSeverity.CRITICAL +2025-07-11 18:57:44,977 - root - INFO - strictness_level: TestSeverity.CRITICAL +2025-07-11 18:57:44,977 - root - INFO - relevant_failed_tcs: [] +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'DELETE /api/dms/wb_ml/v1/lujing_test' 测试完成,最终状态: 通过 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report (Create wb_dr_pro_daily_report) +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 发现了 20 个适用的测试用例 (已排序): ['TC-STATUS-001', 'TC-HEADER-001', 'TC-SECURITY-002', 'TC-LLM-COMPLIANCE-001', 'TC-RESTful-001', 'TC-DMS-PAGINATION-001', 'TC-RESTful-004', 'TC-RESTful-002', 'TC-DMS-CORE-SCHEMA-001', 'TC-CORE-FUNC-001', 'TC-RESTful-003', 'TC-DMS-URL-VERSION-001', 'TC-CORE-FUNC-002', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4002', 'TC-ERROR-4006', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY'] +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,977 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:44.977510 +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,977 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,978 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,978 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-STATUS-001' 执行成功。 +2025-07-11 18:57:44,978 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,978 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-HEADER-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,978 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,978 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,978 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,978 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,978 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,978 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,978 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: RequiredHeadersSchemaCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,978 - RequiredHeadersSchemaCheck - INFO - 测试用例 TC-HEADER-001 (必需请求头Schema验证) 已针对端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 +2025-07-11 18:57:44,978 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-HEADER-001' (必需请求头Schema验证) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,978 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,978 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,978 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,978 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:44,978 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:44,978 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,978 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:44,978 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:44,978 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:44,978 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:44,978 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:44.978653 +2025-07-11 18:57:44,978 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:44,978 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:44,978 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,978 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,979 - RequiredHeadersSchemaCheck - INFO - API端点: POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,979 - RequiredHeadersSchemaCheck - INFO - 发现的header参数: [] +2025-07-11 18:57:44,979 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Tenant-ID: 找到=False, 必需=False, 名称=None +2025-07-11 18:57:44,979 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Tenant-ID +2025-07-11 18:57:44,979 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Data-Domain: 找到=False, 必需=False, 名称=None +2025-07-11 18:57:44,979 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Data-Domain +2025-07-11 18:57:44,979 - RequiredHeadersSchemaCheck - INFO - 检查请求头 Authorization: 找到=False, 必需=False, 名称=None +2025-07-11 18:57:44,979 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 Authorization +2025-07-11 18:57:44,979 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-HEADER-001' 执行失败。 +2025-07-11 18:57:44,979 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 失败 +2025-07-11 18:57:44,979 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-002' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,979 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,979 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,979 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,979 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,979 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,979 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,979 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: EncryptedFieldsCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,979 - testcase.TC-SECURITY-002 - INFO - 测试用例 TC-SECURITY-002 (敏感字段加密检查) 已初始化,将检查以下敏感字段是否加密: {'coord', 'position', 'location'} +2025-07-11 18:57:44,979 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-002' (敏感字段加密检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,979 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,979 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,979 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,979 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:44,979 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:44,979 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,979 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:44,979 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:44,979 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:44,979 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:44,979 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:44.979718 +2025-07-11 18:57:44,979 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:44,979 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:44,979 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,979 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,980 - testcase.TC-SECURITY-002 - INFO - response_context.json_content: {'code': 0, 'data': True, 'message': '创建成功'} +2025-07-11 18:57:44,980 - testcase.TC-SECURITY-002 - INFO - response_data:{'code': 0, 'data': True, 'message': '创建成功'} +2025-07-11 18:57:44,980 - testcase.TC-SECURITY-002 - INFO - 未在响应中找到需要检查的敏感字段。 +2025-07-11 18:57:44,980 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-SECURITY-002' 执行成功。 +2025-07-11 18:57:44,980 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-002' 执行完毕,状态: 通过 +2025-07-11 18:57:44,980 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-LLM-COMPLIANCE-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,980 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,980 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,980 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,980 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,980 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,980 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,980 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: LLMComplianceCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,980 - testcase.TC-LLM-COMPLIANCE-001 - INFO - 已加载合规性标准: [] +2025-07-11 18:57:44,980 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-LLM-COMPLIANCE-001' (LLM合规性综合检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,980 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,980 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,980 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,980 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:44,980 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:44,980 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,980 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:44,980 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:44,980 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:44,980 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:44,980 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:44.980783 +2025-07-11 18:57:44,980 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:44,980 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:44,980 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,980 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,981 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-LLM-COMPLIANCE-001' 执行成功。 +2025-07-11 18:57:44,981 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,981 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,981 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,981 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,981 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,981 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,981 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,981 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,981 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: CoreNamingStructureTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,981 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-001' (核心命名与结构规范检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,981 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,981 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,981 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,981 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:44,981 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:44,981 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,981 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:44,981 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:44,981 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:44,981 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:44,981 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:44.981767 +2025-07-11 18:57:44,981 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:44,981 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:44,981 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,981 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,982 - testcase.TC-RESTful-001 - INFO - responses: {'200': {'description': 'Success', 'content': {'application/json': {'schema': {'type': 'object', 'properties': {'code': {'type': 'integer'}, 'message': {'type': 'string'}, 'data': {'type': 'boolean'}}}}}}} +2025-07-11 18:57:44,982 - testcase.TC-RESTful-001 - INFO - 检查响应定义: status_code=200, 可用响应定义=['200'] +2025-07-11 18:57:44,982 - testcase.TC-RESTful-001 - INFO - 找到精确状态码 200 的响应定义 +2025-07-11 18:57:44,982 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-001' 执行成功。 +2025-07-11 18:57:44,982 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,982 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-PAGINATION-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,982 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,982 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,982 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,982 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,982 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,982 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,982 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: PaginationParamsCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,982 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-PAGINATION-001' (分页参数检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,982 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,982 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,982 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,982 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:44,982 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:44,982 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,982 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:44,982 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:44,982 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:44,982 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:44,982 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:44.982732 +2025-07-11 18:57:44,982 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:44,982 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:44,982 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,982 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,983 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-DMS-PAGINATION-001' 执行失败。 +2025-07-11 18:57:44,983 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 执行完毕,状态: 失败 +2025-07-11 18:57:44,983 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-004' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,983 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,983 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,983 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,983 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,983 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,983 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,983 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourceCollectionPluralCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,983 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-004' (资源集合复数命名检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,983 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,983 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,983 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,983 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:44,983 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:44,983 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,983 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:44,983 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:44,983 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:44,983 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:44,983 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:44.983732 +2025-07-11 18:57:44,983 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:44,983 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:44,983 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,983 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report DEBUG: curlify generated command (repr): 'curl -X DELETE -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 20\' -d \'{"version": "1.0.0"}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' DEBUG: curlify generated command (raw): curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test -2025-07-11 17:53:11,463 - testcase.TC-ERROR-4003-QUERY - INFO - 由于未识别到可移除的必填查询参数,跳过此测试用例。 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4003-QUERY' 执行成功。 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 执行完毕,状态: 通过 -2025-07-11 17:53:11,463 - root - INFO - strictness_level: TestSeverity.CRITICAL -2025-07-11 17:53:11,463 - root - INFO - strictness_level: TestSeverity.CRITICAL -2025-07-11 17:53:11,463 - root - INFO - relevant_failed_tcs: [] -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'DELETE /api/dms/wb_ml/v1/lujing_test' 测试完成,最终状态: 通过 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report (Create wb_dr_pro_daily_report) -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 发现了 20 个适用的测试用例 (已排序): ['TC-STATUS-001', 'TC-HEADER-001', 'TC-SECURITY-002', 'TC-LLM-COMPLIANCE-001', 'TC-RESTful-001', 'TC-DMS-PAGINATION-001', 'TC-RESTful-004', 'TC-RESTful-002', 'TC-DMS-CORE-SCHEMA-001', 'TC-CORE-FUNC-001', 'TC-RESTful-003', 'TC-DMS-URL-VERSION-001', 'TC-CORE-FUNC-002', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4002', 'TC-ERROR-4006', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY'] -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,463 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.463505 -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,463 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,464 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,464 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-STATUS-001' 执行成功。 -2025-07-11 17:53:11,464 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,464 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-HEADER-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,464 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,464 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,464 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,464 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,464 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,464 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,464 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: RequiredHeadersSchemaCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,464 - RequiredHeadersSchemaCheck - INFO - 测试用例 TC-HEADER-001 (必需请求头Schema验证) 已针对端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 -2025-07-11 17:53:11,464 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-HEADER-001' (必需请求头Schema验证) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,464 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,464 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,464 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,464 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,464 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,464 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,464 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,464 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,464 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,464 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,464 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.464607 -2025-07-11 17:53:11,464 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,464 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,464 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,464 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,465 - RequiredHeadersSchemaCheck - INFO - API端点: POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,465 - RequiredHeadersSchemaCheck - INFO - 发现的header参数: [] -2025-07-11 17:53:11,465 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Tenant-ID: 找到=False, 必需=False, 名称=None -2025-07-11 17:53:11,465 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Tenant-ID -2025-07-11 17:53:11,465 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Data-Domain: 找到=False, 必需=False, 名称=None -2025-07-11 17:53:11,465 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Data-Domain -2025-07-11 17:53:11,465 - RequiredHeadersSchemaCheck - INFO - 检查请求头 Authorization: 找到=False, 必需=False, 名称=None -2025-07-11 17:53:11,465 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 Authorization -2025-07-11 17:53:11,465 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-HEADER-001' 执行失败。 -2025-07-11 17:53:11,465 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 失败 -2025-07-11 17:53:11,465 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-002' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,465 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,465 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,465 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,465 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,465 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,465 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,465 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: EncryptedFieldsCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,465 - testcase.TC-SECURITY-002 - INFO - 测试用例 TC-SECURITY-002 (敏感字段加密检查) 已初始化,将检查以下敏感字段是否加密: {'location', 'position', 'coord'} -2025-07-11 17:53:11,465 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-002' (敏感字段加密检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,465 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,465 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,465 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,465 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,465 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,465 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,465 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,465 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,465 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,465 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,465 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.465794 -2025-07-11 17:53:11,465 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,465 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,465 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,465 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,466 - testcase.TC-SECURITY-002 - INFO - response_context.json_content: {'code': 0, 'data': True, 'message': '创建成功'} -2025-07-11 17:53:11,466 - testcase.TC-SECURITY-002 - INFO - response_data:{'code': 0, 'data': True, 'message': '创建成功'} -2025-07-11 17:53:11,466 - testcase.TC-SECURITY-002 - INFO - 未在响应中找到需要检查的敏感字段。 -2025-07-11 17:53:11,466 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-SECURITY-002' 执行成功。 -2025-07-11 17:53:11,466 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-002' 执行完毕,状态: 通过 -2025-07-11 17:53:11,466 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-LLM-COMPLIANCE-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,466 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,466 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,466 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,466 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,466 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,466 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,466 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: LLMComplianceCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,466 - testcase.TC-LLM-COMPLIANCE-001 - INFO - 已加载合规性标准: [] -2025-07-11 17:53:11,466 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-LLM-COMPLIANCE-001' (LLM合规性综合检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,466 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,466 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,466 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,466 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,466 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,467 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,467 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,467 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,467 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,467 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,467 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.467072 -2025-07-11 17:53:11,467 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,467 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,467 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,467 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,468 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-LLM-COMPLIANCE-001' 执行成功。 -2025-07-11 17:53:11,468 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,468 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,468 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,468 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,468 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,468 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,468 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,468 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,468 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: CoreNamingStructureTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,468 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-001' (核心命名与结构规范检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,468 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,468 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,468 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,468 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,468 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,468 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,468 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,468 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,468 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,468 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,468 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.468262 -2025-07-11 17:53:11,468 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,468 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,468 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,468 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,469 - testcase.TC-RESTful-001 - INFO - responses: {'200': {'description': 'Success', 'content': {'application/json': {'schema': {'type': 'object', 'properties': {'code': {'type': 'integer'}, 'message': {'type': 'string'}, 'data': {'type': 'boolean'}}}}}}} -2025-07-11 17:53:11,469 - testcase.TC-RESTful-001 - INFO - 检查响应定义: status_code=200, 可用响应定义=['200'] -2025-07-11 17:53:11,469 - testcase.TC-RESTful-001 - INFO - 找到精确状态码 200 的响应定义 -2025-07-11 17:53:11,469 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-001' 执行成功。 -2025-07-11 17:53:11,469 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,469 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-PAGINATION-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,469 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,469 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,469 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,469 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,469 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,469 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,469 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: PaginationParamsCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,469 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-PAGINATION-001' (分页参数检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,469 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,469 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,469 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,469 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,469 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,469 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,469 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,469 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,469 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,469 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,469 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.469471 -2025-07-11 17:53:11,469 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,469 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,469 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,469 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,470 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-DMS-PAGINATION-001' 执行失败。 -2025-07-11 17:53:11,470 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 执行完毕,状态: 失败 -2025-07-11 17:53:11,470 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-004' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,470 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,470 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,470 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,470 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,470 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,470 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,470 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourceCollectionPluralCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,470 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-004' (资源集合复数命名检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,470 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,470 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,470 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,470 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,470 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,470 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,470 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,470 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,470 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,470 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,470 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.470481 -2025-07-11 17:53:11,470 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,470 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,470 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,470 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report DEBUG: curlify generated command (repr): 'curl -X DELETE -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 65\' -d \'{"version": "1.0.0", "data": [{"description": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.463505", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.463505", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.464607", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.464607", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.465794", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.465794", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.467072", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.467072", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.468262", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.468262", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.977510", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.977510", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.978653", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.978653", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.979718", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.979718", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.980783", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.980783", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.981767", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.981767", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' status_code: 200 responses: {'200': {'description': 'Success', 'content': {'application/json': {'schema': {'type': 'object', 'properties': {'code': {'type': 'integer'}, 'message': {'type': 'string'}, 'data': {'type': 'boolean'}}}}}}} -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.469471", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.469471", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.470481", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,471 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-RESTful-004' 执行失败。 -2025-07-11 17:53:11,471 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-004' 执行完毕,状态: 失败 -2025-07-11 17:53:11,471 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-002' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,471 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,471 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,471 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,471 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,471 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,471 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,471 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourcePathNounCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,471 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-002' (资源路径名词检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,471 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,471 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,471 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,471 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,471 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,471 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,471 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,471 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,471 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,471 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,471 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.471574 -2025-07-11 17:53:11,471 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,471 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,471 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,471 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,472 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-002' 执行成功。 -2025-07-11 17:53:11,472 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-002' 执行完毕,状态: 通过 -2025-07-11 17:53:11,472 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-CORE-SCHEMA-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,472 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,472 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,472 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,472 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,472 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,472 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,472 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaFormatCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,472 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-CORE-SCHEMA-001' (DMS核心存储服务API响应格式检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,472 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,472 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,472 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,472 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,472 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,472 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,472 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,472 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,472 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,472 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,472 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.472663 -2025-07-11 17:53:11,472 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,472 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,472 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,472 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,473 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行成功。 -2025-07-11 17:53:11,473 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,473 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,473 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,473 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,473 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,473 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,473 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,473 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,473 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,473 - testcase.TC-CORE-FUNC-001 - INFO - 测试用例 'TC-CORE-FUNC-001' 已为端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 -2025-07-11 17:53:11,473 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-001' (返回体JSON Schema验证) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,473 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,473 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,473 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,473 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,473 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,473 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,473 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,473 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,473 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,473 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,473 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.473661 -2025-07-11 17:53:11,473 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,473 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,473 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,473 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,474 - ddms_compliance_suite.utils.schema_provider - DEBUG - 尝试从API规范中为状态码 200 查找Schema。 -2025-07-11 17:53:11,474 - testcase.TC-CORE-FUNC-001 - INFO - 将根据从API规范中获取的schema验证响应体。 -2025-07-11 17:53:11,474 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-001' 执行成功。 -2025-07-11 17:53:11,474 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,474 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-003' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,474 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,474 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,474 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,474 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,474 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,474 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,474 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TimeFormatCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,474 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-003' (时间字段ISO 8601格式检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,474 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,474 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,474 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,474 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,474 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,474 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,474 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,474 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,474 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,474 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,474 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.474859 -2025-07-11 17:53:11,474 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,474 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,474 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,474 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,475 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-003' 执行成功。 -2025-07-11 17:53:11,475 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-003' 执行完毕,状态: 通过 -2025-07-11 17:53:11,476 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-URL-VERSION-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,476 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,476 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,476 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,476 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,476 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,476 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,476 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: URLVersionCheckCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,476 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-URL-VERSION-001' (DMS API URL版本号检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,476 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,476 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,476 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,476 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,476 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,476 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,476 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,476 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,476 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,476 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,476 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.476219 -2025-07-11 17:53:11,476 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,476 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,476 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,476 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,477 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-URL-VERSION-001' 执行成功。 -2025-07-11 17:53:11,477 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,477 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-002' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,477 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,477 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,477 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,477 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,477 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,477 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,477 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: FlexibleSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,477 - testcase.TC-CORE-FUNC-002 - INFO - 测试用例 'TC-CORE-FUNC-002' 已为端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 -2025-07-11 17:53:11,477 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-002' (灵活的返回体JSON Schema验证) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,477 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,477 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,477 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,477 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,477 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,477 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,477 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,477 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,477 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,477 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,477 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.477409 -2025-07-11 17:53:11,477 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,477 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,477 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,477 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,478 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-002' 执行成功。 -2025-07-11 17:53:11,478 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-002' 执行完毕,状态: 通过 -2025-07-11 17:53:11,478 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,478 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,478 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,478 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,478 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,478 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,478 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,478 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: HTTPSMandatoryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,478 - testcase.TC-SECURITY-001 - INFO - 测试用例 'TC-SECURITY-001' 已为端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 -2025-07-11 17:53:11,478 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-001' (HTTPS 协议强制性检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,478 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,478 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,478 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,478 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,478 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,478 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,478 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,478 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,478 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,478 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,478 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.478509 -2025-07-11 17:53:11,478 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,478 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,478 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,478 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,478 - testcase.TC-SECURITY-001 - WARNING - 原始URL 'http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 不是HTTPS。跳过此测试用例的URL修改。 -2025-07-11 17:53:11,479 - testcase.TC-SECURITY-001 - ERROR - 安全漏洞:API允许通过HTTP成功响应 (200)。 -2025-07-11 17:53:11,479 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-SECURITY-001' 执行失败。 -2025-07-11 17:53:11,479 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-001' 执行完毕,状态: 失败 -2025-07-11 17:53:11,479 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-QUERY' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,479 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,479 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,479 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,479 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,479 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,479 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,479 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchQueryParamCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,479 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' initialized for endpoint: POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,479 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Initializing: Looking for a simple type query parameter for type mismatch test. -2025-07-11 17:53:11,479 - testcase.TC-ERROR-4001-QUERY - INFO - _find_first_simple_type_parameter: No suitable simple type field found for query parameters. -2025-07-11 17:53:11,479 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No suitable simple type query parameter found for type mismatch test. -2025-07-11 17:53:11,479 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-QUERY' (查询参数类型不匹配检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,479 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,479 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,479 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,479 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,479 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,479 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,479 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,479 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,479 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,479 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,479 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.479566 -2025-07-11 17:53:11,479 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,479 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,479 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No target field or original type identified for query param type mismatch. Skipping query param modification. -2025-07-11 17:53:11,479 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,479 - testcase.TC-ERROR-4001-QUERY - DEBUG - TC-ERROR-4001-QUERY is focused on query parameters, generate_request_body will not modify the body. -2025-07-11 17:53:11,479 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,479 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,479 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,479 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' did not modify the URL via modify_request_url hook. -2025-07-11 17:53:11,479 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,479 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,479 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_body, body type: -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.470481", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.471574", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.471574", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.472663", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.472663", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.473661", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.473661", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.474859", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.474859", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.476219", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.476219", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.477409", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.477409", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.478509", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.478509", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,480 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Skipped type mismatch (query) validation: No target query parameter was identified. -2025-07-11 17:53:11,480 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: check_performance, elapsed: 0.0007660388946533203 -2025-07-11 17:53:11,480 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4001-QUERY' 执行成功。 -2025-07-11 17:53:11,480 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 执行完毕,状态: 通过 -2025-07-11 17:53:11,480 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-BODY' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,480 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,480 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,480 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,480 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,480 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,480 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,480 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,480 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' initialized for endpoint: POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,480 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Initializing: Looking for a simple type field in request body for type mismatch test. -2025-07-11 17:53:11,480 - testcase.TC-ERROR-4001-BODY - DEBUG - Found request body schema in content type: application/json -2025-07-11 17:53:11,480 - testcase.TC-ERROR-4001-BODY - DEBUG - _find_simple_type_field_in_schema: Searching for simple type field in 'request body' schema... -2025-07-11 17:53:11,480 - testcase.TC-ERROR-4001-BODY - INFO - Found simple type field: Path=version, Type=string -2025-07-11 17:53:11,480 - testcase.TC-ERROR-4001-BODY - INFO - _find_simple_type_field_in_schema: Found simple type field in 'request body': Path=version, Type=string -2025-07-11 17:53:11,480 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Target field for type mismatch (body): version, Original Type: string -2025-07-11 17:53:11,480 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-BODY' (请求体字段类型不匹配检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,480 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,480 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,480 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,480 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,480 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,480 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,480 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,480 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,480 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,480 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,480 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.480753 -2025-07-11 17:53:11,480 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,480 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,480 - testcase.TC-ERROR-4001-BODY - DEBUG - TC-ERROR-4001-BODY is focused on request body, generate_query_params will not modify query parameters. -2025-07-11 17:53:11,480 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,480 - testcase.TC-ERROR-4001-BODY - DEBUG - [TC-ERROR-4001-BODY] Preparing to modify request body for type mismatch. Target path: ['version'], Original type: string -2025-07-11 17:53:11,480 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Generated mismatched value '12345' for original type 'string' at path 'version'. -2025-07-11 17:53:11,480 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 在路径 version (键 'version') 处设置值为 '12345' -2025-07-11 17:53:11,480 - testcase.TC-ERROR-4001-BODY - DEBUG - [TC-ERROR-4001-BODY] Successfully set mismatched value at path using util_set_value_at_path. -2025-07-11 17:53:11,480 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,480 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,480 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,480 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' did not modify the URL via modify_request_url hook. -2025-07-11 17:53:11,480 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,480 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,480 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_body, body type: -2025-07-11 17:53:11,481 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: check_performance, elapsed: 0.0006856918334960938 -2025-07-11 17:53:11,481 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4001-BODY' 执行失败。 -2025-07-11 17:53:11,481 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 执行完毕,状态: 失败 -2025-07-11 17:53:11,481 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4002' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,481 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,481 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,481 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,481 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,481 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,481 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,481 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: NumberOutOfRangeCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,481 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' initialized for endpoint: POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,481 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Searching for a ranged numeric field... -2025-07-11 17:53:11,481 - testcase.TC-ERROR-4002 - DEBUG - Found request body schema in content type: application/json -2025-07-11 17:53:11,481 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in request body. -2025-07-11 17:53:11,481 - testcase.TC-ERROR-4002 - DEBUG - 在路径 data.0.record_count 找到范围受限字段。 -2025-07-11 17:53:11,481 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Found ranged numeric field in BODY at path: data.0.record_count -2025-07-11 17:53:11,481 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Target found in 'body' at path 'data.0.record_count'. Type: integer, Min: 0, Max: 10000, Desc: '' -2025-07-11 17:53:11,481 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Setting out-of-range value to 10001 (max is 10000). -2025-07-11 17:53:11,481 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4002' (数值参数越界检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,481 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,481 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,481 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,481 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,481 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,481 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,481 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,481 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,481 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,481 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,481 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.481922 -2025-07-11 17:53:11,481 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,481 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,481 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 在路径 data.0.record_count (键 'record_count') 处设置值为 '10001' -2025-07-11 17:53:11,481 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Successfully injected out-of-range value into parameters. -2025-07-11 17:53:11,481 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,481 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,481 - testcase.TC-ERROR-4002 - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,482 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' did not modify the URL via modify_request_url hook. -2025-07-11 17:53:11,482 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,482 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,482 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_body, body type: -2025-07-11 17:53:11,482 - testcase.TC-ERROR-4002 - DEBUG - Hook: check_performance, elapsed: 0.0007860660552978516 -2025-07-11 17:53:11,482 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4002' 执行失败。 -2025-07-11 17:53:11,482 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4002' 执行完毕,状态: 失败 -2025-07-11 17:53:11,482 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4006' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,482 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,482 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,482 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,482 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,482 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,482 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,482 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: InvalidEnumValueCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,482 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] Searching for a field with enum constraints... -2025-07-11 17:53:11,483 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No field with enum constraints found in any location. -2025-07-11 17:53:11,483 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No suitable enum field found for this endpoint. -2025-07-11 17:53:11,483 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4006' (非法枚举值检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,483 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,483 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,483 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,483 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,483 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,483 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,483 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,483 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,483 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,483 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,483 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.483139 -2025-07-11 17:53:11,483 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,483 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,483 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,483 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,484 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4006' 执行成功。 -2025-07-11 17:53:11,484 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4006' 执行完毕,状态: 通过 -2025-07-11 17:53:11,484 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-BODY' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,484 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,484 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,484 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,484 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,484 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,484 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,484 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,484 - ddms_compliance_suite.utils.schema_utils - DEBUG - [Util] 递归查找路径: [], 当前层级必填字段: ['data'], 属性: ['version', 'act', 'data'] -2025-07-11 17:53:11,484 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 策略1: 在路径 root 找到可直接移除的必填字段: 'data' -2025-07-11 17:53:11,484 - testcase.TC-ERROR-4003-BODY - INFO - Found a removable field path in 'request body' schema: 'data' -2025-07-11 17:53:11,484 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-BODY' (缺失必填请求体字段检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,484 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,484 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,484 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,484 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,484 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,484 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,484 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,484 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,484 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,484 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,484 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.484551 -2025-07-11 17:53:11,484 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,484 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,484 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 从路径 'data' 成功移除字段 'data' (原值: '[{'description': 'example_string', 'record_count': 0, 'status': 'active', 'update_date': '2025-07-11T17:53:11.484551', 'wb_dr_pro_daily_report_id': 'example_string'}]')。 -2025-07-11 17:53:11,484 - testcase.TC-ERROR-4003-BODY - INFO - 为进行必填字段缺失测试,已通过工具方法从请求体中移除字段路径 'data'。 -2025-07-11 17:53:11,484 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,484 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,485 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4003-BODY' 执行失败。 -2025-07-11 17:53:11,485 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 执行完毕,状态: 失败 -2025-07-11 17:53:11,485 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-QUERY' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,485 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,485 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,485 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,485 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,485 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,485 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,485 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldQueryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,485 - testcase.TC-ERROR-4003-QUERY - INFO - No required 'query' parameter found in endpoint_spec. -2025-07-11 17:53:11,485 - testcase.TC-ERROR-4003-QUERY - INFO - 测试用例 TC-ERROR-4003-QUERY (缺失必填查询参数检查) 已针对端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。Target param to remove: None -2025-07-11 17:53:11,485 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-QUERY' (缺失必填查询参数检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,485 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,485 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,485 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,485 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,485 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,485 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,485 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,485 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,485 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,485 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,485 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.485883 -2025-07-11 17:53:11,485 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,485 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,485 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,485 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,486 - testcase.TC-ERROR-4003-QUERY - INFO - 由于未识别到可移除的必填查询参数,跳过此测试用例。 -2025-07-11 17:53:11,486 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4003-QUERY' 执行成功。 -2025-07-11 17:53:11,486 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 执行完毕,状态: 通过 -2025-07-11 17:53:11,486 - root - INFO - strictness_level: TestSeverity.CRITICAL -2025-07-11 17:53:11,486 - root - INFO - strictness_level: TestSeverity.CRITICAL -2025-07-11 17:53:11,486 - root - INFO - relevant_failed_tcs: [] -2025-07-11 17:53:11,486 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 测试完成,最终状态: 通过 -2025-07-11 17:53:11,486 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 (List wb_dr_pro_daily_report) -2025-07-11 17:53:11,486 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,486 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,486 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,486 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,486 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,486 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,486 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,486 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,486 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,486 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,486 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,486 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,486 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,486 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,486 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,486 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,487 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,487 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,487 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,487 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 -2025-07-11 17:53:11,487 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 发现了 20 个适用的测试用例 (已排序): ['TC-STATUS-001', 'TC-HEADER-001', 'TC-SECURITY-002', 'TC-LLM-COMPLIANCE-001', 'TC-RESTful-001', 'TC-DMS-PAGINATION-001', 'TC-RESTful-004', 'TC-RESTful-002', 'TC-DMS-CORE-SCHEMA-001', 'TC-CORE-FUNC-001', 'TC-RESTful-003', 'TC-DMS-URL-VERSION-001', 'TC-CORE-FUNC-002', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4002', 'TC-ERROR-4006', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY'] -2025-07-11 17:53:11,487 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,487 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,487 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,487 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,487 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,487 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,487 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,487 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,487 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 初始化。 -2025-07-11 17:53:11,487 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,487 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,487 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,487 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,487 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,487 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,487 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,488 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-STATUS-001' 执行成功。 -2025-07-11 17:53:11,488 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,488 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-HEADER-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,488 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,488 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,488 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,488 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,488 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,488 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,488 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: RequiredHeadersSchemaCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,488 - RequiredHeadersSchemaCheck - INFO - 测试用例 TC-HEADER-001 (必需请求头Schema验证) 已针对端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 初始化。 -2025-07-11 17:53:11,488 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-HEADER-001' (必需请求头Schema验证) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,488 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,488 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,488 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,488 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,488 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,488 - RequiredHeadersSchemaCheck - INFO - API端点: POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,488 - RequiredHeadersSchemaCheck - INFO - 发现的header参数: [] -2025-07-11 17:53:11,488 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Tenant-ID: 找到=False, 必需=False, 名称=None -2025-07-11 17:53:11,488 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Tenant-ID -2025-07-11 17:53:11,488 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Data-Domain: 找到=False, 必需=False, 名称=None -2025-07-11 17:53:11,489 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Data-Domain -2025-07-11 17:53:11,489 - RequiredHeadersSchemaCheck - INFO - 检查请求头 Authorization: 找到=False, 必需=False, 名称=None -2025-07-11 17:53:11,489 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 Authorization -2025-07-11 17:53:11,489 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-HEADER-001' 执行失败。 -2025-07-11 17:53:11,489 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 失败 -2025-07-11 17:53:11,489 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-002' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,489 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,489 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,489 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,489 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,489 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,489 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,489 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: EncryptedFieldsCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,489 - testcase.TC-SECURITY-002 - INFO - 测试用例 TC-SECURITY-002 (敏感字段加密检查) 已初始化,将检查以下敏感字段是否加密: {'location', 'position', 'coord'} -2025-07-11 17:53:11,489 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-002' (敏感字段加密检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,489 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,489 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,489 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,489 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,489 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,489 - testcase.TC-SECURITY-002 - INFO - response_context.json_content: {'code': 0, 'data': [{'description': 'example_string', 'record_count': 0, 'status': 'active', 'update_date': '2025-07-11T17:53:11.485883', 'wb_dr_pro_daily_report_id': 'example_string'}], 'message': "获取 'wb_dr_pro_daily_report' 列表成功"} -2025-07-11 17:53:11,489 - testcase.TC-SECURITY-002 - INFO - response_data:{'code': 0, 'data': [{'description': 'example_string', 'record_count': 0, 'status': 'active', 'update_date': '2025-07-11T17:53:11.485883', 'wb_dr_pro_daily_report_id': 'example_string'}], 'message': "获取 'wb_dr_pro_daily_report' 列表成功"} -2025-07-11 17:53:11,489 - testcase.TC-SECURITY-002 - INFO - response_data:[{'description': 'example_string', 'record_count': 0, 'status': 'active', 'update_date': '2025-07-11T17:53:11.485883', 'wb_dr_pro_daily_report_id': 'example_string'}] -2025-07-11 17:53:11,490 - testcase.TC-SECURITY-002 - INFO - response_data:{'description': 'example_string', 'record_count': 0, 'status': 'active', 'update_date': '2025-07-11T17:53:11.485883', 'wb_dr_pro_daily_report_id': 'example_string'} -2025-07-11 17:53:11,490 - testcase.TC-SECURITY-002 - INFO - 未在响应中找到需要检查的敏感字段。 -2025-07-11 17:53:11,490 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-SECURITY-002' 执行成功。 -2025-07-11 17:53:11,490 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-002' 执行完毕,状态: 通过 -2025-07-11 17:53:11,490 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-LLM-COMPLIANCE-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,490 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,490 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,490 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,490 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,490 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,490 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,490 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: LLMComplianceCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,490 - testcase.TC-LLM-COMPLIANCE-001 - INFO - 已加载合规性标准: [] -2025-07-11 17:53:11,490 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-LLM-COMPLIANCE-001' (LLM合规性综合检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,490 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,490 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,490 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,490 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,490 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.479566", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.479566", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 204' -d '{"version": 12345, "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.480753", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 204\' -d \'{"version": 12345, "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.480753", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 210' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 10001, "status": "active", "update_date": "2025-07-11T17:53:11.481922", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 210\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 10001, "status": "active", "update_date": "2025-07-11T17:53:11.481922", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.483139", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.483139", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.982732", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.982732", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,984 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-RESTful-004' 执行失败。 +2025-07-11 18:57:44,984 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-004' 执行完毕,状态: 失败 +2025-07-11 18:57:44,984 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-002' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,984 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,984 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,984 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,984 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,984 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,984 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,984 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourcePathNounCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,984 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-002' (资源路径名词检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,984 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,984 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,984 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,984 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:44,984 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:44,984 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,984 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:44,984 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:44,984 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:44,984 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:44,984 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:44.984770 +2025-07-11 18:57:44,984 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:44,984 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:44,984 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,984 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,985 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-002' 执行成功。 +2025-07-11 18:57:44,985 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-002' 执行完毕,状态: 通过 +2025-07-11 18:57:44,985 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-CORE-SCHEMA-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,985 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,985 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,985 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,985 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,985 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,985 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,985 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaFormatCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,985 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-CORE-SCHEMA-001' (DMS核心存储服务API响应格式检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,985 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,985 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,985 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,985 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:44,985 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:44,985 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,985 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:44,985 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:44,985 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:44,985 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:44,985 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:44.985762 +2025-07-11 18:57:44,985 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:44,985 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:44,985 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,985 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,986 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行成功。 +2025-07-11 18:57:44,986 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,986 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,986 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,986 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,986 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,986 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,986 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,986 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,986 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,986 - testcase.TC-CORE-FUNC-001 - INFO - 测试用例 'TC-CORE-FUNC-001' 已为端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 +2025-07-11 18:57:44,986 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-001' (返回体JSON Schema验证) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,986 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,986 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,986 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,986 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:44,986 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:44,986 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,986 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:44,986 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:44,986 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:44,986 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:44,986 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:44.986728 +2025-07-11 18:57:44,986 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:44,986 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:44,986 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,986 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,987 - ddms_compliance_suite.utils.schema_provider - DEBUG - 尝试从API规范中为状态码 200 查找Schema。 +2025-07-11 18:57:44,987 - testcase.TC-CORE-FUNC-001 - INFO - 将根据从API规范中获取的schema验证响应体。 +2025-07-11 18:57:44,987 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-001' 执行成功。 +2025-07-11 18:57:44,987 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,987 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-003' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,987 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,987 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,987 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,987 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,987 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,987 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,987 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TimeFormatCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,987 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-003' (时间字段ISO 8601格式检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,987 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,987 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,987 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,987 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:44,987 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:44,987 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,987 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:44,987 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:44,987 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:44,987 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:44,987 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:44.987723 +2025-07-11 18:57:44,987 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:44,987 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:44,987 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,987 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,988 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-003' 执行成功。 +2025-07-11 18:57:44,988 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-003' 执行完毕,状态: 通过 +2025-07-11 18:57:44,988 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-URL-VERSION-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,988 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,988 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,988 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,988 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,988 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,988 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,988 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: URLVersionCheckCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,988 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-URL-VERSION-001' (DMS API URL版本号检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,988 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,988 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,988 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,988 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:44,988 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:44,988 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,988 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:44,988 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:44,988 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:44,988 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:44,988 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:44.988633 +2025-07-11 18:57:44,988 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:44,988 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:44,988 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,988 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,989 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-URL-VERSION-001' 执行成功。 +2025-07-11 18:57:44,989 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,989 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-002' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,989 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,989 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,989 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,989 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,989 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,989 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,989 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: FlexibleSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,989 - testcase.TC-CORE-FUNC-002 - INFO - 测试用例 'TC-CORE-FUNC-002' 已为端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 +2025-07-11 18:57:44,989 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-002' (灵活的返回体JSON Schema验证) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,989 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,989 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,989 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,989 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:44,989 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:44,989 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,989 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:44,989 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:44,989 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:44,989 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:44,989 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:44.989583 +2025-07-11 18:57:44,989 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:44,989 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:44,989 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,989 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,990 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-002' 执行成功。 +2025-07-11 18:57:44,990 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-002' 执行完毕,状态: 通过 +2025-07-11 18:57:44,990 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,990 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,990 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,990 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,990 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,990 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,990 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,990 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: HTTPSMandatoryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,990 - testcase.TC-SECURITY-001 - INFO - 测试用例 'TC-SECURITY-001' 已为端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 +2025-07-11 18:57:44,990 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-001' (HTTPS 协议强制性检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,990 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,990 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,990 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,990 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:44,990 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:44,990 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,990 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:44,990 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:44,990 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:44,990 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:44,990 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:44.990573 +2025-07-11 18:57:44,990 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:44,990 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:44,990 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,990 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,990 - testcase.TC-SECURITY-001 - WARNING - 原始URL 'http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 不是HTTPS。跳过此测试用例的URL修改。 +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.983732", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.983732", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.984770", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.984770", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.985762", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.985762", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.986728", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.986728", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.987723", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.987723", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.988633", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.988633", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.989583", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.989583", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.990573", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,991 - testcase.TC-SECURITY-001 - ERROR - 安全漏洞:API允许通过HTTP成功响应 (200)。 +2025-07-11 18:57:44,991 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-SECURITY-001' 执行失败。 +2025-07-11 18:57:44,991 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-001' 执行完毕,状态: 失败 +2025-07-11 18:57:44,991 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-QUERY' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,991 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,991 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,991 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,991 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,991 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,991 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,991 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchQueryParamCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,991 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' initialized for endpoint: POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,991 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Initializing: Looking for a simple type query parameter for type mismatch test. +2025-07-11 18:57:44,991 - testcase.TC-ERROR-4001-QUERY - INFO - _find_first_simple_type_parameter: No suitable simple type field found for query parameters. +2025-07-11 18:57:44,991 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No suitable simple type query parameter found for type mismatch test. +2025-07-11 18:57:44,991 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-QUERY' (查询参数类型不匹配检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,991 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,991 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,991 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,991 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:44,991 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:44,991 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,991 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:44,991 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:44,991 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:44,991 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:44,991 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:44.991641 +2025-07-11 18:57:44,991 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:44,991 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:44,991 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No target field or original type identified for query param type mismatch. Skipping query param modification. +2025-07-11 18:57:44,991 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:44,991 - testcase.TC-ERROR-4001-QUERY - DEBUG - TC-ERROR-4001-QUERY is focused on query parameters, generate_request_body will not modify the body. +2025-07-11 18:57:44,991 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,991 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,991 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,991 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' did not modify the URL via modify_request_url hook. +2025-07-11 18:57:44,991 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,991 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:44,991 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_body, body type: +2025-07-11 18:57:44,992 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Skipped type mismatch (query) validation: No target query parameter was identified. +2025-07-11 18:57:44,992 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: check_performance, elapsed: 0.0006771087646484375 +2025-07-11 18:57:44,992 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4001-QUERY' 执行成功。 +2025-07-11 18:57:44,992 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 执行完毕,状态: 通过 +2025-07-11 18:57:44,992 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-BODY' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,992 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,992 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,992 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,992 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,992 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,992 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,992 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,992 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' initialized for endpoint: POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,992 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Initializing: Looking for a simple type field in request body for type mismatch test. +2025-07-11 18:57:44,992 - testcase.TC-ERROR-4001-BODY - DEBUG - Found request body schema in content type: application/json +2025-07-11 18:57:44,992 - testcase.TC-ERROR-4001-BODY - DEBUG - _find_simple_type_field_in_schema: Searching for simple type field in 'request body' schema... +2025-07-11 18:57:44,992 - testcase.TC-ERROR-4001-BODY - INFO - Found simple type field: Path=version, Type=string +2025-07-11 18:57:44,992 - testcase.TC-ERROR-4001-BODY - INFO - _find_simple_type_field_in_schema: Found simple type field in 'request body': Path=version, Type=string +2025-07-11 18:57:44,992 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Target field for type mismatch (body): version, Original Type: string +2025-07-11 18:57:44,992 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-BODY' (请求体字段类型不匹配检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,992 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,992 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,992 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,992 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:44,992 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:44,992 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,992 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:44,992 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:44,992 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:44,992 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:44,992 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:44.992709 +2025-07-11 18:57:44,992 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:44,992 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:44,992 - testcase.TC-ERROR-4001-BODY - DEBUG - TC-ERROR-4001-BODY is focused on request body, generate_query_params will not modify query parameters. +2025-07-11 18:57:44,992 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:44,992 - testcase.TC-ERROR-4001-BODY - DEBUG - [TC-ERROR-4001-BODY] Preparing to modify request body for type mismatch. Target path: ['version'], Original type: string +2025-07-11 18:57:44,992 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Generated mismatched value '12345' for original type 'string' at path 'version'. +2025-07-11 18:57:44,992 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 在路径 version (键 'version') 处设置值为 '12345' +2025-07-11 18:57:44,992 - testcase.TC-ERROR-4001-BODY - DEBUG - [TC-ERROR-4001-BODY] Successfully set mismatched value at path using util_set_value_at_path. +2025-07-11 18:57:44,992 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,992 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,992 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,992 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' did not modify the URL via modify_request_url hook. +2025-07-11 18:57:44,992 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,992 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:44,992 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_body, body type: +2025-07-11 18:57:44,993 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: check_performance, elapsed: 0.0006499290466308594 +2025-07-11 18:57:44,993 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4001-BODY' 执行失败。 +2025-07-11 18:57:44,993 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 执行完毕,状态: 失败 +2025-07-11 18:57:44,993 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4002' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,993 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,993 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,993 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,993 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,993 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,993 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,993 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: NumberOutOfRangeCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,993 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' initialized for endpoint: POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,993 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Searching for a ranged numeric field... +2025-07-11 18:57:44,993 - testcase.TC-ERROR-4002 - DEBUG - Found request body schema in content type: application/json +2025-07-11 18:57:44,993 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in request body. +2025-07-11 18:57:44,993 - testcase.TC-ERROR-4002 - DEBUG - 在路径 data.0.record_count 找到范围受限字段。 +2025-07-11 18:57:44,993 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Found ranged numeric field in BODY at path: data.0.record_count +2025-07-11 18:57:44,993 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Target found in 'body' at path 'data.0.record_count'. Type: integer, Min: 0, Max: 10000, Desc: '' +2025-07-11 18:57:44,993 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Setting out-of-range value to 10001 (max is 10000). +2025-07-11 18:57:44,993 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4002' (数值参数越界检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,993 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,993 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,993 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,993 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:44,993 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:44,993 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,993 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:44,993 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:44,993 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:44,993 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:44,993 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:44.993812 +2025-07-11 18:57:44,993 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:44,993 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:44,993 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 在路径 data.0.record_count (键 'record_count') 处设置值为 '10001' +2025-07-11 18:57:44,993 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Successfully injected out-of-range value into parameters. +2025-07-11 18:57:44,993 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,993 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,993 - testcase.TC-ERROR-4002 - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,993 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' did not modify the URL via modify_request_url hook. +2025-07-11 18:57:44,993 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,993 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:44,993 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_body, body type: +2025-07-11 18:57:44,994 - testcase.TC-ERROR-4002 - DEBUG - Hook: check_performance, elapsed: 0.0006861686706542969 +2025-07-11 18:57:44,994 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4002' 执行失败。 +2025-07-11 18:57:44,994 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4002' 执行完毕,状态: 失败 +2025-07-11 18:57:44,994 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4006' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,994 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,994 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,994 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,994 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,994 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,994 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,994 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: InvalidEnumValueCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,994 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] Searching for a field with enum constraints... +2025-07-11 18:57:44,994 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No field with enum constraints found in any location. +2025-07-11 18:57:44,994 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No suitable enum field found for this endpoint. +2025-07-11 18:57:44,994 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4006' (非法枚举值检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,994 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,994 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,994 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,994 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:44,994 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:44,994 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,994 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:44,994 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:44,994 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:44,994 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:44,994 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:44.994895 +2025-07-11 18:57:44,994 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:44,994 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:44,994 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,994 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,995 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4006' 执行成功。 +2025-07-11 18:57:44,995 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4006' 执行完毕,状态: 通过 +2025-07-11 18:57:44,995 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-BODY' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,995 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,995 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,995 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,995 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,995 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,995 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,995 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,995 - ddms_compliance_suite.utils.schema_utils - DEBUG - [Util] 递归查找路径: [], 当前层级必填字段: ['data'], 属性: ['version', 'act', 'data'] +2025-07-11 18:57:44,995 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 策略1: 在路径 root 找到可直接移除的必填字段: 'data' +2025-07-11 18:57:44,995 - testcase.TC-ERROR-4003-BODY - INFO - Found a removable field path in 'request body' schema: 'data' +2025-07-11 18:57:44,995 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-BODY' (缺失必填请求体字段检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,995 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,995 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,995 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,995 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:44,995 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:44,995 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,995 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:44,995 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:44,995 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:44,995 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:44,995 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:44.995899 +2025-07-11 18:57:44,995 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:44,995 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:44,995 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 从路径 'data' 成功移除字段 'data' (原值: '[{'description': 'example_string', 'record_count': 0, 'status': 'active', 'update_date': '2025-07-11T18:57:44.995899', 'wb_dr_pro_daily_report_id': 'example_string'}]')。 +2025-07-11 18:57:44,995 - testcase.TC-ERROR-4003-BODY - INFO - 为进行必填字段缺失测试,已通过工具方法从请求体中移除字段路径 'data'。 +2025-07-11 18:57:44,995 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,995 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,996 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4003-BODY' 执行失败。 +2025-07-11 18:57:44,996 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 执行完毕,状态: 失败 +2025-07-11 18:57:44,996 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-QUERY' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,996 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,996 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,996 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,996 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,996 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,996 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,996 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldQueryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,996 - testcase.TC-ERROR-4003-QUERY - INFO - No required 'query' parameter found in endpoint_spec. +2025-07-11 18:57:44,996 - testcase.TC-ERROR-4003-QUERY - INFO - 测试用例 TC-ERROR-4003-QUERY (缺失必填查询参数检查) 已针对端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。Target param to remove: None +2025-07-11 18:57:44,996 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-QUERY' (缺失必填查询参数检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:44,996 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,996 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,996 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:44,996 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:44,996 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: create_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:44,996 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: create_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:44,996 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:44,996 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:44,996 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: create_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:44,996 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:44,996 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: create_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:44.996881 +2025-07-11 18:57:44,996 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: create_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:44,996 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:44,996 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,996 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:44,997 - testcase.TC-ERROR-4003-QUERY - INFO - 由于未识别到可移除的必填查询参数,跳过此测试用例。 +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4003-QUERY' 执行成功。 +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 执行完毕,状态: 通过 +2025-07-11 18:57:44,997 - root - INFO - strictness_level: TestSeverity.CRITICAL +2025-07-11 18:57:44,997 - root - INFO - strictness_level: TestSeverity.CRITICAL +2025-07-11 18:57:44,997 - root - INFO - relevant_failed_tcs: [] +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 测试完成,最终状态: 通过 +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 (List wb_dr_pro_daily_report) +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0'。 +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 发现了 20 个适用的测试用例 (已排序): ['TC-STATUS-001', 'TC-HEADER-001', 'TC-SECURITY-002', 'TC-LLM-COMPLIANCE-001', 'TC-RESTful-001', 'TC-DMS-PAGINATION-001', 'TC-RESTful-004', 'TC-RESTful-002', 'TC-DMS-CORE-SCHEMA-001', 'TC-CORE-FUNC-001', 'TC-RESTful-003', 'TC-DMS-URL-VERSION-001', 'TC-CORE-FUNC-002', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4002', 'TC-ERROR-4006', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY'] +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,997 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 初始化。 +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,997 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:44,998 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:44,998 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-STATUS-001' 执行成功。 +2025-07-11 18:57:44,998 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过 +2025-07-11 18:57:44,998 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-HEADER-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:44,998 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,998 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,998 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,998 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,998 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,998 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,998 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: RequiredHeadersSchemaCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,998 - RequiredHeadersSchemaCheck - INFO - 测试用例 TC-HEADER-001 (必需请求头Schema验证) 已针对端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 初始化。 +2025-07-11 18:57:44,998 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-HEADER-001' (必需请求头Schema验证) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:44,998 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,998 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,998 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:44,998 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,998 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:44,999 - RequiredHeadersSchemaCheck - INFO - API端点: POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:44,999 - RequiredHeadersSchemaCheck - INFO - 发现的header参数: [] +2025-07-11 18:57:44,999 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Tenant-ID: 找到=False, 必需=False, 名称=None +2025-07-11 18:57:44,999 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Tenant-ID +2025-07-11 18:57:44,999 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Data-Domain: 找到=False, 必需=False, 名称=None +2025-07-11 18:57:44,999 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Data-Domain +2025-07-11 18:57:44,999 - RequiredHeadersSchemaCheck - INFO - 检查请求头 Authorization: 找到=False, 必需=False, 名称=None +2025-07-11 18:57:44,999 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 Authorization +2025-07-11 18:57:44,999 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-HEADER-001' 执行失败。 +2025-07-11 18:57:44,999 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 失败 +2025-07-11 18:57:44,999 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-002' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:44,999 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:44,999 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:44,999 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:44,999 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:44,999 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:44,999 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:44,999 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: EncryptedFieldsCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:44,999 - testcase.TC-SECURITY-002 - INFO - 测试用例 TC-SECURITY-002 (敏感字段加密检查) 已初始化,将检查以下敏感字段是否加密: {'coord', 'position', 'location'} +2025-07-11 18:57:44,999 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-002' (敏感字段加密检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:44,999 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,999 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:44,999 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:44,999 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:44,999 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.990573", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.991641", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.991641", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 204' -d '{"version": 12345, "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.992709", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 204\' -d \'{"version": 12345, "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.992709", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 210' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 10001, "status": "active", "update_date": "2025-07-11T18:57:44.993812", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 210\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 10001, "status": "active", "update_date": "2025-07-11T18:57:44.993812", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.994895", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.994895", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 30' -d '{"version": "1.0.0", "act": 0}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 30\' -d \'{"version": "1.0.0", "act": 0}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.485883", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.485883", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.996881", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.996881", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' DEBUG: curlify generated command (raw): curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 DEBUG: curlify generated command (repr): "curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0" DEBUG: curlify generated command (raw): curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 DEBUG: curlify generated command (repr): "curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0" +2025-07-11 18:57:45,000 - testcase.TC-SECURITY-002 - INFO - response_context.json_content: {'code': 0, 'data': [{'description': 'example_string', 'record_count': 0, 'status': 'active', 'update_date': '2025-07-11T18:57:44.996881', 'wb_dr_pro_daily_report_id': 'example_string'}], 'message': "获取 'wb_dr_pro_daily_report' 列表成功"} +2025-07-11 18:57:45,000 - testcase.TC-SECURITY-002 - INFO - response_data:{'code': 0, 'data': [{'description': 'example_string', 'record_count': 0, 'status': 'active', 'update_date': '2025-07-11T18:57:44.996881', 'wb_dr_pro_daily_report_id': 'example_string'}], 'message': "获取 'wb_dr_pro_daily_report' 列表成功"} +2025-07-11 18:57:45,000 - testcase.TC-SECURITY-002 - INFO - response_data:[{'description': 'example_string', 'record_count': 0, 'status': 'active', 'update_date': '2025-07-11T18:57:44.996881', 'wb_dr_pro_daily_report_id': 'example_string'}] +2025-07-11 18:57:45,000 - testcase.TC-SECURITY-002 - INFO - response_data:{'description': 'example_string', 'record_count': 0, 'status': 'active', 'update_date': '2025-07-11T18:57:44.996881', 'wb_dr_pro_daily_report_id': 'example_string'} +2025-07-11 18:57:45,000 - testcase.TC-SECURITY-002 - INFO - 未在响应中找到需要检查的敏感字段。 +2025-07-11 18:57:45,000 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-SECURITY-002' 执行成功。 +2025-07-11 18:57:45,000 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-002' 执行完毕,状态: 通过 +2025-07-11 18:57:45,000 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-LLM-COMPLIANCE-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,000 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,000 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,000 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,000 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,000 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,000 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,000 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: LLMComplianceCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,000 - testcase.TC-LLM-COMPLIANCE-001 - INFO - 已加载合规性标准: [] +2025-07-11 18:57:45,000 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-LLM-COMPLIANCE-001' (LLM合规性综合检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,000 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,000 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,000 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:45,000 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,000 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:45,001 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-LLM-COMPLIANCE-001' 执行成功。 +2025-07-11 18:57:45,001 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 执行完毕,状态: 通过 +2025-07-11 18:57:45,001 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,001 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,001 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,001 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,001 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,001 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,001 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,001 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: CoreNamingStructureTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,001 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-001' (核心命名与结构规范检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,001 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,001 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,001 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:45,001 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,001 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:45,002 - testcase.TC-RESTful-001 - INFO - responses: {'200': {'description': 'Successful Operation', 'content': {'application/json': {'schema': {'type': 'object', 'properties': {'code': {'type': 'integer'}, 'message': {'type': 'string'}, 'data': {'type': 'array', 'items': {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}}}}}}}} +2025-07-11 18:57:45,002 - testcase.TC-RESTful-001 - INFO - 检查响应定义: status_code=200, 可用响应定义=['200'] +2025-07-11 18:57:45,002 - testcase.TC-RESTful-001 - INFO - 找到精确状态码 200 的响应定义 +2025-07-11 18:57:45,002 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-RESTful-001' 执行失败。 +2025-07-11 18:57:45,002 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-001' 执行完毕,状态: 失败 +2025-07-11 18:57:45,002 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-PAGINATION-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,002 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,002 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,002 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,002 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,002 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,002 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,002 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: PaginationParamsCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,002 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-PAGINATION-001' (分页参数检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,002 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,002 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,002 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:45,002 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,002 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:45,003 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-DMS-PAGINATION-001' 执行失败。 +2025-07-11 18:57:45,003 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 执行完毕,状态: 失败 +2025-07-11 18:57:45,003 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-004' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,003 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,003 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,003 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,003 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,003 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,003 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,003 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourceCollectionPluralCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,003 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-004' (资源集合复数命名检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,003 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,003 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,003 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:45,003 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,003 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:45,004 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-RESTful-004' 执行失败。 +2025-07-11 18:57:45,004 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-004' 执行完毕,状态: 失败 +2025-07-11 18:57:45,004 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-002' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,004 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,004 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,004 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,004 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,004 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,004 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,004 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourcePathNounCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,004 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-002' (资源路径名词检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,004 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,004 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,004 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:45,004 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,004 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:45,005 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-002' 执行成功。 +2025-07-11 18:57:45,005 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-002' 执行完毕,状态: 通过 +2025-07-11 18:57:45,005 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-CORE-SCHEMA-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,005 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,005 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,005 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,005 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,005 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,005 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,005 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaFormatCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,005 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-CORE-SCHEMA-001' (DMS核心存储服务API响应格式检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,005 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,005 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,005 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:45,005 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,005 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:45,005 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行成功。 +2025-07-11 18:57:45,005 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行完毕,状态: 通过 +2025-07-11 18:57:45,005 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,005 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,005 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,005 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,005 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,005 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,005 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,005 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,005 - testcase.TC-CORE-FUNC-001 - INFO - 测试用例 'TC-CORE-FUNC-001' 已为端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 初始化。 +2025-07-11 18:57:45,005 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-001' (返回体JSON Schema验证) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,005 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,005 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,006 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:45,006 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,006 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:45,006 - ddms_compliance_suite.utils.schema_provider - DEBUG - 尝试从API规范中为状态码 200 查找Schema。 +2025-07-11 18:57:45,006 - testcase.TC-CORE-FUNC-001 - INFO - 将根据从API规范中获取的schema验证响应体。 +2025-07-11 18:57:45,006 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-001' 执行成功。 +2025-07-11 18:57:45,006 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-001' 执行完毕,状态: 通过 +2025-07-11 18:57:45,006 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-003' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,006 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,006 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,006 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,006 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,006 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,006 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,006 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TimeFormatCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,006 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-003' (时间字段ISO 8601格式检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,006 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,006 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,006 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:45,007 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,007 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:45,007 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-RESTful-003' 执行失败。 +2025-07-11 18:57:45,007 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-003' 执行完毕,状态: 失败 +2025-07-11 18:57:45,007 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-URL-VERSION-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,007 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,007 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,007 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,007 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,007 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,007 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,007 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: URLVersionCheckCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,007 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-URL-VERSION-001' (DMS API URL版本号检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,007 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,007 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,007 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:45,007 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,007 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:45,008 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-URL-VERSION-001' 执行成功。 +2025-07-11 18:57:45,008 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 执行完毕,状态: 通过 +2025-07-11 18:57:45,008 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-002' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,008 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,008 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,008 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,008 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,008 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,008 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,008 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: FlexibleSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,008 - testcase.TC-CORE-FUNC-002 - INFO - 测试用例 'TC-CORE-FUNC-002' 已为端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 初始化。 +2025-07-11 18:57:45,008 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-002' (灵活的返回体JSON Schema验证) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,008 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,008 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,008 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:45,008 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,008 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 DEBUG: curlify generated command (raw): curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 DEBUG: curlify generated command (repr): "curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0" -2025-07-11 17:53:11,490 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-LLM-COMPLIANCE-001' 执行成功。 -2025-07-11 17:53:11,491 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,491 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,491 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,491 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,491 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,491 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,491 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,491 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,491 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: CoreNamingStructureTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,491 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-001' (核心命名与结构规范检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,491 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,491 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,491 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,491 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,491 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,491 - testcase.TC-RESTful-001 - INFO - responses: {'200': {'description': 'Successful Operation', 'content': {'application/json': {'schema': {'type': 'object', 'properties': {'code': {'type': 'integer'}, 'message': {'type': 'string'}, 'data': {'type': 'array', 'items': {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}}}}}}}} -2025-07-11 17:53:11,491 - testcase.TC-RESTful-001 - INFO - 检查响应定义: status_code=200, 可用响应定义=['200'] -2025-07-11 17:53:11,491 - testcase.TC-RESTful-001 - INFO - 找到精确状态码 200 的响应定义 -2025-07-11 17:53:11,491 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-RESTful-001' 执行失败。 -2025-07-11 17:53:11,491 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-001' 执行完毕,状态: 失败 -2025-07-11 17:53:11,491 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-PAGINATION-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,491 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,491 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,492 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,492 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,492 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,492 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,492 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: PaginationParamsCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,492 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-PAGINATION-001' (分页参数检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,492 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,492 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,492 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,492 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,492 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,493 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-DMS-PAGINATION-001' 执行失败。 -2025-07-11 17:53:11,493 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 执行完毕,状态: 失败 -2025-07-11 17:53:11,493 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-004' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,493 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,493 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,493 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,493 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,493 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,493 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,493 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourceCollectionPluralCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,493 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-004' (资源集合复数命名检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,493 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,493 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,493 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,493 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,493 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,494 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-RESTful-004' 执行失败。 -2025-07-11 17:53:11,494 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-004' 执行完毕,状态: 失败 -2025-07-11 17:53:11,494 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-002' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,494 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,494 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,494 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,494 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,494 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,494 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,494 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourcePathNounCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,494 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-002' (资源路径名词检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,494 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,494 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,494 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,494 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,494 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,494 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-002' 执行成功。 -2025-07-11 17:53:11,494 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-002' 执行完毕,状态: 通过 -2025-07-11 17:53:11,494 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-CORE-SCHEMA-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,494 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,494 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,494 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,494 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,494 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,495 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,495 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaFormatCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,495 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-CORE-SCHEMA-001' (DMS核心存储服务API响应格式检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,495 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,495 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,495 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,495 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,495 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,495 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行成功。 -2025-07-11 17:53:11,495 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,495 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,495 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,495 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,495 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,495 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,495 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,495 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,495 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,495 - testcase.TC-CORE-FUNC-001 - INFO - 测试用例 'TC-CORE-FUNC-001' 已为端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 初始化。 -2025-07-11 17:53:11,495 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-001' (返回体JSON Schema验证) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,495 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,495 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,495 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,495 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,495 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,496 - ddms_compliance_suite.utils.schema_provider - DEBUG - 尝试从API规范中为状态码 200 查找Schema。 -2025-07-11 17:53:11,496 - testcase.TC-CORE-FUNC-001 - INFO - 将根据从API规范中获取的schema验证响应体。 -2025-07-11 17:53:11,496 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-001' 执行成功。 -2025-07-11 17:53:11,496 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,496 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-003' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,496 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,496 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,496 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,496 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,496 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,496 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,496 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TimeFormatCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,496 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-003' (时间字段ISO 8601格式检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,496 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,496 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,496 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,496 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,496 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,497 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-RESTful-003' 执行失败。 -2025-07-11 17:53:11,497 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-003' 执行完毕,状态: 失败 -2025-07-11 17:53:11,497 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-URL-VERSION-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,497 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,497 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,497 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,497 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,497 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,497 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,497 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: URLVersionCheckCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,497 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-URL-VERSION-001' (DMS API URL版本号检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,497 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,497 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,497 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,497 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,497 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,498 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-URL-VERSION-001' 执行成功。 -2025-07-11 17:53:11,498 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,498 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-002' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,498 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,498 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,498 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,498 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,498 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,498 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,498 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: FlexibleSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,498 - testcase.TC-CORE-FUNC-002 - INFO - 测试用例 'TC-CORE-FUNC-002' 已为端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 初始化。 -2025-07-11 17:53:11,498 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-002' (灵活的返回体JSON Schema验证) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,498 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,498 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,498 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,498 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,498 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,499 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-002' 执行成功。 -2025-07-11 17:53:11,499 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-002' 执行完毕,状态: 通过 -2025-07-11 17:53:11,499 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,499 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,499 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,499 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,499 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,499 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,499 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,499 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: HTTPSMandatoryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,499 - testcase.TC-SECURITY-001 - INFO - 测试用例 'TC-SECURITY-001' 已为端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 初始化。 -2025-07-11 17:53:11,499 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-001' (HTTPS 协议强制性检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,499 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,499 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,499 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,499 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,499 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,499 - testcase.TC-SECURITY-001 - WARNING - 原始URL 'http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 不是HTTPS。跳过此测试用例的URL修改。 DEBUG: curlify generated command (raw): curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 DEBUG: curlify generated command (repr): "curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0" DEBUG: curlify generated command (raw): curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 @@ -3758,375 +3759,393 @@ DEBUG: curlify generated command (repr): "curl -X POST -H 'User-Agent: python-re DEBUG: curlify generated command (raw): curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 DEBUG: curlify generated command (repr): "curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0" DEBUG: curlify generated command (raw): curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:45,009 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-002' 执行成功。 +2025-07-11 18:57:45,009 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-002' 执行完毕,状态: 通过 +2025-07-11 18:57:45,009 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-001' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,009 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,009 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,009 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,009 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,009 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,009 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,009 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: HTTPSMandatoryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,009 - testcase.TC-SECURITY-001 - INFO - 测试用例 'TC-SECURITY-001' 已为端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 初始化。 +2025-07-11 18:57:45,009 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-001' (HTTPS 协议强制性检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,009 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,009 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,009 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:45,009 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,009 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:45,009 - testcase.TC-SECURITY-001 - WARNING - 原始URL 'http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 不是HTTPS。跳过此测试用例的URL修改。 +2025-07-11 18:57:45,010 - testcase.TC-SECURITY-001 - ERROR - 安全漏洞:API允许通过HTTP成功响应 (200)。 +2025-07-11 18:57:45,010 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-SECURITY-001' 执行失败。 +2025-07-11 18:57:45,010 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-001' 执行完毕,状态: 失败 +2025-07-11 18:57:45,010 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-QUERY' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,010 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,010 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,010 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,010 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,010 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,010 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,010 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchQueryParamCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,010 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' initialized for endpoint: POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:45,010 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Initializing: Looking for a simple type query parameter for type mismatch test. +2025-07-11 18:57:45,010 - testcase.TC-ERROR-4001-QUERY - INFO - _find_first_simple_type_parameter: No suitable simple type field found for query parameters. +2025-07-11 18:57:45,010 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No suitable simple type query parameter found for type mismatch test. +2025-07-11 18:57:45,010 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-QUERY' (查询参数类型不匹配检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,010 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,010 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,010 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:45,010 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No target field or original type identified for query param type mismatch. Skipping query param modification. +2025-07-11 18:57:45,010 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:45,010 - testcase.TC-ERROR-4001-QUERY - DEBUG - TC-ERROR-4001-QUERY is focused on query parameters, generate_request_body will not modify the body. +2025-07-11 18:57:45,010 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,010 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:45,010 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:45,010 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' did not modify the URL via modify_request_url hook. +2025-07-11 18:57:45,010 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:45,010 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:45,010 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_body, body type: +2025-07-11 18:57:45,011 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Skipped type mismatch (query) validation: No target query parameter was identified. +2025-07-11 18:57:45,011 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: check_performance, elapsed: 0.0007340908050537109 +2025-07-11 18:57:45,011 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4001-QUERY' 执行成功。 +2025-07-11 18:57:45,011 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 执行完毕,状态: 通过 +2025-07-11 18:57:45,011 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-BODY' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,011 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,011 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,011 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,011 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,011 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,011 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,011 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,011 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' initialized for endpoint: POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:45,011 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Initializing: Looking for a simple type field in request body for type mismatch test. +2025-07-11 18:57:45,011 - testcase.TC-ERROR-4001-BODY - DEBUG - No suitable request body schema found +2025-07-11 18:57:45,011 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] No request body schema found for endpoint. Skipping type mismatch target search. +2025-07-11 18:57:45,011 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Conclusion: No target field identified for request body type mismatch test. +2025-07-11 18:57:45,011 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-BODY' (请求体字段类型不匹配检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,011 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,011 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,011 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:45,011 - testcase.TC-ERROR-4001-BODY - DEBUG - TC-ERROR-4001-BODY is focused on request body, generate_query_params will not modify query parameters. +2025-07-11 18:57:45,011 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:45,011 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] No target field or original type identified for body type mismatch. Skipping body modification. +2025-07-11 18:57:45,011 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,011 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:45,011 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:45,011 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' did not modify the URL via modify_request_url hook. +2025-07-11 18:57:45,011 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:45,011 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:45,011 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_body, body type: +2025-07-11 18:57:45,012 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Skipped type mismatch (body) validation: No target field was identified. +2025-07-11 18:57:45,012 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: check_performance, elapsed: 0.0006318092346191406 +2025-07-11 18:57:45,012 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4001-BODY' 执行成功。 +2025-07-11 18:57:45,012 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 执行完毕,状态: 通过 +2025-07-11 18:57:45,012 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4002' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,012 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,012 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,012 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,012 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,012 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,012 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,012 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: NumberOutOfRangeCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,012 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' initialized for endpoint: POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:45,012 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Searching for a ranged numeric field... +2025-07-11 18:57:45,012 - testcase.TC-ERROR-4002 - DEBUG - No suitable request body schema found +2025-07-11 18:57:45,012 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in query parameters. +2025-07-11 18:57:45,012 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in path parameters. +2025-07-11 18:57:45,012 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in header parameters. +2025-07-11 18:57:45,012 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] No ranged numeric field found in any location. +2025-07-11 18:57:45,012 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] No suitable ranged numeric field found for this endpoint. +2025-07-11 18:57:45,012 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4002' (数值参数越界检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,012 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,012 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,012 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:45,012 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,012 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:45,012 - testcase.TC-ERROR-4002 - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:45,012 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' did not modify the URL via modify_request_url hook. +2025-07-11 18:57:45,012 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:45,012 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:45,012 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_body, body type: +2025-07-11 18:57:45,013 - testcase.TC-ERROR-4002 - DEBUG - Hook: check_performance, elapsed: 0.0006000995635986328 +2025-07-11 18:57:45,013 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4002' 执行成功。 +2025-07-11 18:57:45,013 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4002' 执行完毕,状态: 通过 +2025-07-11 18:57:45,013 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4006' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,013 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,013 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,013 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,013 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,013 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,013 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,013 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: InvalidEnumValueCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,013 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] Searching for a field with enum constraints... +2025-07-11 18:57:45,013 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No field with enum constraints found in any location. +2025-07-11 18:57:45,013 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No suitable enum field found for this endpoint. +2025-07-11 18:57:45,013 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4006' (非法枚举值检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,013 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,013 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,013 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:45,013 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,013 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:45,013 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4006' 执行成功。 +2025-07-11 18:57:45,013 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4006' 执行完毕,状态: 通过 +2025-07-11 18:57:45,013 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-BODY' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,013 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,013 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,013 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,013 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,013 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,014 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,014 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,014 - testcase.TC-ERROR-4003-BODY - INFO - 此端点规范中未定义或找到请求体 schema(通过基类方法)。 +2025-07-11 18:57:45,014 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-BODY' (缺失必填请求体字段检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,014 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,014 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,014 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:45,014 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,014 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:45,014 - testcase.TC-ERROR-4003-BODY - INFO - 由于未识别到可移除的必填请求体字段,跳过此测试用例的验证。 +2025-07-11 18:57:45,014 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4003-BODY' 执行成功。 +2025-07-11 18:57:45,014 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 执行完毕,状态: 通过 +2025-07-11 18:57:45,014 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-QUERY' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,014 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,014 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,014 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,014 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,014 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,014 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,014 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldQueryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,014 - testcase.TC-ERROR-4003-QUERY - INFO - No required 'query' parameter found in endpoint_spec. +2025-07-11 18:57:45,014 - testcase.TC-ERROR-4003-QUERY - INFO - 测试用例 TC-ERROR-4003-QUERY (缺失必填查询参数检查) 已针对端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 初始化。Target param to remove: None +2025-07-11 18:57:45,014 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-QUERY' (缺失必填查询参数检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' +2025-07-11 18:57:45,014 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,014 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,014 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:45,014 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,014 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +2025-07-11 18:57:45,015 - testcase.TC-ERROR-4003-QUERY - INFO - 由于未识别到可移除的必填查询参数,跳过此测试用例。 +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4003-QUERY' 执行成功。 +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 执行完毕,状态: 通过 +2025-07-11 18:57:45,015 - root - INFO - strictness_level: TestSeverity.CRITICAL +2025-07-11 18:57:45,015 - root - INFO - strictness_level: TestSeverity.CRITICAL +2025-07-11 18:57:45,015 - root - INFO - relevant_failed_tcs: [] +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 测试完成,最终状态: 通过 +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id} (Read wb_dr_pro_daily_report) +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}' 发现了 20 个适用的测试用例 (已排序): ['TC-STATUS-001', 'TC-HEADER-001', 'TC-SECURITY-002', 'TC-LLM-COMPLIANCE-001', 'TC-RESTful-001', 'TC-DMS-PAGINATION-001', 'TC-RESTful-004', 'TC-RESTful-002', 'TC-DMS-CORE-SCHEMA-001', 'TC-CORE-FUNC-001', 'TC-RESTful-003', 'TC-DMS-URL-VERSION-001', 'TC-CORE-FUNC-002', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4002', 'TC-ERROR-4006', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY'] +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}' +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 parameters[0] ('id') 的 schema... +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,015 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}' 初始化。 +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}' +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial path param for 'read_wb_dr_pro_daily_report': {'id': 'param_id'} +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'read_wb_dr_pro_daily_report': None +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'read_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'read_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {'id': 'param_id'} +2025-07-11 18:57:45,015 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/param_id +2025-07-11 18:57:45,016 - testcase.TC-STATUS-001 - WARNING - 状态码验证失败: 期望 200, 实际 404 for http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/param_id +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - ERROR - 关键的前置测试用例 'TC-STATUS-001' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}' 失败。后续测试将被跳过。原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-STATUS-001' 执行失败。 +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 失败 +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-HEADER-001' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-HEADER-001' 被跳过。 +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 跳过 +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-SECURITY-002' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-SECURITY-002' 被跳过。 +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-002' 执行完毕,状态: 跳过 +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-LLM-COMPLIANCE-001' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-LLM-COMPLIANCE-001' 被跳过。 +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 执行完毕,状态: 跳过 +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-RESTful-001' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-RESTful-001' 被跳过。 +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-001' 执行完毕,状态: 跳过 +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-DMS-PAGINATION-001' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-DMS-PAGINATION-001' 被跳过。 +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 执行完毕,状态: 跳过 +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-RESTful-004' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-RESTful-004' 被跳过。 +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-004' 执行完毕,状态: 跳过 +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-RESTful-002' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-RESTful-002' 被跳过。 +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-002' 执行完毕,状态: 跳过 +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-DMS-CORE-SCHEMA-001' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-DMS-CORE-SCHEMA-001' 被跳过。 +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行完毕,状态: 跳过 +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-CORE-FUNC-001' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-CORE-FUNC-001' 被跳过。 +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-001' 执行完毕,状态: 跳过 +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-RESTful-003' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-RESTful-003' 被跳过。 +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-003' 执行完毕,状态: 跳过 +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-DMS-URL-VERSION-001' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-DMS-URL-VERSION-001' 被跳过。 +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 执行完毕,状态: 跳过 +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-CORE-FUNC-002' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-CORE-FUNC-002' 被跳过。 +2025-07-11 18:57:45,016 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-002' 执行完毕,状态: 跳过 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-SECURITY-001' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-SECURITY-001' 被跳过。 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-001' 执行完毕,状态: 跳过 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-ERROR-4001-QUERY' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-ERROR-4001-QUERY' 被跳过。 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 执行完毕,状态: 跳过 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-ERROR-4001-BODY' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-ERROR-4001-BODY' 被跳过。 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 执行完毕,状态: 跳过 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-ERROR-4002' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-ERROR-4002' 被跳过。 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4002' 执行完毕,状态: 跳过 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-ERROR-4006' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-ERROR-4006' 被跳过。 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4006' 执行完毕,状态: 跳过 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-ERROR-4003-BODY' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-ERROR-4003-BODY' 被跳过。 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 执行完毕,状态: 跳过 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-ERROR-4003-QUERY' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-ERROR-4003-QUERY' 被跳过。 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 执行完毕,状态: 跳过 +2025-07-11 18:57:45,017 - root - INFO - strictness_level: TestSeverity.CRITICAL +2025-07-11 18:57:45,017 - root - INFO - strictness_level: TestSeverity.CRITICAL +2025-07-11 18:57:45,017 - root - INFO - relevant_failed_tcs: [] +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}' 测试完成,最终状态: 失败 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report (Update wb_dr_pro_daily_report) +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 发现了 20 个适用的测试用例 (已排序): ['TC-STATUS-001', 'TC-HEADER-001', 'TC-SECURITY-002', 'TC-LLM-COMPLIANCE-001', 'TC-RESTful-001', 'TC-DMS-PAGINATION-001', 'TC-RESTful-004', 'TC-RESTful-002', 'TC-DMS-CORE-SCHEMA-001', 'TC-CORE-FUNC-001', 'TC-RESTful-003', 'TC-DMS-URL-VERSION-001', 'TC-CORE-FUNC-002', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4002', 'TC-ERROR-4006', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY'] +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,017 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:45.017555 +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,017 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,018 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,018 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-STATUS-001' 执行成功。 +2025-07-11 18:57:45,018 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过 +2025-07-11 18:57:45,018 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-HEADER-001' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,018 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,018 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,018 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,018 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,018 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,018 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,018 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: RequiredHeadersSchemaCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,018 - RequiredHeadersSchemaCheck - INFO - 测试用例 TC-HEADER-001 (必需请求头Schema验证) 已针对端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 +2025-07-11 18:57:45,018 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-HEADER-001' (必需请求头Schema验证) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,018 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,018 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,018 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:45,018 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,018 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:45,018 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:45,018 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:45,018 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,018 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:45,018 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:45,018 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:45.018628 +2025-07-11 18:57:45,018 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:45,018 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,018 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,018 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,019 - RequiredHeadersSchemaCheck - INFO - API端点: PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,019 - RequiredHeadersSchemaCheck - INFO - 发现的header参数: [] +2025-07-11 18:57:45,019 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Tenant-ID: 找到=False, 必需=False, 名称=None +2025-07-11 18:57:45,019 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Tenant-ID +2025-07-11 18:57:45,019 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Data-Domain: 找到=False, 必需=False, 名称=None +2025-07-11 18:57:45,019 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Data-Domain +2025-07-11 18:57:45,019 - RequiredHeadersSchemaCheck - INFO - 检查请求头 Authorization: 找到=False, 必需=False, 名称=None +2025-07-11 18:57:45,019 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 Authorization +2025-07-11 18:57:45,019 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-HEADER-001' 执行失败。 +2025-07-11 18:57:45,019 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 失败 +2025-07-11 18:57:45,019 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-002' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,019 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,019 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,019 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,019 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,019 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,019 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,019 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: EncryptedFieldsCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,019 - testcase.TC-SECURITY-002 - INFO - 测试用例 TC-SECURITY-002 (敏感字段加密检查) 已初始化,将检查以下敏感字段是否加密: {'coord', 'position', 'location'} +2025-07-11 18:57:45,019 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-002' (敏感字段加密检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,019 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,019 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,019 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:45,019 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,019 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:45,019 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:45,019 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:45,019 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,019 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:45,019 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:45,019 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:45.019752 +2025-07-11 18:57:45,019 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:45,019 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,019 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,019 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report DEBUG: curlify generated command (repr): "curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0" DEBUG: curlify generated command (raw): curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,500 - testcase.TC-SECURITY-001 - ERROR - 安全漏洞:API允许通过HTTP成功响应 (200)。 -2025-07-11 17:53:11,500 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-SECURITY-001' 执行失败。 -2025-07-11 17:53:11,500 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-001' 执行完毕,状态: 失败 -2025-07-11 17:53:11,500 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-QUERY' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,500 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,500 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,500 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,500 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,500 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,500 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,500 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchQueryParamCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,500 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' initialized for endpoint: POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,500 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Initializing: Looking for a simple type query parameter for type mismatch test. -2025-07-11 17:53:11,500 - testcase.TC-ERROR-4001-QUERY - INFO - _find_first_simple_type_parameter: No suitable simple type field found for query parameters. -2025-07-11 17:53:11,500 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No suitable simple type query parameter found for type mismatch test. -2025-07-11 17:53:11,500 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-QUERY' (查询参数类型不匹配检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,500 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,500 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,500 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,500 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No target field or original type identified for query param type mismatch. Skipping query param modification. -2025-07-11 17:53:11,500 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,500 - testcase.TC-ERROR-4001-QUERY - DEBUG - TC-ERROR-4001-QUERY is focused on query parameters, generate_request_body will not modify the body. -2025-07-11 17:53:11,500 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,500 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,500 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,500 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' did not modify the URL via modify_request_url hook. -2025-07-11 17:53:11,500 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,500 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,500 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_body, body type: -2025-07-11 17:53:11,501 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Skipped type mismatch (query) validation: No target query parameter was identified. -2025-07-11 17:53:11,501 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: check_performance, elapsed: 0.0006802082061767578 -2025-07-11 17:53:11,501 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4001-QUERY' 执行成功。 -2025-07-11 17:53:11,501 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 执行完毕,状态: 通过 -2025-07-11 17:53:11,501 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-BODY' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,501 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,501 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,501 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,501 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,501 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,501 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,501 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,501 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' initialized for endpoint: POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,501 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Initializing: Looking for a simple type field in request body for type mismatch test. -2025-07-11 17:53:11,501 - testcase.TC-ERROR-4001-BODY - DEBUG - No suitable request body schema found -2025-07-11 17:53:11,501 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] No request body schema found for endpoint. Skipping type mismatch target search. -2025-07-11 17:53:11,501 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Conclusion: No target field identified for request body type mismatch test. -2025-07-11 17:53:11,501 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-BODY' (请求体字段类型不匹配检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,501 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,501 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,501 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,501 - testcase.TC-ERROR-4001-BODY - DEBUG - TC-ERROR-4001-BODY is focused on request body, generate_query_params will not modify query parameters. -2025-07-11 17:53:11,501 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,501 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] No target field or original type identified for body type mismatch. Skipping body modification. -2025-07-11 17:53:11,501 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,501 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,501 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,501 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' did not modify the URL via modify_request_url hook. -2025-07-11 17:53:11,501 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,501 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,501 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_body, body type: -2025-07-11 17:53:11,502 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Skipped type mismatch (body) validation: No target field was identified. -2025-07-11 17:53:11,502 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: check_performance, elapsed: 0.0006651878356933594 -2025-07-11 17:53:11,502 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4001-BODY' 执行成功。 -2025-07-11 17:53:11,502 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 执行完毕,状态: 通过 -2025-07-11 17:53:11,502 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4002' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,502 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,502 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,502 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,502 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,502 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,502 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,502 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: NumberOutOfRangeCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,502 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' initialized for endpoint: POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,502 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Searching for a ranged numeric field... -2025-07-11 17:53:11,502 - testcase.TC-ERROR-4002 - DEBUG - No suitable request body schema found -2025-07-11 17:53:11,502 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in query parameters. -2025-07-11 17:53:11,502 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in path parameters. -2025-07-11 17:53:11,502 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in header parameters. -2025-07-11 17:53:11,502 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] No ranged numeric field found in any location. -2025-07-11 17:53:11,502 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] No suitable ranged numeric field found for this endpoint. -2025-07-11 17:53:11,502 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4002' (数值参数越界检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,502 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,502 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,502 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,502 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,502 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,502 - testcase.TC-ERROR-4002 - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,502 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' did not modify the URL via modify_request_url hook. -2025-07-11 17:53:11,502 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,502 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,502 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_body, body type: -2025-07-11 17:53:11,503 - testcase.TC-ERROR-4002 - DEBUG - Hook: check_performance, elapsed: 0.0006749629974365234 -2025-07-11 17:53:11,503 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4002' 执行成功。 -2025-07-11 17:53:11,503 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4002' 执行完毕,状态: 通过 -2025-07-11 17:53:11,503 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4006' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,503 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,503 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,503 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,503 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,503 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,503 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,503 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: InvalidEnumValueCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,503 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] Searching for a field with enum constraints... -2025-07-11 17:53:11,503 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No field with enum constraints found in any location. -2025-07-11 17:53:11,503 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No suitable enum field found for this endpoint. -2025-07-11 17:53:11,503 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4006' (非法枚举值检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,503 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,503 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,503 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,503 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,503 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,505 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4006' 执行成功。 -2025-07-11 17:53:11,505 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4006' 执行完毕,状态: 通过 -2025-07-11 17:53:11,505 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-BODY' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,505 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,505 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,505 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,505 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,505 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,505 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,505 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,505 - testcase.TC-ERROR-4003-BODY - INFO - 此端点规范中未定义或找到请求体 schema(通过基类方法)。 -2025-07-11 17:53:11,505 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-BODY' (缺失必填请求体字段检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,505 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,505 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,505 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,505 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,505 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,506 - testcase.TC-ERROR-4003-BODY - INFO - 由于未识别到可移除的必填请求体字段,跳过此测试用例的验证。 -2025-07-11 17:53:11,506 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4003-BODY' 执行成功。 -2025-07-11 17:53:11,506 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 执行完毕,状态: 通过 -2025-07-11 17:53:11,506 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-QUERY' for 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,506 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,506 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,506 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,506 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,506 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,506 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,506 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldQueryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,506 - testcase.TC-ERROR-4003-QUERY - INFO - No required 'query' parameter found in endpoint_spec. -2025-07-11 17:53:11,506 - testcase.TC-ERROR-4003-QUERY - INFO - 测试用例 TC-ERROR-4003-QUERY (缺失必填查询参数检查) 已针对端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 初始化。Target param to remove: None -2025-07-11 17:53:11,506 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-QUERY' (缺失必填查询参数检查) for endpoint 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' -2025-07-11 17:53:11,506 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,506 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'list_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,506 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'list_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,506 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,506 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 -2025-07-11 17:53:11,507 - testcase.TC-ERROR-4003-QUERY - INFO - 由于未识别到可移除的必填查询参数,跳过此测试用例。 -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4003-QUERY' 执行成功。 -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 执行完毕,状态: 通过 -2025-07-11 17:53:11,507 - root - INFO - strictness_level: TestSeverity.CRITICAL -2025-07-11 17:53:11,507 - root - INFO - strictness_level: TestSeverity.CRITICAL -2025-07-11 17:53:11,507 - root - INFO - relevant_failed_tcs: [] -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 测试完成,最终状态: 通过 -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id} (Read wb_dr_pro_daily_report) -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'。 -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}' 发现了 20 个适用的测试用例 (已排序): ['TC-STATUS-001', 'TC-HEADER-001', 'TC-SECURITY-002', 'TC-LLM-COMPLIANCE-001', 'TC-RESTful-001', 'TC-DMS-PAGINATION-001', 'TC-RESTful-004', 'TC-RESTful-002', 'TC-DMS-CORE-SCHEMA-001', 'TC-CORE-FUNC-001', 'TC-RESTful-003', 'TC-DMS-URL-VERSION-001', 'TC-CORE-FUNC-002', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4002', 'TC-ERROR-4006', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY'] -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}' -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 parameters[0] ('id') 的 schema... -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,507 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,508 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,508 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}' 初始化。 -2025-07-11 17:53:11,508 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}' -2025-07-11 17:53:11,508 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial path param for 'read_wb_dr_pro_daily_report': {'id': 'param_id'} -2025-07-11 17:53:11,508 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'read_wb_dr_pro_daily_report': None -2025-07-11 17:53:11,508 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'read_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,508 - ddms_compliance_suite.test_orchestrator - DEBUG - No request body schema found or applicable for 'read_wb_dr_pro_daily_report' with Content-Type 'application/json'. Initial body is None. -2025-07-11 17:53:11,508 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {'id': 'param_id'} -2025-07-11 17:53:11,508 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/param_id -2025-07-11 17:53:11,509 - testcase.TC-STATUS-001 - WARNING - 状态码验证失败: 期望 200, 实际 404 for http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/param_id -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - ERROR - 关键的前置测试用例 'TC-STATUS-001' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}' 失败。后续测试将被跳过。原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-STATUS-001' 执行失败。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 失败 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-HEADER-001' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-HEADER-001' 被跳过。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-SECURITY-002' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-SECURITY-002' 被跳过。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-002' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-LLM-COMPLIANCE-001' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-LLM-COMPLIANCE-001' 被跳过。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-RESTful-001' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-RESTful-001' 被跳过。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-001' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-DMS-PAGINATION-001' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-DMS-PAGINATION-001' 被跳过。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-RESTful-004' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-RESTful-004' 被跳过。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-004' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-RESTful-002' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-RESTful-002' 被跳过。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-002' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-DMS-CORE-SCHEMA-001' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-DMS-CORE-SCHEMA-001' 被跳过。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-CORE-FUNC-001' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-CORE-FUNC-001' 被跳过。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-001' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-RESTful-003' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-RESTful-003' 被跳过。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-003' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-DMS-URL-VERSION-001' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-DMS-URL-VERSION-001' 被跳过。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-CORE-FUNC-002' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-CORE-FUNC-002' 被跳过。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-002' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-SECURITY-001' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-SECURITY-001' 被跳过。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-001' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-ERROR-4001-QUERY' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-ERROR-4001-QUERY' 被跳过。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-ERROR-4001-BODY' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-ERROR-4001-BODY' 被跳过。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-ERROR-4002' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-ERROR-4002' 被跳过。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4002' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-ERROR-4006' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-ERROR-4006' 被跳过。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4006' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-ERROR-4003-BODY' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-ERROR-4003-BODY' 被跳过。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - WARNING - 由于关键的前置测试用例失败,跳过测试用例 'TC-ERROR-4003-QUERY' for 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}'. 原因: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG -  ⏭️ 测试用例 'TC-ERROR-4003-QUERY' 被跳过。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 执行完毕,状态: 跳过 -2025-07-11 17:53:11,509 - root - INFO - strictness_level: TestSeverity.CRITICAL -2025-07-11 17:53:11,509 - root - INFO - strictness_level: TestSeverity.CRITICAL -2025-07-11 17:53:11,509 - root - INFO - relevant_failed_tcs: [] -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}' 测试完成,最终状态: 失败 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report (Update wb_dr_pro_daily_report) -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 发现了 20 个适用的测试用例 (已排序): ['TC-STATUS-001', 'TC-HEADER-001', 'TC-SECURITY-002', 'TC-LLM-COMPLIANCE-001', 'TC-RESTful-001', 'TC-DMS-PAGINATION-001', 'TC-RESTful-004', 'TC-RESTful-002', 'TC-DMS-CORE-SCHEMA-001', 'TC-CORE-FUNC-001', 'TC-RESTful-003', 'TC-DMS-URL-VERSION-001', 'TC-CORE-FUNC-002', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4002', 'TC-ERROR-4006', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY'] -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,509 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,509 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,510 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,510 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,510 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,510 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,510 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.510034 -2025-07-11 17:53:11,510 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,510 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,510 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,510 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,511 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,511 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-STATUS-001' 执行成功。 -2025-07-11 17:53:11,511 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,511 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-HEADER-001' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,511 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,511 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,511 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,511 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,511 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,511 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,511 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: RequiredHeadersSchemaCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,511 - RequiredHeadersSchemaCheck - INFO - 测试用例 TC-HEADER-001 (必需请求头Schema验证) 已针对端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 -2025-07-11 17:53:11,511 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-HEADER-001' (必需请求头Schema验证) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,511 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,511 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,511 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,511 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,511 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,511 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,511 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,511 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,511 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,511 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,511 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.511494 -2025-07-11 17:53:11,511 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,511 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,511 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,511 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,512 - RequiredHeadersSchemaCheck - INFO - API端点: PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,512 - RequiredHeadersSchemaCheck - INFO - 发现的header参数: [] -2025-07-11 17:53:11,512 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Tenant-ID: 找到=False, 必需=False, 名称=None -2025-07-11 17:53:11,512 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Tenant-ID -2025-07-11 17:53:11,512 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Data-Domain: 找到=False, 必需=False, 名称=None -2025-07-11 17:53:11,512 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Data-Domain -2025-07-11 17:53:11,512 - RequiredHeadersSchemaCheck - INFO - 检查请求头 Authorization: 找到=False, 必需=False, 名称=None -2025-07-11 17:53:11,512 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 Authorization -2025-07-11 17:53:11,512 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-HEADER-001' 执行失败。 -2025-07-11 17:53:11,512 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 失败 -2025-07-11 17:53:11,512 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-002' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,512 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,512 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,512 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,512 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,512 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,512 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,512 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: EncryptedFieldsCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,512 - testcase.TC-SECURITY-002 - INFO - 测试用例 TC-SECURITY-002 (敏感字段加密检查) 已初始化,将检查以下敏感字段是否加密: {'location', 'position', 'coord'} -2025-07-11 17:53:11,512 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-002' (敏感字段加密检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,512 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,512 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,512 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,512 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,512 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,513 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,513 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,513 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,513 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,513 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,513 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.513055 -2025-07-11 17:53:11,513 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,513 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,513 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,513 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report DEBUG: curlify generated command (repr): "curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0" DEBUG: curlify generated command (raw): curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 DEBUG: curlify generated command (repr): "curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0" @@ -4142,735 +4161,713 @@ DEBUG: curlify generated command (raw): curl -X POST -H 'User-Agent: python-requ DEBUG: curlify generated command (repr): "curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0" DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/param_id DEBUG: curlify generated command (repr): "curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/param_id" -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.510034", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.510034", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.511494", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.511494", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.513055", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,514 - testcase.TC-SECURITY-002 - INFO - response_context.json_content: {'code': 0, 'data': True, 'message': '创建成功'} -2025-07-11 17:53:11,514 - testcase.TC-SECURITY-002 - INFO - response_data:{'code': 0, 'data': True, 'message': '创建成功'} -2025-07-11 17:53:11,514 - testcase.TC-SECURITY-002 - INFO - 未在响应中找到需要检查的敏感字段。 -2025-07-11 17:53:11,514 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-SECURITY-002' 执行成功。 -2025-07-11 17:53:11,514 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-002' 执行完毕,状态: 通过 -2025-07-11 17:53:11,514 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-LLM-COMPLIANCE-001' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,514 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,514 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,514 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,514 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,514 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,514 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,514 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: LLMComplianceCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,514 - testcase.TC-LLM-COMPLIANCE-001 - INFO - 已加载合规性标准: [] -2025-07-11 17:53:11,514 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-LLM-COMPLIANCE-001' (LLM合规性综合检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,514 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,514 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,514 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,514 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,514 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,514 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,514 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,514 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,514 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,514 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,514 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.514395 -2025-07-11 17:53:11,514 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,514 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,514 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,514 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,515 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-LLM-COMPLIANCE-001' 执行成功。 -2025-07-11 17:53:11,515 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,515 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-001' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,515 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,515 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,515 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,515 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,515 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,515 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,515 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: CoreNamingStructureTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,515 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-001' (核心命名与结构规范检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,515 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,515 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,515 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,515 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,515 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,515 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,515 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,515 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,515 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,515 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,515 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.515490 -2025-07-11 17:53:11,515 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,515 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,515 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,515 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,516 - testcase.TC-RESTful-001 - INFO - responses: {'200': {'description': 'Success', 'content': {'application/json': {'schema': {'type': 'object', 'properties': {'code': {'type': 'integer'}, 'message': {'type': 'string'}, 'data': {'type': 'boolean'}}}}}}} -2025-07-11 17:53:11,516 - testcase.TC-RESTful-001 - INFO - 检查响应定义: status_code=200, 可用响应定义=['200'] -2025-07-11 17:53:11,516 - testcase.TC-RESTful-001 - INFO - 找到精确状态码 200 的响应定义 -2025-07-11 17:53:11,516 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-001' 执行成功。 -2025-07-11 17:53:11,516 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,516 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-PAGINATION-001' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,516 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,516 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,516 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,516 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,516 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,516 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,516 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: PaginationParamsCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,516 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-PAGINATION-001' (分页参数检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,516 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,516 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,516 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,516 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,516 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,516 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,516 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,516 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,516 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,516 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,516 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.516632 -2025-07-11 17:53:11,516 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,516 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,516 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,516 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,517 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-DMS-PAGINATION-001' 执行失败。 -2025-07-11 17:53:11,517 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 执行完毕,状态: 失败 -2025-07-11 17:53:11,517 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-004' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,517 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,517 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,517 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,517 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,517 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,517 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,517 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourceCollectionPluralCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,517 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-004' (资源集合复数命名检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,517 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,517 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,517 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,517 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,517 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,517 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,517 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,517 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,517 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,517 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,517 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.517851 -2025-07-11 17:53:11,517 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,517 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,517 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,517 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,519 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-004' 执行成功。 -2025-07-11 17:53:11,519 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-004' 执行完毕,状态: 通过 -2025-07-11 17:53:11,519 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-002' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,519 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,519 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,519 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,519 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,519 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,519 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,519 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourcePathNounCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,519 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-002' (资源路径名词检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,519 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,519 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,519 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,519 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,519 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,519 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,519 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,519 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,519 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,519 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,519 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.519352 -2025-07-11 17:53:11,519 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,519 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,519 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,519 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,520 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-002' 执行成功。 -2025-07-11 17:53:11,520 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-002' 执行完毕,状态: 通过 -2025-07-11 17:53:11,520 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-CORE-SCHEMA-001' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,520 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,520 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,520 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,520 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,520 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,520 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,520 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaFormatCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,520 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-CORE-SCHEMA-001' (DMS核心存储服务API响应格式检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,520 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,520 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,520 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,520 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,520 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,520 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,520 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,520 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,520 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,520 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,520 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.520539 -2025-07-11 17:53:11,520 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,520 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,520 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,520 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,521 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行成功。 -2025-07-11 17:53:11,521 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,521 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-001' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,521 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,521 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,521 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,521 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,521 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,521 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,521 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,521 - testcase.TC-CORE-FUNC-001 - INFO - 测试用例 'TC-CORE-FUNC-001' 已为端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 -2025-07-11 17:53:11,521 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-001' (返回体JSON Schema验证) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,521 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,521 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,521 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,521 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,521 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,521 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,521 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,521 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,521 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,521 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,521 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.521621 -2025-07-11 17:53:11,521 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,521 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,521 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,521 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.513055", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.514395", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.514395", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.515490", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.515490", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.017555", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.017555", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.018628", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.018628", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,020 - testcase.TC-SECURITY-002 - INFO - response_context.json_content: {'code': 0, 'data': True, 'message': '创建成功'} +2025-07-11 18:57:45,020 - testcase.TC-SECURITY-002 - INFO - response_data:{'code': 0, 'data': True, 'message': '创建成功'} +2025-07-11 18:57:45,020 - testcase.TC-SECURITY-002 - INFO - 未在响应中找到需要检查的敏感字段。 +2025-07-11 18:57:45,020 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-SECURITY-002' 执行成功。 +2025-07-11 18:57:45,020 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-002' 执行完毕,状态: 通过 +2025-07-11 18:57:45,020 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-LLM-COMPLIANCE-001' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,020 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,020 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,020 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,020 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,020 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,020 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,020 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: LLMComplianceCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,020 - testcase.TC-LLM-COMPLIANCE-001 - INFO - 已加载合规性标准: [] +2025-07-11 18:57:45,020 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-LLM-COMPLIANCE-001' (LLM合规性综合检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,020 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,020 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,020 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:45,020 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,020 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:45,020 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:45,020 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:45,020 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,020 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:45,020 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:45,020 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:45.020868 +2025-07-11 18:57:45,020 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:45,020 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,020 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,020 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,021 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-LLM-COMPLIANCE-001' 执行成功。 +2025-07-11 18:57:45,021 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 执行完毕,状态: 通过 +2025-07-11 18:57:45,021 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-001' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,021 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,021 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,021 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,021 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,021 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,021 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,021 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: CoreNamingStructureTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,021 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-001' (核心命名与结构规范检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,021 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,021 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,021 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:45,021 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,021 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:45,021 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:45,021 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:45,021 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,021 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:45,021 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:45,021 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:45.021872 +2025-07-11 18:57:45,021 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:45,021 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,021 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,021 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,022 - testcase.TC-RESTful-001 - INFO - responses: {'200': {'description': 'Success', 'content': {'application/json': {'schema': {'type': 'object', 'properties': {'code': {'type': 'integer'}, 'message': {'type': 'string'}, 'data': {'type': 'boolean'}}}}}}} +2025-07-11 18:57:45,022 - testcase.TC-RESTful-001 - INFO - 检查响应定义: status_code=200, 可用响应定义=['200'] +2025-07-11 18:57:45,022 - testcase.TC-RESTful-001 - INFO - 找到精确状态码 200 的响应定义 +2025-07-11 18:57:45,022 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-001' 执行成功。 +2025-07-11 18:57:45,022 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-001' 执行完毕,状态: 通过 +2025-07-11 18:57:45,022 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-PAGINATION-001' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,022 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,022 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,022 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,022 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,022 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,022 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,022 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: PaginationParamsCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,022 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-PAGINATION-001' (分页参数检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,022 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,022 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,022 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:45,022 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,022 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:45,022 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:45,022 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:45,022 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,022 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:45,022 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:45,022 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:45.022916 +2025-07-11 18:57:45,022 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:45,022 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,022 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,022 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,023 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-DMS-PAGINATION-001' 执行失败。 +2025-07-11 18:57:45,023 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 执行完毕,状态: 失败 +2025-07-11 18:57:45,023 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-004' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,023 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,023 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,023 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,023 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,023 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,023 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,023 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourceCollectionPluralCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,023 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-004' (资源集合复数命名检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,023 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,023 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,023 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:45,023 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,023 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:45,023 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:45,023 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:45,023 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,023 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:45,023 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:45,023 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:45.023841 +2025-07-11 18:57:45,023 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:45,023 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,023 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,023 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,025 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-004' 执行成功。 +2025-07-11 18:57:45,025 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-004' 执行完毕,状态: 通过 +2025-07-11 18:57:45,025 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-002' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,025 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,025 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,025 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,025 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,025 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,025 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,025 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourcePathNounCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,025 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-002' (资源路径名词检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,025 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,025 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,025 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:45,025 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,025 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:45,025 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:45,025 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:45,025 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,025 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:45,025 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:45,025 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:45.025258 +2025-07-11 18:57:45,025 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:45,025 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,025 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,025 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,026 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-002' 执行成功。 +2025-07-11 18:57:45,026 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-002' 执行完毕,状态: 通过 +2025-07-11 18:57:45,026 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-CORE-SCHEMA-001' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,026 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,026 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,026 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,026 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,026 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,026 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,026 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaFormatCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,026 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-CORE-SCHEMA-001' (DMS核心存储服务API响应格式检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,026 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,026 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,026 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:45,026 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,026 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:45,026 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:45,026 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:45,026 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,026 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:45,026 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:45,026 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:45.026325 +2025-07-11 18:57:45,026 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:45,026 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,026 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,026 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,027 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行成功。 +2025-07-11 18:57:45,027 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行完毕,状态: 通过 +2025-07-11 18:57:45,027 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-001' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,027 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,027 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,027 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,027 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,027 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,027 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,027 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,027 - testcase.TC-CORE-FUNC-001 - INFO - 测试用例 'TC-CORE-FUNC-001' 已为端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 +2025-07-11 18:57:45,027 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-001' (返回体JSON Schema验证) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,027 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,027 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,027 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:45,027 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,027 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:45,027 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:45,027 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:45,027 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,027 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:45,027 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:45,027 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:45.027303 +2025-07-11 18:57:45,027 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:45,027 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,027 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,027 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.019752", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.019752", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.020868", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.020868", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.021872", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.021872", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' status_code: 200 responses: {'200': {'description': 'Success', 'content': {'application/json': {'schema': {'type': 'object', 'properties': {'code': {'type': 'integer'}, 'message': {'type': 'string'}, 'data': {'type': 'boolean'}}}}}}} -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.516632", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.516632", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.517851", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.517851", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.519352", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.519352", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.520539", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.520539", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.521621", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,522 - ddms_compliance_suite.utils.schema_provider - DEBUG - 尝试从API规范中为状态码 200 查找Schema。 -2025-07-11 17:53:11,522 - testcase.TC-CORE-FUNC-001 - INFO - 将根据从API规范中获取的schema验证响应体。 -2025-07-11 17:53:11,522 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-001' 执行成功。 -2025-07-11 17:53:11,522 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,522 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-003' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,522 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,522 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,522 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,522 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,522 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,522 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,522 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TimeFormatCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,522 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-003' (时间字段ISO 8601格式检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,522 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,522 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,522 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,522 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,522 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,522 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,522 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,522 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,522 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,522 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,522 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.522712 -2025-07-11 17:53:11,522 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,522 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,522 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,522 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,523 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-003' 执行成功。 -2025-07-11 17:53:11,523 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-003' 执行完毕,状态: 通过 -2025-07-11 17:53:11,523 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-URL-VERSION-001' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,523 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,523 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,523 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,523 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,523 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,523 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,523 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: URLVersionCheckCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,523 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-URL-VERSION-001' (DMS API URL版本号检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,523 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,523 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,523 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,523 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,523 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,523 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,523 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,523 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,523 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,523 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,523 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.523702 -2025-07-11 17:53:11,523 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,523 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,523 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,523 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,524 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-URL-VERSION-001' 执行成功。 -2025-07-11 17:53:11,524 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,524 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-002' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,524 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,524 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,524 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,524 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,524 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,524 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,524 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: FlexibleSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,524 - testcase.TC-CORE-FUNC-002 - INFO - 测试用例 'TC-CORE-FUNC-002' 已为端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 -2025-07-11 17:53:11,524 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-002' (灵活的返回体JSON Schema验证) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,524 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,524 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,524 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,524 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,524 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,524 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,524 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,524 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,524 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,524 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,524 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.524881 -2025-07-11 17:53:11,524 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,524 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,524 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,524 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,525 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-002' 执行成功。 -2025-07-11 17:53:11,525 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-002' 执行完毕,状态: 通过 -2025-07-11 17:53:11,525 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-001' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,525 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,525 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,525 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,525 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,525 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,525 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,526 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: HTTPSMandatoryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,526 - testcase.TC-SECURITY-001 - INFO - 测试用例 'TC-SECURITY-001' 已为端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 -2025-07-11 17:53:11,526 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-001' (HTTPS 协议强制性检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,526 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,526 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,526 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,526 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,526 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,526 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,526 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,526 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,526 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,526 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,526 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.526135 -2025-07-11 17:53:11,526 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,526 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,526 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,526 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,526 - testcase.TC-SECURITY-001 - WARNING - 原始URL 'http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 不是HTTPS。跳过此测试用例的URL修改。 -2025-07-11 17:53:11,527 - testcase.TC-SECURITY-001 - ERROR - 安全漏洞:API允许通过HTTP成功响应 (200)。 -2025-07-11 17:53:11,527 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-SECURITY-001' 执行失败。 -2025-07-11 17:53:11,527 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-001' 执行完毕,状态: 失败 -2025-07-11 17:53:11,527 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-QUERY' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,527 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,527 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,527 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,527 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,527 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,527 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,527 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchQueryParamCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,527 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' initialized for endpoint: PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,527 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Initializing: Looking for a simple type query parameter for type mismatch test. -2025-07-11 17:53:11,527 - testcase.TC-ERROR-4001-QUERY - INFO - _find_first_simple_type_parameter: No suitable simple type field found for query parameters. -2025-07-11 17:53:11,527 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No suitable simple type query parameter found for type mismatch test. -2025-07-11 17:53:11,527 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-QUERY' (查询参数类型不匹配检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,527 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,527 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,527 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,527 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,527 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,527 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,527 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,527 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,527 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,527 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,527 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.527721 -2025-07-11 17:53:11,527 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,527 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,527 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No target field or original type identified for query param type mismatch. Skipping query param modification. -2025-07-11 17:53:11,527 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,527 - testcase.TC-ERROR-4001-QUERY - DEBUG - TC-ERROR-4001-QUERY is focused on query parameters, generate_request_body will not modify the body. -2025-07-11 17:53:11,527 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,527 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,527 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,527 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' did not modify the URL via modify_request_url hook. -2025-07-11 17:53:11,527 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,527 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,527 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_body, body type: -2025-07-11 17:53:11,528 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Skipped type mismatch (query) validation: No target query parameter was identified. -2025-07-11 17:53:11,528 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: check_performance, elapsed: 0.0008268356323242188 -2025-07-11 17:53:11,528 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4001-QUERY' 执行成功。 -2025-07-11 17:53:11,528 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 执行完毕,状态: 通过 -2025-07-11 17:53:11,528 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-BODY' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,528 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,528 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,528 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,528 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,528 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,528 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,528 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,528 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' initialized for endpoint: PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,528 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Initializing: Looking for a simple type field in request body for type mismatch test. -2025-07-11 17:53:11,528 - testcase.TC-ERROR-4001-BODY - DEBUG - Found request body schema in content type: application/json -2025-07-11 17:53:11,528 - testcase.TC-ERROR-4001-BODY - DEBUG - _find_simple_type_field_in_schema: Searching for simple type field in 'request body' schema... -2025-07-11 17:53:11,528 - testcase.TC-ERROR-4001-BODY - INFO - Found simple type field: Path=version, Type=string -2025-07-11 17:53:11,528 - testcase.TC-ERROR-4001-BODY - INFO - _find_simple_type_field_in_schema: Found simple type field in 'request body': Path=version, Type=string -2025-07-11 17:53:11,528 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Target field for type mismatch (body): version, Original Type: string -2025-07-11 17:53:11,528 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-BODY' (请求体字段类型不匹配检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,528 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,528 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,528 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,528 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,528 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,528 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,528 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,528 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,528 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,528 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,528 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.528974 -2025-07-11 17:53:11,528 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,528 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,529 - testcase.TC-ERROR-4001-BODY - DEBUG - TC-ERROR-4001-BODY is focused on request body, generate_query_params will not modify query parameters. -2025-07-11 17:53:11,529 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,529 - testcase.TC-ERROR-4001-BODY - DEBUG - [TC-ERROR-4001-BODY] Preparing to modify request body for type mismatch. Target path: ['version'], Original type: string -2025-07-11 17:53:11,529 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Generated mismatched value '12345' for original type 'string' at path 'version'. -2025-07-11 17:53:11,529 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 在路径 version (键 'version') 处设置值为 '12345' -2025-07-11 17:53:11,529 - testcase.TC-ERROR-4001-BODY - DEBUG - [TC-ERROR-4001-BODY] Successfully set mismatched value at path using util_set_value_at_path. -2025-07-11 17:53:11,529 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,529 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,529 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,529 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' did not modify the URL via modify_request_url hook. -2025-07-11 17:53:11,529 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,529 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,529 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_body, body type: -2025-07-11 17:53:11,529 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: check_performance, elapsed: 0.0007300376892089844 -2025-07-11 17:53:11,529 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4001-BODY' 执行失败。 -2025-07-11 17:53:11,529 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 执行完毕,状态: 失败 -2025-07-11 17:53:11,529 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4002' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,529 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,529 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,529 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,529 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,529 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,529 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,529 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: NumberOutOfRangeCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,530 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' initialized for endpoint: PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,530 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Searching for a ranged numeric field... -2025-07-11 17:53:11,530 - testcase.TC-ERROR-4002 - DEBUG - Found request body schema in content type: application/json -2025-07-11 17:53:11,530 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in request body. -2025-07-11 17:53:11,530 - testcase.TC-ERROR-4002 - DEBUG - 在路径 data.0.record_count 找到范围受限字段。 -2025-07-11 17:53:11,530 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Found ranged numeric field in BODY at path: data.0.record_count -2025-07-11 17:53:11,530 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Target found in 'body' at path 'data.0.record_count'. Type: integer, Min: 0, Max: 10000, Desc: '' -2025-07-11 17:53:11,530 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Setting out-of-range value to 10001 (max is 10000). -2025-07-11 17:53:11,530 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4002' (数值参数越界检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,530 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,530 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,530 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,530 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,530 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,530 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,530 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,530 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,530 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,530 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,530 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.530185 -2025-07-11 17:53:11,530 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,530 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,530 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 在路径 data.0.record_count (键 'record_count') 处设置值为 '10001' -2025-07-11 17:53:11,530 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Successfully injected out-of-range value into parameters. -2025-07-11 17:53:11,530 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,530 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,530 - testcase.TC-ERROR-4002 - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,530 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' did not modify the URL via modify_request_url hook. -2025-07-11 17:53:11,530 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,530 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,530 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_body, body type: -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.521621", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.522712", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.522712", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.523702", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.523702", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.524881", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.524881", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.526135", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.526135", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.527721", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.527721", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 204' -d '{"version": 12345, "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.528974", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 204\' -d \'{"version": 12345, "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.528974", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 210' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 10001, "status": "active", "update_date": "2025-07-11T17:53:11.530185", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,531 - testcase.TC-ERROR-4002 - DEBUG - Hook: check_performance, elapsed: 0.0008039474487304688 -2025-07-11 17:53:11,531 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4002' 执行失败。 -2025-07-11 17:53:11,531 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4002' 执行完毕,状态: 失败 -2025-07-11 17:53:11,531 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4006' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,531 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,531 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,531 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,531 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,531 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,531 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,531 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: InvalidEnumValueCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,531 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] Searching for a field with enum constraints... -2025-07-11 17:53:11,531 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No field with enum constraints found in any location. -2025-07-11 17:53:11,531 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No suitable enum field found for this endpoint. -2025-07-11 17:53:11,531 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4006' (非法枚举值检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,531 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,531 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,531 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,531 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,531 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,531 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,531 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,531 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,531 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,531 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,531 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.531448 -2025-07-11 17:53:11,531 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,531 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,531 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,531 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,532 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4006' 执行成功。 -2025-07-11 17:53:11,532 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4006' 执行完毕,状态: 通过 -2025-07-11 17:53:11,532 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-BODY' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,532 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,532 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,532 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,532 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,532 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,532 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,532 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,532 - ddms_compliance_suite.utils.schema_utils - DEBUG - [Util] 递归查找路径: [], 当前层级必填字段: ['data'], 属性: ['version', 'act', 'data'] -2025-07-11 17:53:11,532 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 策略1: 在路径 root 找到可直接移除的必填字段: 'data' -2025-07-11 17:53:11,532 - testcase.TC-ERROR-4003-BODY - INFO - Found a removable field path in 'request body' schema: 'data' -2025-07-11 17:53:11,532 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-BODY' (缺失必填请求体字段检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,532 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,532 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,532 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,532 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,532 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,532 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,532 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,532 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,532 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,532 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,532 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.532704 -2025-07-11 17:53:11,532 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,532 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,532 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 从路径 'data' 成功移除字段 'data' (原值: '[{'description': 'example_string', 'record_count': 0, 'status': 'active', 'update_date': '2025-07-11T17:53:11.532704', 'wb_dr_pro_daily_report_id': 'example_string'}]')。 -2025-07-11 17:53:11,532 - testcase.TC-ERROR-4003-BODY - INFO - 为进行必填字段缺失测试,已通过工具方法从请求体中移除字段路径 'data'。 -2025-07-11 17:53:11,532 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,532 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,533 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4003-BODY' 执行失败。 -2025-07-11 17:53:11,533 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 执行完毕,状态: 失败 -2025-07-11 17:53:11,533 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-QUERY' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,533 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,533 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,533 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,533 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,533 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,533 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,533 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldQueryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,533 - testcase.TC-ERROR-4003-QUERY - INFO - No required 'query' parameter found in endpoint_spec. -2025-07-11 17:53:11,533 - testcase.TC-ERROR-4003-QUERY - INFO - 测试用例 TC-ERROR-4003-QUERY (缺失必填查询参数检查) 已针对端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。Target param to remove: None -2025-07-11 17:53:11,533 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-QUERY' (缺失必填查询参数检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,533 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,533 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,533 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] -2025-07-11 17:53:11,533 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,533 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 -2025-07-11 17:53:11,533 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 -2025-07-11 17:53:11,533 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] -2025-07-11 17:53:11,533 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,533 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 -2025-07-11 17:53:11,533 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active -2025-07-11 17:53:11,533 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T17:53:11.533933 -2025-07-11 17:53:11,533 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string -2025-07-11 17:53:11,533 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,533 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,533 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,534 - testcase.TC-ERROR-4003-QUERY - INFO - 由于未识别到可移除的必填查询参数,跳过此测试用例。 -2025-07-11 17:53:11,534 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4003-QUERY' 执行成功。 -2025-07-11 17:53:11,534 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 执行完毕,状态: 通过 -2025-07-11 17:53:11,534 - root - INFO - strictness_level: TestSeverity.CRITICAL -2025-07-11 17:53:11,534 - root - INFO - strictness_level: TestSeverity.CRITICAL -2025-07-11 17:53:11,534 - root - INFO - relevant_failed_tcs: [] -2025-07-11 17:53:11,534 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 测试完成,最终状态: 通过 -2025-07-11 17:53:11,534 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report (Delete wb_dr_pro_daily_report) -2025-07-11 17:53:11,534 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,534 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,534 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,534 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,534 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,534 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,534 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,534 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,534 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,534 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,534 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,534 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,534 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,534 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,535 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,535 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,535 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,535 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,535 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,535 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 -2025-07-11 17:53:11,535 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 发现了 20 个适用的测试用例 (已排序): ['TC-STATUS-001', 'TC-HEADER-001', 'TC-SECURITY-002', 'TC-LLM-COMPLIANCE-001', 'TC-RESTful-001', 'TC-DMS-PAGINATION-001', 'TC-RESTful-004', 'TC-RESTful-002', 'TC-DMS-CORE-SCHEMA-001', 'TC-CORE-FUNC-001', 'TC-RESTful-003', 'TC-DMS-URL-VERSION-001', 'TC-CORE-FUNC-002', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4002', 'TC-ERROR-4006', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY'] -2025-07-11 17:53:11,535 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,535 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,535 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,535 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,535 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,535 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,535 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,535 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,535 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 -2025-07-11 17:53:11,535 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,535 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,535 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,535 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,535 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,535 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,535 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,535 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,535 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,535 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,535 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,536 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,536 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-STATUS-001' 执行成功。 -2025-07-11 17:53:11,536 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,536 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-HEADER-001' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,536 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,536 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,536 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,536 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,536 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,536 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,536 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: RequiredHeadersSchemaCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,536 - RequiredHeadersSchemaCheck - INFO - 测试用例 TC-HEADER-001 (必需请求头Schema验证) 已针对端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 -2025-07-11 17:53:11,536 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-HEADER-001' (必需请求头Schema验证) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,536 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,536 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,536 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,536 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,536 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,536 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,536 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,536 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,536 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,536 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,538 - RequiredHeadersSchemaCheck - INFO - API端点: DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,538 - RequiredHeadersSchemaCheck - INFO - 发现的header参数: [] -2025-07-11 17:53:11,538 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Tenant-ID: 找到=False, 必需=False, 名称=None -2025-07-11 17:53:11,538 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Tenant-ID -2025-07-11 17:53:11,538 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Data-Domain: 找到=False, 必需=False, 名称=None -2025-07-11 17:53:11,538 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Data-Domain -2025-07-11 17:53:11,538 - RequiredHeadersSchemaCheck - INFO - 检查请求头 Authorization: 找到=False, 必需=False, 名称=None -2025-07-11 17:53:11,538 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 Authorization -2025-07-11 17:53:11,538 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-HEADER-001' 执行失败。 -2025-07-11 17:53:11,538 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 失败 -2025-07-11 17:53:11,538 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-002' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,538 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,538 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,538 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,538 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,538 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,538 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,538 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: EncryptedFieldsCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,538 - testcase.TC-SECURITY-002 - INFO - 测试用例 TC-SECURITY-002 (敏感字段加密检查) 已初始化,将检查以下敏感字段是否加密: {'location', 'position', 'coord'} -2025-07-11 17:53:11,538 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-002' (敏感字段加密检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,538 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,538 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,538 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,538 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,538 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,538 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,538 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,538 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,538 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,538 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,539 - testcase.TC-SECURITY-002 - INFO - response_context.json_content: {'code': 404, 'data': False, 'message': '未找到要删除的资源'} -2025-07-11 17:53:11,539 - testcase.TC-SECURITY-002 - INFO - response_data:{'code': 404, 'data': False, 'message': '未找到要删除的资源'} -2025-07-11 17:53:11,539 - testcase.TC-SECURITY-002 - INFO - 未在响应中找到需要检查的敏感字段。 -2025-07-11 17:53:11,539 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-SECURITY-002' 执行成功。 -2025-07-11 17:53:11,539 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-002' 执行完毕,状态: 通过 -2025-07-11 17:53:11,539 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-LLM-COMPLIANCE-001' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,539 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,539 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,539 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,539 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,539 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,539 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,539 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: LLMComplianceCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,539 - testcase.TC-LLM-COMPLIANCE-001 - INFO - 已加载合规性标准: [] -2025-07-11 17:53:11,539 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-LLM-COMPLIANCE-001' (LLM合规性综合检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,539 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,539 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,539 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,539 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,539 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,539 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,539 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,539 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,539 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,539 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,540 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-LLM-COMPLIANCE-001' 执行成功。 -2025-07-11 17:53:11,540 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,540 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-001' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,540 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,540 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,540 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,540 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,540 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,540 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,540 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: CoreNamingStructureTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,540 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-001' (核心命名与结构规范检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,540 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,540 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,540 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,540 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,540 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,540 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,540 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,540 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,540 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,540 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,541 - testcase.TC-RESTful-001 - INFO - responses: {'200': {'description': 'Success', 'content': {'application/json': {'schema': {'type': 'object', 'properties': {'code': {'type': 'integer'}, 'message': {'type': 'string'}, 'data': {'type': 'boolean'}}}}}}} -2025-07-11 17:53:11,541 - testcase.TC-RESTful-001 - INFO - 检查响应定义: status_code=200, 可用响应定义=['200'] -2025-07-11 17:53:11,541 - testcase.TC-RESTful-001 - INFO - 找到精确状态码 200 的响应定义 -2025-07-11 17:53:11,541 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-001' 执行成功。 -2025-07-11 17:53:11,541 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,541 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-PAGINATION-001' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,541 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,541 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,541 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,541 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,541 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,541 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,541 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: PaginationParamsCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,541 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-PAGINATION-001' (分页参数检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,541 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,541 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,541 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,541 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,541 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,541 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,541 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,541 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,541 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,541 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 210\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 10001, "status": "active", "update_date": "2025-07-11T17:53:11.530185", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.531448", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.531448", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.022916", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.022916", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.023841", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.023841", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.025258", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.025258", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.026325", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.026325", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,028 - ddms_compliance_suite.utils.schema_provider - DEBUG - 尝试从API规范中为状态码 200 查找Schema。 +2025-07-11 18:57:45,028 - testcase.TC-CORE-FUNC-001 - INFO - 将根据从API规范中获取的schema验证响应体。 +2025-07-11 18:57:45,028 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-001' 执行成功。 +2025-07-11 18:57:45,028 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-001' 执行完毕,状态: 通过 +2025-07-11 18:57:45,028 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-003' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,028 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,028 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,028 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,028 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,028 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,028 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,028 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TimeFormatCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,028 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-003' (时间字段ISO 8601格式检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,028 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,028 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,028 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:45,028 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,028 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:45,028 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:45,028 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:45,028 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,028 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:45,028 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:45,028 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:45.028365 +2025-07-11 18:57:45,028 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:45,028 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,028 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,028 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,029 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-003' 执行成功。 +2025-07-11 18:57:45,029 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-003' 执行完毕,状态: 通过 +2025-07-11 18:57:45,029 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-URL-VERSION-001' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,029 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,029 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,029 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,029 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,029 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,029 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,029 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: URLVersionCheckCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,029 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-URL-VERSION-001' (DMS API URL版本号检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,029 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,029 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,029 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:45,029 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,029 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:45,029 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:45,029 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:45,029 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,029 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:45,029 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:45,029 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:45.029281 +2025-07-11 18:57:45,029 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:45,029 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,029 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,029 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,030 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-URL-VERSION-001' 执行成功。 +2025-07-11 18:57:45,030 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 执行完毕,状态: 通过 +2025-07-11 18:57:45,030 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-002' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,030 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,030 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,030 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,030 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,030 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,030 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,030 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: FlexibleSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,030 - testcase.TC-CORE-FUNC-002 - INFO - 测试用例 'TC-CORE-FUNC-002' 已为端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 +2025-07-11 18:57:45,030 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-002' (灵活的返回体JSON Schema验证) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,030 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,030 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,030 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:45,030 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,030 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:45,030 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:45,030 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:45,030 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,030 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:45,030 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:45,030 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:45.030259 +2025-07-11 18:57:45,030 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:45,030 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,030 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,030 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,030 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-002' 执行成功。 +2025-07-11 18:57:45,030 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-002' 执行完毕,状态: 通过 +2025-07-11 18:57:45,030 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-001' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,031 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,031 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,031 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,031 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,031 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,031 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,031 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: HTTPSMandatoryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,031 - testcase.TC-SECURITY-001 - INFO - 测试用例 'TC-SECURITY-001' 已为端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 +2025-07-11 18:57:45,031 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-001' (HTTPS 协议强制性检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,031 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,031 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,031 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:45,031 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,031 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:45,031 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:45,031 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:45,031 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,031 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:45,031 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:45,031 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:45.031193 +2025-07-11 18:57:45,031 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:45,031 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,031 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,031 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,031 - testcase.TC-SECURITY-001 - WARNING - 原始URL 'http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 不是HTTPS。跳过此测试用例的URL修改。 +2025-07-11 18:57:45,031 - testcase.TC-SECURITY-001 - ERROR - 安全漏洞:API允许通过HTTP成功响应 (200)。 +2025-07-11 18:57:45,031 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-SECURITY-001' 执行失败。 +2025-07-11 18:57:45,031 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-001' 执行完毕,状态: 失败 +2025-07-11 18:57:45,031 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-QUERY' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,032 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,032 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,032 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,032 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,032 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,032 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,032 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchQueryParamCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,032 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' initialized for endpoint: PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,032 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Initializing: Looking for a simple type query parameter for type mismatch test. +2025-07-11 18:57:45,032 - testcase.TC-ERROR-4001-QUERY - INFO - _find_first_simple_type_parameter: No suitable simple type field found for query parameters. +2025-07-11 18:57:45,032 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No suitable simple type query parameter found for type mismatch test. +2025-07-11 18:57:45,032 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-QUERY' (查询参数类型不匹配检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,032 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,032 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,032 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:45,032 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,032 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:45,032 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:45,032 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:45,032 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,032 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:45,032 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:45,032 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:45.032208 +2025-07-11 18:57:45,032 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:45,032 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,032 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No target field or original type identified for query param type mismatch. Skipping query param modification. +2025-07-11 18:57:45,032 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:45,032 - testcase.TC-ERROR-4001-QUERY - DEBUG - TC-ERROR-4001-QUERY is focused on query parameters, generate_request_body will not modify the body. +2025-07-11 18:57:45,032 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,032 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,032 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,032 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' did not modify the URL via modify_request_url hook. +2025-07-11 18:57:45,032 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,032 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:45,032 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_body, body type: +2025-07-11 18:57:45,033 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Skipped type mismatch (query) validation: No target query parameter was identified. +2025-07-11 18:57:45,033 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: check_performance, elapsed: 0.0006859302520751953 +2025-07-11 18:57:45,033 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4001-QUERY' 执行成功。 +2025-07-11 18:57:45,033 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 执行完毕,状态: 通过 +2025-07-11 18:57:45,033 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-BODY' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,033 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,033 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,033 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,033 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,033 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,033 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,033 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,033 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' initialized for endpoint: PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,033 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Initializing: Looking for a simple type field in request body for type mismatch test. +2025-07-11 18:57:45,033 - testcase.TC-ERROR-4001-BODY - DEBUG - Found request body schema in content type: application/json +2025-07-11 18:57:45,033 - testcase.TC-ERROR-4001-BODY - DEBUG - _find_simple_type_field_in_schema: Searching for simple type field in 'request body' schema... +2025-07-11 18:57:45,033 - testcase.TC-ERROR-4001-BODY - INFO - Found simple type field: Path=version, Type=string +2025-07-11 18:57:45,033 - testcase.TC-ERROR-4001-BODY - INFO - _find_simple_type_field_in_schema: Found simple type field in 'request body': Path=version, Type=string +2025-07-11 18:57:45,033 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Target field for type mismatch (body): version, Original Type: string +2025-07-11 18:57:45,033 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-BODY' (请求体字段类型不匹配检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,033 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,033 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,033 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:45,033 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,033 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:45,033 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:45,033 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:45,033 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,033 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:45,033 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:45,033 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:45.033300 +2025-07-11 18:57:45,033 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:45,033 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,033 - testcase.TC-ERROR-4001-BODY - DEBUG - TC-ERROR-4001-BODY is focused on request body, generate_query_params will not modify query parameters. +2025-07-11 18:57:45,033 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:45,033 - testcase.TC-ERROR-4001-BODY - DEBUG - [TC-ERROR-4001-BODY] Preparing to modify request body for type mismatch. Target path: ['version'], Original type: string +2025-07-11 18:57:45,033 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Generated mismatched value '12345' for original type 'string' at path 'version'. +2025-07-11 18:57:45,033 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 在路径 version (键 'version') 处设置值为 '12345' +2025-07-11 18:57:45,033 - testcase.TC-ERROR-4001-BODY - DEBUG - [TC-ERROR-4001-BODY] Successfully set mismatched value at path using util_set_value_at_path. +2025-07-11 18:57:45,033 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,033 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,033 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,033 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' did not modify the URL via modify_request_url hook. +2025-07-11 18:57:45,033 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,033 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:45,033 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_body, body type: +2025-07-11 18:57:45,034 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: check_performance, elapsed: 0.0006568431854248047 +2025-07-11 18:57:45,034 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4001-BODY' 执行失败。 +2025-07-11 18:57:45,034 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 执行完毕,状态: 失败 +2025-07-11 18:57:45,034 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4002' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,034 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,034 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,034 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,034 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,034 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,034 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,034 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: NumberOutOfRangeCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,034 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' initialized for endpoint: PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,034 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Searching for a ranged numeric field... +2025-07-11 18:57:45,034 - testcase.TC-ERROR-4002 - DEBUG - Found request body schema in content type: application/json +2025-07-11 18:57:45,034 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in request body. +2025-07-11 18:57:45,034 - testcase.TC-ERROR-4002 - DEBUG - 在路径 data.0.record_count 找到范围受限字段。 +2025-07-11 18:57:45,034 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Found ranged numeric field in BODY at path: data.0.record_count +2025-07-11 18:57:45,034 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Target found in 'body' at path 'data.0.record_count'. Type: integer, Min: 0, Max: 10000, Desc: '' +2025-07-11 18:57:45,034 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Setting out-of-range value to 10001 (max is 10000). +2025-07-11 18:57:45,034 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4002' (数值参数越界检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,034 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,034 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,034 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:45,034 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,034 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:45,034 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:45,034 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:45,034 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,034 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:45,034 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:45,034 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:45.034394 +2025-07-11 18:57:45,034 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:45,034 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,034 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 在路径 data.0.record_count (键 'record_count') 处设置值为 '10001' +2025-07-11 18:57:45,034 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Successfully injected out-of-range value into parameters. +2025-07-11 18:57:45,034 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,034 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,034 - testcase.TC-ERROR-4002 - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,034 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' did not modify the URL via modify_request_url hook. +2025-07-11 18:57:45,034 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,034 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:45,034 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_body, body type: +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.027303", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.027303", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.028365", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.028365", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.029281", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.029281", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.030259", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.030259", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.031193", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.031193", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.032208", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.032208", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 204' -d '{"version": 12345, "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.033300", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 204\' -d \'{"version": 12345, "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.033300", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,035 - testcase.TC-ERROR-4002 - DEBUG - Hook: check_performance, elapsed: 0.0006802082061767578 +2025-07-11 18:57:45,035 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4002' 执行失败。 +2025-07-11 18:57:45,035 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4002' 执行完毕,状态: 失败 +2025-07-11 18:57:45,035 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4006' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,035 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,035 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,035 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,035 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,035 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,035 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,035 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: InvalidEnumValueCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,035 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] Searching for a field with enum constraints... +2025-07-11 18:57:45,035 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No field with enum constraints found in any location. +2025-07-11 18:57:45,035 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No suitable enum field found for this endpoint. +2025-07-11 18:57:45,035 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4006' (非法枚举值检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,035 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,035 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,035 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:45,035 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,035 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:45,035 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:45,035 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:45,035 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,035 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:45,035 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:45,035 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:45.035468 +2025-07-11 18:57:45,035 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:45,035 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,035 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,035 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,036 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4006' 执行成功。 +2025-07-11 18:57:45,036 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4006' 执行完毕,状态: 通过 +2025-07-11 18:57:45,036 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-BODY' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,036 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,036 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,036 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,036 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,036 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,036 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,036 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,036 - ddms_compliance_suite.utils.schema_utils - DEBUG - [Util] 递归查找路径: [], 当前层级必填字段: ['data'], 属性: ['version', 'act', 'data'] +2025-07-11 18:57:45,036 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 策略1: 在路径 root 找到可直接移除的必填字段: 'data' +2025-07-11 18:57:45,036 - testcase.TC-ERROR-4003-BODY - INFO - Found a removable field path in 'request body' schema: 'data' +2025-07-11 18:57:45,036 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-BODY' (缺失必填请求体字段检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,036 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,036 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,036 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:45,036 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,036 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:45,036 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:45,036 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:45,036 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,036 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:45,036 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:45,036 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:45.036432 +2025-07-11 18:57:45,036 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:45,036 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,036 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 从路径 'data' 成功移除字段 'data' (原值: '[{'description': 'example_string', 'record_count': 0, 'status': 'active', 'update_date': '2025-07-11T18:57:45.036432', 'wb_dr_pro_daily_report_id': 'example_string'}]')。 +2025-07-11 18:57:45,036 - testcase.TC-ERROR-4003-BODY - INFO - 为进行必填字段缺失测试,已通过工具方法从请求体中移除字段路径 'data'。 +2025-07-11 18:57:45,036 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,036 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,037 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4003-BODY' 执行失败。 +2025-07-11 18:57:45,037 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 执行完毕,状态: 失败 +2025-07-11 18:57:45,037 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-QUERY' for 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,037 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,037 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,037 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,037 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,037 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,037 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,037 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldQueryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,037 - testcase.TC-ERROR-4003-QUERY - INFO - No required 'query' parameter found in endpoint_spec. +2025-07-11 18:57:45,037 - testcase.TC-ERROR-4003-QUERY - INFO - 测试用例 TC-ERROR-4003-QUERY (缺失必填查询参数检查) 已针对端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。Target param to remove: None +2025-07-11 18:57:45,037 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-QUERY' (缺失必填查询参数检查) for endpoint 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,037 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,037 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'update_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,037 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:45,037 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,037 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: update_wb_dr_pro_daily_report_body.act): 0 +2025-07-11 18:57:45,037 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: update_wb_dr_pro_daily_report_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}, 'wb_dr_pro_daily_report_id': {'description': '主键 for wb_dr_pro_daily_report', 'title': '主键', 'type': 'string'}}, 'required': ['wb_dr_pro_daily_report_id', 'status'], 'title': '钻井日报数据', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:45,037 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0]). Properties: ['description', 'record_count', 'status', 'update_date', 'wb_dr_pro_daily_report_id'] +2025-07-11 18:57:45,037 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,037 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 number/integer 类型数据 for (context: update_wb_dr_pro_daily_report_body.data[0].record_count): 0 +2025-07-11 18:57:45,037 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].status): active +2025-07-11 18:57:45,037 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('date-time') for (context: update_wb_dr_pro_daily_report_body.data[0].update_date): 2025-07-11T18:57:45.037422 +2025-07-11 18:57:45,037 - ddms_compliance_suite.test_orchestrator - DEBUG - [update_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: update_wb_dr_pro_daily_report_body.data[0].wb_dr_pro_daily_report_id): example_string +2025-07-11 18:57:45,037 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'update_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,037 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,037 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,038 - testcase.TC-ERROR-4003-QUERY - INFO - 由于未识别到可移除的必填查询参数,跳过此测试用例。 +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4003-QUERY' 执行成功。 +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 执行完毕,状态: 通过 +2025-07-11 18:57:45,038 - root - INFO - strictness_level: TestSeverity.CRITICAL +2025-07-11 18:57:45,038 - root - INFO - strictness_level: TestSeverity.CRITICAL +2025-07-11 18:57:45,038 - root - INFO - relevant_failed_tcs: [] +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 测试完成,最终状态: 通过 +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report (Delete wb_dr_pro_daily_report) +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-002' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-004' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-002' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-RESTful-003' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-CORE-FUNC-002' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-SECURITY-001' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4002' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4006' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 适用于端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report'。 +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 发现了 20 个适用的测试用例 (已排序): ['TC-STATUS-001', 'TC-HEADER-001', 'TC-SECURITY-002', 'TC-LLM-COMPLIANCE-001', 'TC-RESTful-001', 'TC-DMS-PAGINATION-001', 'TC-RESTful-004', 'TC-RESTful-002', 'TC-DMS-CORE-SCHEMA-001', 'TC-CORE-FUNC-001', 'TC-RESTful-003', 'TC-DMS-URL-VERSION-001', 'TC-CORE-FUNC-002', 'TC-SECURITY-001', 'TC-ERROR-4001-QUERY', 'TC-ERROR-4001-BODY', 'TC-ERROR-4002', 'TC-ERROR-4006', 'TC-ERROR-4003-BODY', 'TC-ERROR-4003-QUERY'] +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: StatusCode200Check 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,038 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-STATUS-001' (基本状态码 200 检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,038 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,039 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,039 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-STATUS-001' 执行成功。 +2025-07-11 18:57:45,039 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过 +2025-07-11 18:57:45,039 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-HEADER-001' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,039 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,039 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,039 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,039 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,039 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,039 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,039 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: RequiredHeadersSchemaCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,039 - RequiredHeadersSchemaCheck - INFO - 测试用例 TC-HEADER-001 (必需请求头Schema验证) 已针对端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 +2025-07-11 18:57:45,039 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-HEADER-001' (必需请求头Schema验证) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,039 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,039 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,039 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] +2025-07-11 18:57:45,039 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,039 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:45,039 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] +2025-07-11 18:57:45,039 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,039 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,039 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,039 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,040 - RequiredHeadersSchemaCheck - INFO - API端点: DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,040 - RequiredHeadersSchemaCheck - INFO - 发现的header参数: [] +2025-07-11 18:57:45,040 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Tenant-ID: 找到=False, 必需=False, 名称=None +2025-07-11 18:57:45,040 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Tenant-ID +2025-07-11 18:57:45,040 - RequiredHeadersSchemaCheck - INFO - 检查请求头 X-Data-Domain: 找到=False, 必需=False, 名称=None +2025-07-11 18:57:45,040 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 X-Data-Domain +2025-07-11 18:57:45,040 - RequiredHeadersSchemaCheck - INFO - 检查请求头 Authorization: 找到=False, 必需=False, 名称=None +2025-07-11 18:57:45,040 - RequiredHeadersSchemaCheck - WARNING - 规范验证失败: 缺少必需的请求头 Authorization +2025-07-11 18:57:45,040 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-HEADER-001' 执行失败。 +2025-07-11 18:57:45,040 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 失败 +2025-07-11 18:57:45,040 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-002' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,040 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,040 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,040 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,040 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,040 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,040 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,040 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: EncryptedFieldsCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,040 - testcase.TC-SECURITY-002 - INFO - 测试用例 TC-SECURITY-002 (敏感字段加密检查) 已初始化,将检查以下敏感字段是否加密: {'coord', 'position', 'location'} +2025-07-11 18:57:45,040 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-002' (敏感字段加密检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,040 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,040 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,040 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] +2025-07-11 18:57:45,040 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,040 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:45,040 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] +2025-07-11 18:57:45,040 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,040 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,040 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,040 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,041 - testcase.TC-SECURITY-002 - INFO - response_context.json_content: {'code': 404, 'data': False, 'message': '未找到要删除的资源'} +2025-07-11 18:57:45,041 - testcase.TC-SECURITY-002 - INFO - response_data:{'code': 404, 'data': False, 'message': '未找到要删除的资源'} +2025-07-11 18:57:45,041 - testcase.TC-SECURITY-002 - INFO - 未在响应中找到需要检查的敏感字段。 +2025-07-11 18:57:45,041 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-SECURITY-002' 执行成功。 +2025-07-11 18:57:45,041 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-002' 执行完毕,状态: 通过 +2025-07-11 18:57:45,041 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-LLM-COMPLIANCE-001' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,041 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,041 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,041 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,041 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,041 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,041 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,041 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: LLMComplianceCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,041 - testcase.TC-LLM-COMPLIANCE-001 - INFO - 已加载合规性标准: [] +2025-07-11 18:57:45,041 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-LLM-COMPLIANCE-001' (LLM合规性综合检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,041 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,041 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,041 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] +2025-07-11 18:57:45,041 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,041 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:45,041 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] +2025-07-11 18:57:45,041 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,041 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,041 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,041 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,042 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-LLM-COMPLIANCE-001' 执行成功。 +2025-07-11 18:57:45,042 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-LLM-COMPLIANCE-001' 执行完毕,状态: 通过 +2025-07-11 18:57:45,042 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-001' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,042 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,042 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,042 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,042 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,042 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,042 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,042 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: CoreNamingStructureTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,042 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-001' (核心命名与结构规范检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,042 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,042 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,042 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] +2025-07-11 18:57:45,042 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,042 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:45,042 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] +2025-07-11 18:57:45,042 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,042 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,042 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,042 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,043 - testcase.TC-RESTful-001 - INFO - responses: {'200': {'description': 'Success', 'content': {'application/json': {'schema': {'type': 'object', 'properties': {'code': {'type': 'integer'}, 'message': {'type': 'string'}, 'data': {'type': 'boolean'}}}}}}} +2025-07-11 18:57:45,043 - testcase.TC-RESTful-001 - INFO - 检查响应定义: status_code=200, 可用响应定义=['200'] +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 210' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 10001, "status": "active", "update_date": "2025-07-11T18:57:45.034394", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 210\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 10001, "status": "active", "update_date": "2025-07-11T18:57:45.034394", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.035468", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.035468", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 30' -d '{"version": "1.0.0", "act": 0}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 30\' -d \'{"version": "1.0.0", "act": 0}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' -DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.533933", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T17:53:11.533933", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.037422", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +DEBUG: curlify generated command (repr): 'curl -X PUT -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 206\' -d \'{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.037422", "wb_dr_pro_daily_report_id": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' DEBUG: curlify generated command (raw): curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report DEBUG: curlify generated command (repr): 'curl -X DELETE -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 65\' -d \'{"version": "1.0.0", "data": [{"description": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' DEBUG: curlify generated command (raw): curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report @@ -4882,215 +4879,237 @@ DEBUG: curlify generated command (repr): 'curl -X DELETE -H \'User-Agent: python DEBUG: curlify generated command (raw): curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report DEBUG: curlify generated command (repr): 'curl -X DELETE -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 65\' -d \'{"version": "1.0.0", "data": [{"description": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' status_code: 200 +2025-07-11 18:57:45,043 - testcase.TC-RESTful-001 - INFO - 找到精确状态码 200 的响应定义 +2025-07-11 18:57:45,043 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-001' 执行成功。 +2025-07-11 18:57:45,043 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-001' 执行完毕,状态: 通过 +2025-07-11 18:57:45,043 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-PAGINATION-001' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,043 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,043 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,043 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,043 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,043 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,043 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,043 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: PaginationParamsCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,043 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-PAGINATION-001' (分页参数检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,043 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,043 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,043 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] +2025-07-11 18:57:45,043 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,043 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:45,043 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] +2025-07-11 18:57:45,043 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,043 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,043 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,043 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,044 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-DMS-PAGINATION-001' 执行失败。 +2025-07-11 18:57:45,044 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 执行完毕,状态: 失败 +2025-07-11 18:57:45,044 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-004' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,044 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,044 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,044 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,044 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,044 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,044 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,044 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourceCollectionPluralCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,044 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-004' (资源集合复数命名检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,044 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,044 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,044 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] +2025-07-11 18:57:45,044 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,044 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:45,044 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] +2025-07-11 18:57:45,044 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,044 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,044 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,044 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,044 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-004' 执行成功。 +2025-07-11 18:57:45,044 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-004' 执行完毕,状态: 通过 +2025-07-11 18:57:45,044 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-002' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,044 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourcePathNounCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-002' (资源路径名词检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-002' 执行成功。 +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-002' 执行完毕,状态: 通过 +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-CORE-SCHEMA-001' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaFormatCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-CORE-SCHEMA-001' (DMS核心存储服务API响应格式检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,045 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] +2025-07-11 18:57:45,046 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,046 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:45,046 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] +2025-07-11 18:57:45,046 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,046 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,046 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,046 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,046 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行成功。 +2025-07-11 18:57:45,046 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行完毕,状态: 通过 +2025-07-11 18:57:45,046 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-001' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,046 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,046 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,046 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,046 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,046 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,046 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,046 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,046 - testcase.TC-CORE-FUNC-001 - INFO - 测试用例 'TC-CORE-FUNC-001' 已为端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 +2025-07-11 18:57:45,046 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-001' (返回体JSON Schema验证) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,046 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,046 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,046 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] +2025-07-11 18:57:45,046 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,046 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:45,046 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] +2025-07-11 18:57:45,046 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,046 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,046 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,046 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,047 - ddms_compliance_suite.utils.schema_provider - DEBUG - 尝试从API规范中为状态码 200 查找Schema。 +2025-07-11 18:57:45,047 - testcase.TC-CORE-FUNC-001 - INFO - 将根据从API规范中获取的schema验证响应体。 +2025-07-11 18:57:45,047 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-001' 执行成功。 +2025-07-11 18:57:45,047 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-001' 执行完毕,状态: 通过 +2025-07-11 18:57:45,047 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-003' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,047 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,047 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,047 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,047 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,047 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,047 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,047 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TimeFormatCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,047 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-003' (时间字段ISO 8601格式检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,047 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,047 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,047 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] +2025-07-11 18:57:45,047 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,047 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:45,047 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] +2025-07-11 18:57:45,047 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,047 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,047 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,047 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,048 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-003' 执行成功。 +2025-07-11 18:57:45,048 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-003' 执行完毕,状态: 通过 +2025-07-11 18:57:45,048 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-URL-VERSION-001' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,048 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,048 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,048 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,048 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,048 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,048 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,048 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: URLVersionCheckCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,048 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-URL-VERSION-001' (DMS API URL版本号检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,048 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,048 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,048 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] +2025-07-11 18:57:45,048 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,048 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:45,048 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] +2025-07-11 18:57:45,048 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,048 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,048 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,048 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,049 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-URL-VERSION-001' 执行成功。 +2025-07-11 18:57:45,049 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 执行完毕,状态: 通过 +2025-07-11 18:57:45,049 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-002' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,049 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,049 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,049 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,049 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,049 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,049 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,049 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: FlexibleSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,049 - testcase.TC-CORE-FUNC-002 - INFO - 测试用例 'TC-CORE-FUNC-002' 已为端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 +2025-07-11 18:57:45,049 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-002' (灵活的返回体JSON Schema验证) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,049 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,049 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,049 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] +2025-07-11 18:57:45,049 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,049 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:45,049 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] +2025-07-11 18:57:45,049 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,049 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,049 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,049 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,050 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-002' 执行成功。 +2025-07-11 18:57:45,050 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-002' 执行完毕,状态: 通过 +2025-07-11 18:57:45,050 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-001' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,050 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,050 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,050 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,050 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,050 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,050 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,050 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: HTTPSMandatoryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,050 - testcase.TC-SECURITY-001 - INFO - 测试用例 'TC-SECURITY-001' 已为端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 +2025-07-11 18:57:45,050 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-001' (HTTPS 协议强制性检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,050 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,050 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,050 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] +2025-07-11 18:57:45,050 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,050 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:45,050 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] +2025-07-11 18:57:45,050 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,050 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,050 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,050 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,050 - testcase.TC-SECURITY-001 - WARNING - 原始URL 'http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 不是HTTPS。跳过此测试用例的URL修改。 +2025-07-11 18:57:45,051 - testcase.TC-SECURITY-001 - ERROR - 安全漏洞:API允许通过HTTP成功响应 (200)。 +2025-07-11 18:57:45,051 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-SECURITY-001' 执行失败。 +2025-07-11 18:57:45,051 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-001' 执行完毕,状态: 失败 +2025-07-11 18:57:45,051 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-QUERY' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,051 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,051 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,051 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,051 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,051 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,051 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,051 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchQueryParamCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,051 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' initialized for endpoint: DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,051 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Initializing: Looking for a simple type query parameter for type mismatch test. +2025-07-11 18:57:45,051 - testcase.TC-ERROR-4001-QUERY - INFO - _find_first_simple_type_parameter: No suitable simple type field found for query parameters. +2025-07-11 18:57:45,051 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No suitable simple type query parameter found for type mismatch test. +2025-07-11 18:57:45,051 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-QUERY' (查询参数类型不匹配检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,051 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,051 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,051 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] +2025-07-11 18:57:45,051 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,051 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:45,051 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] +2025-07-11 18:57:45,051 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,051 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,051 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No target field or original type identified for query param type mismatch. Skipping query param modification. +2025-07-11 18:57:45,051 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:45,051 - testcase.TC-ERROR-4001-QUERY - DEBUG - TC-ERROR-4001-QUERY is focused on query parameters, generate_request_body will not modify the body. +2025-07-11 18:57:45,051 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,051 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,051 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,051 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' did not modify the URL via modify_request_url hook. +2025-07-11 18:57:45,051 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,051 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:45,051 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_body, body type: responses: {'200': {'description': 'Success', 'content': {'application/json': {'schema': {'type': 'object', 'properties': {'code': {'type': 'integer'}, 'message': {'type': 'string'}, 'data': {'type': 'boolean'}}}}}}} -2025-07-11 17:53:11,542 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-DMS-PAGINATION-001' 执行失败。 -2025-07-11 17:53:11,542 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-PAGINATION-001' 执行完毕,状态: 失败 -2025-07-11 17:53:11,542 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-004' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,542 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,542 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,542 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,542 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,542 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,542 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,542 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourceCollectionPluralCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,542 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-004' (资源集合复数命名检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,542 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,542 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,542 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,542 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,542 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,542 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,542 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,542 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,542 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,542 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,543 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-004' 执行成功。 -2025-07-11 17:53:11,543 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-004' 执行完毕,状态: 通过 -2025-07-11 17:53:11,543 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-002' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,543 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,543 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,543 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,543 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,543 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,543 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,543 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResourcePathNounCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,543 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-002' (资源路径名词检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,543 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,543 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,543 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,543 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,543 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,543 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,543 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,543 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,543 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,543 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,544 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-002' 执行成功。 -2025-07-11 17:53:11,544 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-002' 执行完毕,状态: 通过 -2025-07-11 17:53:11,544 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-CORE-SCHEMA-001' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,544 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,544 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,544 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,544 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,544 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,544 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,544 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaFormatCheck 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,544 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-CORE-SCHEMA-001' (DMS核心存储服务API响应格式检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,544 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,544 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,544 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,544 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,544 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,545 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,545 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,545 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,545 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,545 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,545 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行成功。 -2025-07-11 17:53:11,545 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-CORE-SCHEMA-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,545 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-001' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,545 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,545 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,545 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,545 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,545 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,545 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,545 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: ResponseSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,545 - testcase.TC-CORE-FUNC-001 - INFO - 测试用例 'TC-CORE-FUNC-001' 已为端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 -2025-07-11 17:53:11,545 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-001' (返回体JSON Schema验证) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,545 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,545 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,545 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,546 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,546 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,546 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,546 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,546 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,546 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,546 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,546 - ddms_compliance_suite.utils.schema_provider - DEBUG - 尝试从API规范中为状态码 200 查找Schema。 -2025-07-11 17:53:11,546 - testcase.TC-CORE-FUNC-001 - INFO - 将根据从API规范中获取的schema验证响应体。 -2025-07-11 17:53:11,546 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-001' 执行成功。 -2025-07-11 17:53:11,546 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,546 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-RESTful-003' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,546 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,546 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,546 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,546 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,547 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,547 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,547 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TimeFormatCheckTestCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,547 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-RESTful-003' (时间字段ISO 8601格式检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,547 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,547 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,547 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,547 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,547 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,547 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,547 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,547 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,547 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,547 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,547 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-RESTful-003' 执行成功。 -2025-07-11 17:53:11,547 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-RESTful-003' 执行完毕,状态: 通过 -2025-07-11 17:53:11,547 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-DMS-URL-VERSION-001' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,547 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,547 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,547 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,547 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,548 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,548 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,548 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: URLVersionCheckCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,548 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-DMS-URL-VERSION-001' (DMS API URL版本号检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,548 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,548 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,548 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,548 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,548 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,548 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,548 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,548 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,548 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,548 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,548 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-DMS-URL-VERSION-001' 执行成功。 -2025-07-11 17:53:11,548 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-DMS-URL-VERSION-001' 执行完毕,状态: 通过 -2025-07-11 17:53:11,548 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-CORE-FUNC-002' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,548 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,548 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,548 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,548 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,548 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,549 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,549 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: FlexibleSchemaValidationCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,549 - testcase.TC-CORE-FUNC-002 - INFO - 测试用例 'TC-CORE-FUNC-002' 已为端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 -2025-07-11 17:53:11,549 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-CORE-FUNC-002' (灵活的返回体JSON Schema验证) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,549 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,549 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,549 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,549 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,549 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,549 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,549 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,549 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,549 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,549 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,549 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-CORE-FUNC-002' 执行成功。 -2025-07-11 17:53:11,549 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-CORE-FUNC-002' 执行完毕,状态: 通过 -2025-07-11 17:53:11,549 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-SECURITY-001' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,549 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,549 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,549 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,549 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,549 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,550 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,550 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: HTTPSMandatoryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,550 - testcase.TC-SECURITY-001 - INFO - 测试用例 'TC-SECURITY-001' 已为端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。 -2025-07-11 17:53:11,550 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-SECURITY-001' (HTTPS 协议强制性检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,550 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,550 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,550 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,550 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,550 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,550 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,550 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,550 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,550 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,550 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,550 - testcase.TC-SECURITY-001 - WARNING - 原始URL 'http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 不是HTTPS。跳过此测试用例的URL修改。 -2025-07-11 17:53:11,550 - testcase.TC-SECURITY-001 - ERROR - 安全漏洞:API允许通过HTTP成功响应 (200)。 -2025-07-11 17:53:11,550 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-SECURITY-001' 执行失败。 -2025-07-11 17:53:11,550 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-SECURITY-001' 执行完毕,状态: 失败 -2025-07-11 17:53:11,550 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-QUERY' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,550 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,550 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,550 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,550 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,550 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,550 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,550 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchQueryParamCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,551 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' initialized for endpoint: DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,551 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Initializing: Looking for a simple type query parameter for type mismatch test. -2025-07-11 17:53:11,551 - testcase.TC-ERROR-4001-QUERY - INFO - _find_first_simple_type_parameter: No suitable simple type field found for query parameters. -2025-07-11 17:53:11,551 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No suitable simple type query parameter found for type mismatch test. -2025-07-11 17:53:11,551 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-QUERY' (查询参数类型不匹配检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,551 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,551 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,551 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,551 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,551 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,551 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,551 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,551 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,551 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] No target field or original type identified for query param type mismatch. Skipping query param modification. -2025-07-11 17:53:11,551 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,551 - testcase.TC-ERROR-4001-QUERY - DEBUG - TC-ERROR-4001-QUERY is focused on query parameters, generate_request_body will not modify the body. -2025-07-11 17:53:11,551 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,551 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,551 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,551 - testcase.TC-ERROR-4001-QUERY - DEBUG - Test case 'TC-ERROR-4001-QUERY' did not modify the URL via modify_request_url hook. -2025-07-11 17:53:11,551 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,551 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,551 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: validate_request_body, body type: DEBUG: curlify generated command (raw): curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report DEBUG: curlify generated command (repr): 'curl -X DELETE -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 65\' -d \'{"version": "1.0.0", "data": [{"description": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' DEBUG: curlify generated command (raw): curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report @@ -5110,234 +5129,251 @@ DEBUG: curlify generated command (repr): 'curl -X DELETE -H \'User-Agent: python DEBUG: curlify generated command (raw): curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report DEBUG: curlify generated command (repr): 'curl -X DELETE -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 65\' -d \'{"version": "1.0.0", "data": [{"description": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' DEBUG: curlify generated command (raw): curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,552 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Skipped type mismatch (query) validation: No target query parameter was identified. -2025-07-11 17:53:11,552 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: check_performance, elapsed: 0.0009348392486572266 -2025-07-11 17:53:11,552 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4001-QUERY' 执行成功。 -2025-07-11 17:53:11,552 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 执行完毕,状态: 通过 -2025-07-11 17:53:11,552 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-BODY' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,552 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,552 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,552 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,552 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,552 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,552 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,552 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,552 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' initialized for endpoint: DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,552 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Initializing: Looking for a simple type field in request body for type mismatch test. -2025-07-11 17:53:11,552 - testcase.TC-ERROR-4001-BODY - DEBUG - Found request body schema in content type: application/json -2025-07-11 17:53:11,552 - testcase.TC-ERROR-4001-BODY - DEBUG - _find_simple_type_field_in_schema: Searching for simple type field in 'request body' schema... -2025-07-11 17:53:11,552 - testcase.TC-ERROR-4001-BODY - INFO - Found simple type field: Path=version, Type=string -2025-07-11 17:53:11,552 - testcase.TC-ERROR-4001-BODY - INFO - _find_simple_type_field_in_schema: Found simple type field in 'request body': Path=version, Type=string -2025-07-11 17:53:11,552 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Target field for type mismatch (body): version, Original Type: string -2025-07-11 17:53:11,552 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-BODY' (请求体字段类型不匹配检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,552 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,552 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,552 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,552 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,552 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,552 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,552 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,552 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,552 - testcase.TC-ERROR-4001-BODY - DEBUG - TC-ERROR-4001-BODY is focused on request body, generate_query_params will not modify query parameters. -2025-07-11 17:53:11,552 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,552 - testcase.TC-ERROR-4001-BODY - DEBUG - [TC-ERROR-4001-BODY] Preparing to modify request body for type mismatch. Target path: ['version'], Original type: string -2025-07-11 17:53:11,552 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Generated mismatched value '12345' for original type 'string' at path 'version'. -2025-07-11 17:53:11,552 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 在路径 version (键 'version') 处设置值为 '12345' -2025-07-11 17:53:11,552 - testcase.TC-ERROR-4001-BODY - DEBUG - [TC-ERROR-4001-BODY] Successfully set mismatched value at path using util_set_value_at_path. -2025-07-11 17:53:11,552 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,552 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,552 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,552 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' did not modify the URL via modify_request_url hook. -2025-07-11 17:53:11,552 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,552 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,552 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_body, body type: -2025-07-11 17:53:11,553 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: check_performance, elapsed: 0.0008347034454345703 -2025-07-11 17:53:11,553 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4001-BODY' 执行失败。 -2025-07-11 17:53:11,553 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 执行完毕,状态: 失败 -2025-07-11 17:53:11,553 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4002' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,553 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,553 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,553 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,553 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,553 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,553 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,553 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: NumberOutOfRangeCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,553 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' initialized for endpoint: DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,553 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Searching for a ranged numeric field... -2025-07-11 17:53:11,553 - testcase.TC-ERROR-4002 - DEBUG - Found request body schema in content type: application/json -2025-07-11 17:53:11,553 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in request body. -2025-07-11 17:53:11,553 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in query parameters. -2025-07-11 17:53:11,553 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in path parameters. -2025-07-11 17:53:11,553 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in header parameters. -2025-07-11 17:53:11,553 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] No ranged numeric field found in any location. -2025-07-11 17:53:11,553 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] No suitable ranged numeric field found for this endpoint. -2025-07-11 17:53:11,553 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4002' (数值参数越界检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,553 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,553 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,553 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,553 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,553 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,553 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,553 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,553 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,553 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,553 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,553 - testcase.TC-ERROR-4002 - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,553 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' did not modify the URL via modify_request_url hook. -2025-07-11 17:53:11,553 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,553 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] -2025-07-11 17:53:11,553 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_body, body type: -2025-07-11 17:53:11,554 - testcase.TC-ERROR-4002 - DEBUG - Hook: check_performance, elapsed: 0.0007030963897705078 -2025-07-11 17:53:11,554 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4002' 执行成功。 -2025-07-11 17:53:11,554 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4002' 执行完毕,状态: 通过 -2025-07-11 17:53:11,554 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4006' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,554 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,554 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,554 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,554 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,554 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,554 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,554 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: InvalidEnumValueCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,554 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] Searching for a field with enum constraints... -2025-07-11 17:53:11,554 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No field with enum constraints found in any location. -2025-07-11 17:53:11,554 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No suitable enum field found for this endpoint. -2025-07-11 17:53:11,554 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4006' (非法枚举值检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,554 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,554 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,554 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,554 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,554 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,554 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,554 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,554 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,554 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,554 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,555 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4006' 执行成功。 -2025-07-11 17:53:11,555 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4006' 执行完毕,状态: 通过 -2025-07-11 17:53:11,555 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-BODY' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,555 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,555 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,555 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,555 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,555 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,555 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,555 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,555 - ddms_compliance_suite.utils.schema_utils - DEBUG - [Util] 递归查找路径: [], 当前层级必填字段: ['data'], 属性: ['version', 'data'] -2025-07-11 17:53:11,555 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 策略1: 在路径 root 找到可直接移除的必填字段: 'data' -2025-07-11 17:53:11,555 - testcase.TC-ERROR-4003-BODY - INFO - Found a removable field path in 'request body' schema: 'data' -2025-07-11 17:53:11,555 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-BODY' (缺失必填请求体字段检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,555 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,555 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,555 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,555 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,555 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,555 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,555 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,555 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,555 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 从路径 'data' 成功移除字段 'data' (原值: '[{'description': 'example_string'}]')。 -2025-07-11 17:53:11,555 - testcase.TC-ERROR-4003-BODY - INFO - 为进行必填字段缺失测试,已通过工具方法从请求体中移除字段路径 'data'。 -2025-07-11 17:53:11,555 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,555 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,556 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4003-BODY' 执行失败。 -2025-07-11 17:53:11,556 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 执行完毕,状态: 失败 -2025-07-11 17:53:11,556 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-QUERY' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,556 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. -2025-07-11 17:53:11,556 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] -2025-07-11 17:53:11,556 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... -2025-07-11 17:53:11,556 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... -2025-07-11 17:53:11,556 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... -2025-07-11 17:53:11,556 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 -2025-07-11 17:53:11,556 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldQueryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) -2025-07-11 17:53:11,556 - testcase.TC-ERROR-4003-QUERY - INFO - No required 'query' parameter found in endpoint_spec. -2025-07-11 17:53:11,556 - testcase.TC-ERROR-4003-QUERY - INFO - 测试用例 TC-ERROR-4003-QUERY (缺失必填查询参数检查) 已针对端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。Target param to remove: None -2025-07-11 17:53:11,556 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-QUERY' (缺失必填查询参数检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' -2025-07-11 17:53:11,556 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,556 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json -2025-07-11 17:53:11,556 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] -2025-07-11 17:53:11,556 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 -2025-07-11 17:53:11,556 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 -2025-07-11 17:53:11,556 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] -2025-07-11 17:53:11,556 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string -2025-07-11 17:53:11,556 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) -2025-07-11 17:53:11,556 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} -2025-07-11 17:53:11,556 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report -2025-07-11 17:53:11,557 - testcase.TC-ERROR-4003-QUERY - INFO - 由于未识别到可移除的必填查询参数,跳过此测试用例。 -2025-07-11 17:53:11,557 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4003-QUERY' 执行成功。 -2025-07-11 17:53:11,557 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 执行完毕,状态: 通过 -2025-07-11 17:53:11,557 - root - INFO - strictness_level: TestSeverity.CRITICAL -2025-07-11 17:53:11,557 - root - INFO - strictness_level: TestSeverity.CRITICAL -2025-07-11 17:53:11,557 - root - INFO - relevant_failed_tcs: [] -2025-07-11 17:53:11,557 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 测试完成,最终状态: 通过 -2025-07-11 17:53:11,557 - __main__ - INFO - 开始执行API测试阶段 (Stages),目录: ./custom_stages -2025-07-11 17:53:11,557 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行API测试阶段 (Stages)... -2025-07-11 17:53:11,557 - ddms_compliance_suite.test_orchestrator - INFO - 发现了 1 个已定义的测试阶段: ['dms_crud_scenario_stage'] -2025-07-11 17:53:11,557 - ddms_compliance_suite.test_orchestrator - WARNING - 未知的解析规范类型: 。将阶段应用于整个规范 (api_group_name=None). -2025-07-11 17:53:11,557 - ddms_compliance_suite.test_orchestrator - INFO - 将针对 1 个API分组评估测试阶段: [None] -2025-07-11 17:53:11,557 - ddms_compliance_suite.test_orchestrator - INFO - 处理测试阶段定义: ID='dms_crud_scenario_stage', Name='DMS Full CRUD Scenario' -2025-07-11 17:53:11,557 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备阶段 'dms_crud_scenario_stage' 的上下文,针对API分组: 'Global' -2025-07-11 17:53:11,557 - ddms_compliance_suite.test_orchestrator - DEBUG - For Global context, selected 10 endpoint objects. -2025-07-11 17:53:11,557 - ddms_compliance_suite.test_orchestrator - DEBUG - 为阶段 'dms_crud_scenario_stage' 和分组 'Global' 实例化。API对象数量: 10. 元数据: {'name': 'Global (所有API)', 'description': '适用于规范中的所有API'} -2025-07-11 17:53:11,557 - ddms_compliance_suite.test_orchestrator - DEBUG - 检查阶段 'dms_crud_scenario_stage' 是否适用于API分组 'Global'... -2025-07-11 17:53:11,557 - ddms_compliance_suite.stage_framework.DmsCrudScenarioStage - INFO - Found complete CRUD scenario for DMS resource: 'lujing_test' -2025-07-11 17:53:11,557 - ddms_compliance_suite.stage_framework.DmsCrudScenarioStage - INFO - Found complete CRUD scenario for DMS resource: 'wb_dr_pro_daily_report' -2025-07-11 17:53:11,557 - ddms_compliance_suite.test_orchestrator - INFO - 测试阶段 'dms_crud_scenario_stage' 适用于API分组 'Global'。开始执行... -2025-07-11 17:53:11,557 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试阶段: ID='dms_crud_scenario_stage', Name='DMS Full CRUD Scenario', API分组='Global' -2025-07-11 17:53:11,557 - ddms_compliance_suite.test_orchestrator - DEBUG - 调用 stage 'dms_crud_scenario_stage' 的 before_stage 钩子。初始上下文: {} -2025-07-11 17:53:11,557 - ddms_compliance_suite.stage_framework.DmsCrudScenarioStage - INFO - Setting up before_stage for scenario: ['create', 'list', 'read', 'update', 'delete'] -2025-07-11 17:53:11,557 - ddms_compliance_suite.test_orchestrator - INFO - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 开始执行. -2025-07-11 17:53:11,557 - ddms_compliance_suite.test_orchestrator - DEBUG - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 调用 before_step 钩子. 上下文: {'pk_name': 'description', 'pk_value': '7cca7504-2eaa-44e7-aad9-9e9c6b1ce671', 'current_payload': {'description': 'test-entry-from-scenario'}, 'update_payload': {'description': 'updated-test-entry-from-scenario'}, 'scenario_endpoints': {'create': , 'list': , 'read': , 'update': , 'delete': }} -2025-07-11 17:53:11,557 - ddms_compliance_suite.stage_framework.DmsCrudScenarioStage - DEBUG - Executing before_step for step 'Step 1: Create Resource' in stage 'dms_crud_scenario_stage' -2025-07-11 17:53:11,557 - ddms_compliance_suite.test_orchestrator - DEBUG - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 查找端点定义. Key='CREATE', Group='None' -2025-07-11 17:53:11,557 - ddms_compliance_suite.test_orchestrator - ERROR - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 步骤执行期间发生意外错误: name 'BaseEndpoint' is not defined -Traceback (most recent call last): - File "/Users/zpc01/workspace/zzlh/compliance/ddms_compliance_suite/test_orchestrator.py", line 2181, in execute_single_stage - if isinstance(api_op_spec, BaseEndpoint): - ^^^^^^^^^^^^ -NameError: name 'BaseEndpoint' is not defined. Did you mean: 'YAPIEndpoint'? -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - DEBUG - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 调用 after_step 钩子. -2025-07-11 17:53:11,559 - ddms_compliance_suite.stage_framework.DmsCrudScenarioStage - DEBUG - Executing after_step for step 'Step 1: Create Resource' in stage 'dms_crud_scenario_stage' -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 执行完毕. 状态: 执行错误, 耗时: 0.00s -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - WARNING - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 状态为 执行错误 且 continue_on_failure=False. 中止测试阶段 'dms_crud_scenario_stage'. -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - DEBUG - 调用 stage 'dms_crud_scenario_stage' 的 after_stage 钩子. 当前阶段结果状态: 执行错误 -2025-07-11 17:53:11,559 - ddms_compliance_suite.stage_framework.DmsCrudScenarioStage - INFO - Finished scenario 1/2 for this group. -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - 测试阶段 'dms_crud_scenario_stage' (API分组: 'Global') 执行完毕. 最终状态: 失败, 耗时: 0.00s -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - API Test Stage execution processed. Considered 1 (stage_definition x api_group) combinations. -2025-07-11 17:53:11,559 - __main__ - INFO - API测试阶段 (Stages) 执行完毕。 -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - -------------------- API Test Summary -------------------- -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - Start Time: 2025-07-11T17:53:11.349827 -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - End Time: 2025-07-11T17:53:11.559561 -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - Total Duration: 0.21 seconds -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - --- Endpoints --- -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - Total Endpoints Defined: 10 -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - Endpoints Tested: 10 -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - Passed: 8 -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - Failed: 2 -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - Error: 0 -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - Skipped: 0 -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - Partial Success: 0 -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - Success Rate: 80.00% -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - --- Test Cases --- -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - Total Test Cases Applicable: 200 -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - Total Test Cases Executed: 200 -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - Passed: 112 -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - Failed: 50 -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - Error: 0 -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - Skipped (within endpoints): 38 -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - Success Rate: 56.00% -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - --- Stages --- -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - Total Stages Defined: 1 -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - Total Stages Executed: 2 -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - Passed: 0 -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - Failed: 2 -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - Error: 0 -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - Skipped: 0 -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - Success Rate: 0.00% -2025-07-11 17:53:11,559 - ddms_compliance_suite.test_orchestrator - INFO - -------------------------------------------------------- -2025-07-11 17:53:11,562 - __main__ - INFO - 测试结果已保存为JSON: test_reports/2025-07-11_17-53-11/summary.json -2025-07-11 17:53:11,562 - __main__ - INFO - 开始生成PDF报告: test_reports/2025-07-11_17-53-11/report_cn.pdf -2025-07-11 17:53:11,704 - __main__ - INFO - PDF报告已成功生成: test_reports/2025-07-11_17-53-11/report_cn.pdf -2025-07-11 17:53:11,708 - __main__ - INFO - API调用详情已保存为 Markdown: test_reports/2025-07-11_17-53-11/api_call_details.md -2025-07-11 17:53:11,708 - __main__ - INFO - 部分测试失败或出错,请检查报告。 +2025-07-11 18:57:45,052 - testcase.TC-ERROR-4001-QUERY - INFO - [TC-ERROR-4001-QUERY] Skipped type mismatch (query) validation: No target query parameter was identified. +2025-07-11 18:57:45,052 - testcase.TC-ERROR-4001-QUERY - DEBUG - Hook: check_performance, elapsed: 0.0006961822509765625 +2025-07-11 18:57:45,052 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4001-QUERY' 执行成功。 +2025-07-11 18:57:45,052 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-QUERY' 执行完毕,状态: 通过 +2025-07-11 18:57:45,052 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4001-BODY' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,052 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,052 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,052 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,052 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,052 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,052 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,052 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: TypeMismatchBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,052 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' initialized for endpoint: DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,052 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Initializing: Looking for a simple type field in request body for type mismatch test. +2025-07-11 18:57:45,052 - testcase.TC-ERROR-4001-BODY - DEBUG - Found request body schema in content type: application/json +2025-07-11 18:57:45,052 - testcase.TC-ERROR-4001-BODY - DEBUG - _find_simple_type_field_in_schema: Searching for simple type field in 'request body' schema... +2025-07-11 18:57:45,052 - testcase.TC-ERROR-4001-BODY - INFO - Found simple type field: Path=version, Type=string +2025-07-11 18:57:45,052 - testcase.TC-ERROR-4001-BODY - INFO - _find_simple_type_field_in_schema: Found simple type field in 'request body': Path=version, Type=string +2025-07-11 18:57:45,052 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Target field for type mismatch (body): version, Original Type: string +2025-07-11 18:57:45,052 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4001-BODY' (请求体字段类型不匹配检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,052 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,052 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,052 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] +2025-07-11 18:57:45,052 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,052 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:45,052 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] +2025-07-11 18:57:45,052 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,052 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,052 - testcase.TC-ERROR-4001-BODY - DEBUG - TC-ERROR-4001-BODY is focused on request body, generate_query_params will not modify query parameters. +2025-07-11 18:57:45,052 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: generate_headers, current keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:45,052 - testcase.TC-ERROR-4001-BODY - DEBUG - [TC-ERROR-4001-BODY] Preparing to modify request body for type mismatch. Target path: ['version'], Original type: string +2025-07-11 18:57:45,052 - testcase.TC-ERROR-4001-BODY - INFO - [TC-ERROR-4001-BODY] Generated mismatched value '12345' for original type 'string' at path 'version'. +2025-07-11 18:57:45,052 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 在路径 version (键 'version') 处设置值为 '12345' +2025-07-11 18:57:45,052 - testcase.TC-ERROR-4001-BODY - DEBUG - [TC-ERROR-4001-BODY] Successfully set mismatched value at path using util_set_value_at_path. +2025-07-11 18:57:45,052 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,052 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,052 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,052 - testcase.TC-ERROR-4001-BODY - DEBUG - Test case 'TC-ERROR-4001-BODY' did not modify the URL via modify_request_url hook. +2025-07-11 18:57:45,052 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,052 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:45,052 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: validate_request_body, body type: +2025-07-11 18:57:45,053 - testcase.TC-ERROR-4001-BODY - DEBUG - Hook: check_performance, elapsed: 0.0006220340728759766 +2025-07-11 18:57:45,053 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4001-BODY' 执行失败。 +2025-07-11 18:57:45,053 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4001-BODY' 执行完毕,状态: 失败 +2025-07-11 18:57:45,053 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4002' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,053 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,053 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,053 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,053 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,053 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,053 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,053 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: NumberOutOfRangeCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,053 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' initialized for endpoint: DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,053 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] Searching for a ranged numeric field... +2025-07-11 18:57:45,053 - testcase.TC-ERROR-4002 - DEBUG - Found request body schema in content type: application/json +2025-07-11 18:57:45,053 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in request body. +2025-07-11 18:57:45,053 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in query parameters. +2025-07-11 18:57:45,053 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in path parameters. +2025-07-11 18:57:45,053 - testcase.TC-ERROR-4002 - DEBUG - [TC-ERROR-4002] Checking for ranged numeric field in header parameters. +2025-07-11 18:57:45,053 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] No ranged numeric field found in any location. +2025-07-11 18:57:45,053 - testcase.TC-ERROR-4002 - INFO - [TC-ERROR-4002] No suitable ranged numeric field found for this endpoint. +2025-07-11 18:57:45,053 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4002' (数值参数越界检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,053 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,053 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,053 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] +2025-07-11 18:57:45,053 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,053 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:45,053 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] +2025-07-11 18:57:45,053 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,053 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,053 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,053 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,053 - testcase.TC-ERROR-4002 - DEBUG - Hook: modify_request_url, original URL: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,053 - testcase.TC-ERROR-4002 - DEBUG - Test case 'TC-ERROR-4002' did not modify the URL via modify_request_url hook. +2025-07-11 18:57:45,053 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_url, url: http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,053 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_headers, header keys: ['Content-Type', 'Accept'] +2025-07-11 18:57:45,053 - testcase.TC-ERROR-4002 - DEBUG - Hook: validate_request_body, body type: +2025-07-11 18:57:45,054 - testcase.TC-ERROR-4002 - DEBUG - Hook: check_performance, elapsed: 0.0006330013275146484 +2025-07-11 18:57:45,054 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4002' 执行成功。 +2025-07-11 18:57:45,054 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4002' 执行完毕,状态: 通过 +2025-07-11 18:57:45,054 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4006' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,054 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,054 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,054 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,054 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,054 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,054 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,054 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: InvalidEnumValueCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,054 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] Searching for a field with enum constraints... +2025-07-11 18:57:45,054 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No field with enum constraints found in any location. +2025-07-11 18:57:45,054 - testcase.TC-ERROR-4006 - INFO - [TC-ERROR-4006] No suitable enum field found for this endpoint. +2025-07-11 18:57:45,054 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4006' (非法枚举值检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,054 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,054 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,054 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] +2025-07-11 18:57:45,054 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,054 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:45,054 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] +2025-07-11 18:57:45,054 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,054 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,054 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,054 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,055 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4006' 执行成功。 +2025-07-11 18:57:45,055 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4006' 执行完毕,状态: 通过 +2025-07-11 18:57:45,055 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-BODY' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,055 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,055 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,055 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,055 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,055 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,055 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,055 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldBodyCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,055 - ddms_compliance_suite.utils.schema_utils - DEBUG - [Util] 递归查找路径: [], 当前层级必填字段: ['data'], 属性: ['version', 'data'] +2025-07-11 18:57:45,055 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 策略1: 在路径 root 找到可直接移除的必填字段: 'data' +2025-07-11 18:57:45,055 - testcase.TC-ERROR-4003-BODY - INFO - Found a removable field path in 'request body' schema: 'data' +2025-07-11 18:57:45,055 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-BODY' (缺失必填请求体字段检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,055 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,055 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,055 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] +2025-07-11 18:57:45,055 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,055 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:45,055 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] +2025-07-11 18:57:45,055 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,055 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,055 - ddms_compliance_suite.utils.schema_utils - INFO - [Util] 从路径 'data' 成功移除字段 'data' (原值: '[{'description': 'example_string'}]')。 +2025-07-11 18:57:45,055 - testcase.TC-ERROR-4003-BODY - INFO - 为进行必填字段缺失测试,已通过工具方法从请求体中移除字段路径 'data'。 +2025-07-11 18:57:45,055 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,055 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,056 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-ERROR-4003-BODY' 执行失败。 +2025-07-11 18:57:45,056 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-BODY' 执行完毕,状态: 失败 +2025-07-11 18:57:45,056 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-ERROR-4003-QUERY' for 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,056 - ddms_compliance_suite.test_orchestrator - DEBUG - Successfully converted/retrieved global_api_spec (type: ) to dict using .spec attribute. +2025-07-11 18:57:45,056 - ddms_compliance_suite.test_orchestrator - DEBUG - global_spec_dict keys for $ref resolution: ['dms_api_list'] +2025-07-11 18:57:45,056 - ddms_compliance_suite.test_orchestrator - DEBUG - 开始为 endpoint_spec_dict (来自 ) 中的 schemas 进行 $ref 解析... +2025-07-11 18:57:45,056 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 requestBody content 'application/json' 的 schema... +2025-07-11 18:57:45,056 - ddms_compliance_suite.test_orchestrator - DEBUG - 正在解析 responses '200' content 'application/json' 的 schema... +2025-07-11 18:57:45,056 - ddms_compliance_suite.test_orchestrator - INFO - Endpoint spec (来自 ) 中的 schemas $ref 解析完成。 +2025-07-11 18:57:45,056 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备实例化测试用例类: MissingRequiredFieldQueryCase 使用 endpoint_spec (keys: ['method', 'path', 'title', 'summary', 'description', 'operationId', 'tags', 'parameters', 'requestBody', 'responses', '_source_format', '_dms_raw_record', '_test_mode', '_global_api_spec_for_resolution']) 和 global_api_spec (keys: ['dms_api_list']) +2025-07-11 18:57:45,056 - testcase.TC-ERROR-4003-QUERY - INFO - No required 'query' parameter found in endpoint_spec. +2025-07-11 18:57:45,056 - testcase.TC-ERROR-4003-QUERY - INFO - 测试用例 TC-ERROR-4003-QUERY (缺失必填查询参数检查) 已针对端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 初始化。Target param to remove: None +2025-07-11 18:57:45,056 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试用例 'TC-ERROR-4003-QUERY' (缺失必填查询参数检查) for endpoint 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' +2025-07-11 18:57:45,056 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,056 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'delete_wb_dr_pro_daily_report': application/json +2025-07-11 18:57:45,056 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body). Properties: ['version', 'data'] +2025-07-11 18:57:45,056 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 使用 schema 中的 'example' 值 for (context: delete_wb_dr_pro_daily_report_body.version): 1.0.0 +2025-07-11 18:57:45,056 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 array 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data). Items schema: {'type': 'object', 'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}}, 'required': ['description']}, minItems: 1 +2025-07-11 18:57:45,056 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 object 类型数据 for (context: delete_wb_dr_pro_daily_report_body.data[0]). Properties: ['description'] +2025-07-11 18:57:45,056 - ddms_compliance_suite.test_orchestrator - DEBUG - [delete_wb_dr_pro_daily_report] 生成 string 类型数据 ('') for (context: delete_wb_dr_pro_daily_report_body.data[0].description): example_string +2025-07-11 18:57:45,056 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'delete_wb_dr_pro_daily_report' (type: ) +2025-07-11 18:57:45,056 - ddms_compliance_suite.test_orchestrator - DEBUG - Path parameters to be substituted: {} +2025-07-11 18:57:45,056 - ddms_compliance_suite.test_orchestrator - DEBUG - URL after path parameter substitution (before TC modify_request_url hook): http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +2025-07-11 18:57:45,057 - testcase.TC-ERROR-4003-QUERY - INFO - 由于未识别到可移除的必填查询参数,跳过此测试用例。 +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-ERROR-4003-QUERY' 执行成功。 +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-ERROR-4003-QUERY' 执行完毕,状态: 通过 +2025-07-11 18:57:45,057 - root - INFO - strictness_level: TestSeverity.CRITICAL +2025-07-11 18:57:45,057 - root - INFO - strictness_level: TestSeverity.CRITICAL +2025-07-11 18:57:45,057 - root - INFO - relevant_failed_tcs: [] +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report' 测试完成,最终状态: 通过 +2025-07-11 18:57:45,057 - __main__ - INFO - 开始执行API测试阶段 (Stages),目录: ./custom_stages +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行API测试阶段 (Stages)... +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - INFO - 发现了 1 个已定义的测试阶段: ['dms_crud_scenario_stage'] +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - WARNING - 未知的解析规范类型: 。将阶段应用于整个规范 (api_group_name=None). +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - INFO - 将针对 1 个API分组评估测试阶段: [None] +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - INFO - 处理测试阶段定义: ID='dms_crud_scenario_stage', Name='DMS Full CRUD Scenario' +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备阶段 'dms_crud_scenario_stage' 的上下文,针对API分组: 'Global' +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - DEBUG - For Global context, selected 10 endpoint objects. +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - DEBUG - 为阶段 'dms_crud_scenario_stage' 和分组 'Global' 实例化。API对象数量: 10. 元数据: {'name': 'Global (所有API)', 'description': '适用于规范中的所有API'} +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - DEBUG - 检查阶段 'dms_crud_scenario_stage' 是否适用于API分组 'Global'... +2025-07-11 18:57:45,057 - ddms_compliance_suite.stage_framework.DmsCrudScenarioStage - INFO - Found complete CRUD scenario for DMS resource: 'lujing_test' +2025-07-11 18:57:45,057 - ddms_compliance_suite.stage_framework.DmsCrudScenarioStage - INFO - Found complete CRUD scenario for DMS resource: 'wb_dr_pro_daily_report' +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - INFO - 测试阶段 'dms_crud_scenario_stage' 适用于API分组 'Global'。开始执行... +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - INFO - 开始执行测试阶段: ID='dms_crud_scenario_stage', Name='DMS Full CRUD Scenario', API分组='Global' +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - DEBUG - 调用 stage 'dms_crud_scenario_stage' 的 before_stage 钩子。初始上下文: {} +2025-07-11 18:57:45,057 - ddms_compliance_suite.stage_framework.DmsCrudScenarioStage - INFO - Setting up before_stage for scenario: ['create', 'list', 'read', 'update', 'delete'] +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - INFO - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 开始执行. +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - DEBUG - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 调用 before_step 钩子. 上下文: {'pk_name': 'description', 'pk_value': 'b54b5f8c-01ac-49c2-a846-2bdb8454b087', 'current_payload': {'description': 'test-entry-from-scenario'}, 'update_payload': {'description': 'updated-test-entry-from-scenario'}, 'scenario_endpoints': {'create': , 'list': , 'read': , 'update': , 'delete': }} +2025-07-11 18:57:45,057 - ddms_compliance_suite.stage_framework.DmsCrudScenarioStage - DEBUG - Executing before_step for step 'Step 1: Create Resource' in stage 'dms_crud_scenario_stage' +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - DEBUG - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 查找端点定义. Key='CREATE', Group='None' +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - INFO - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 已解析端点 'POST /api/dms/wb_ml/v1/lujing_test'. 准备请求数据. +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Content-Type for 'create_lujing_test': application/json +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial Accept header for 'create_lujing_test': application/json +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body). Properties: ['version', 'act', 'data'] +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.version): 1.0.0 +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 使用 schema 中的 'example' 值 for (context: create_lujing_test_body.act): 0 +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 array 类型数据 for (context: create_lujing_test_body.data). Items schema: {'properties': {'description': {'description': '一个简单的描述字段', 'title': '描述', 'type': 'string'}, 'lujing_test_id': {'description': '主键 for lujing_test', 'title': '主键', 'type': 'string'}, 'record_count': {'maximum': 10000, 'minimum': 0, 'title': '记录数', 'type': 'integer'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'title': '状态', 'type': 'string'}, 'update_date': {'format': 'date-time', 'title': '更新日期', 'type': 'string'}}, 'required': ['lujing_test_id', 'status'], 'title': '测试', 'type': 'object'}, minItems: 1 +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 object 类型数据 for (context: create_lujing_test_body.data[0]). Properties: ['description', 'lujing_test_id', 'record_count', 'status', 'update_date'] +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].description): example_string +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].lujing_test_id): example_string +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 number/integer 类型数据 for (context: create_lujing_test_body.data[0].record_count): 0 +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('') for (context: create_lujing_test_body.data[0].status): active +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - DEBUG - [create_lujing_test] 生成 string 类型数据 ('date-time') for (context: create_lujing_test_body.data[0].update_date): 2025-07-11T18:57:45.057534 +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - DEBUG - Initial request body generated for 'create_lujing_test' (type: ) +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - DEBUG - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 应用请求覆盖: {'body': {'data': ['{{stage_context.current_payload}}']}} +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - DEBUG - [阶段步骤 'Step 1: Create Resource'] 解析上下文路径: 'current_payload' 来自模板 '{{stage_context.current_payload}}' +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - INFO - [测试阶段步骤 'Step 1: Create Resource'] 从上下文解析到值 '{'description': 'test-entry-from-scenario'}...' (路径: 'current_payload') +2025-07-11 18:57:45,057 - ddms_compliance_suite.test_orchestrator - INFO - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 发送API请求: POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 收到响应. Status: 400. 验证中... +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - WARNING - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 预期状态码为 [200, 201], 实际为 400. +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - DEBUG - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 执行断言 'validate_response_is_true' +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - WARNING - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 断言 'validate_response_is_true' 失败: Expected response data to be true, but it was 'None'. +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - DEBUG - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 提取输出到上下文. Map: {} +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - DEBUG - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 调用 after_step 钩子. +2025-07-11 18:57:45,058 - ddms_compliance_suite.stage_framework.DmsCrudScenarioStage - DEBUG - Executing after_step for step 'Step 1: Create Resource' in stage 'dms_crud_scenario_stage' +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 执行完毕. 状态: 失败, 耗时: 0.00s +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - WARNING - Stage 'dms_crud_scenario_stage', Step 'Step 1: Create Resource': 状态为 失败 且 continue_on_failure=False. 中止测试阶段 'dms_crud_scenario_stage'. +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - DEBUG - 调用 stage 'dms_crud_scenario_stage' 的 after_stage 钩子. 当前阶段结果状态: 失败 +2025-07-11 18:57:45,058 - ddms_compliance_suite.stage_framework.DmsCrudScenarioStage - INFO - Finished scenario 1/2 for this group. +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - 测试阶段 'dms_crud_scenario_stage' (API分组: 'Global') 执行完毕. 最终状态: 失败, 耗时: 0.00s +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - API Test Stage execution processed. Considered 1 (stage_definition x api_group) combinations. +2025-07-11 18:57:45,058 - __main__ - INFO - API测试阶段 (Stages) 执行完毕。 +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - -------------------- API Test Summary -------------------- +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - Start Time: 2025-07-11T18:57:44.878856 +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - End Time: 2025-07-11T18:57:45.058583 +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - Total Duration: 0.18 seconds +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - --- Endpoints --- +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - Total Endpoints Defined: 10 +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - Endpoints Tested: 10 +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - Passed: 8 +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - Failed: 2 +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - Error: 0 +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - Skipped: 0 +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - Partial Success: 0 +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - Success Rate: 80.00% +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - --- Test Cases --- +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - Total Test Cases Applicable: 200 +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - Total Test Cases Executed: 200 +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - Passed: 112 +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - Failed: 50 +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - Error: 0 +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - Skipped (within endpoints): 38 +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - Success Rate: 56.00% +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - --- Stages --- +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - Total Stages Defined: 1 +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - Total Stages Executed: 2 +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - Passed: 0 +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - Failed: 2 +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - Error: 0 +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - Skipped: 0 +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - Success Rate: 0.00% +2025-07-11 18:57:45,058 - ddms_compliance_suite.test_orchestrator - INFO - -------------------------------------------------------- +2025-07-11 18:57:45,062 - __main__ - INFO - 测试结果已保存为JSON: test_reports/2025-07-11_18-57-44/summary.json +2025-07-11 18:57:45,062 - __main__ - INFO - 开始生成PDF报告: test_reports/2025-07-11_18-57-44/report_cn.pdf +2025-07-11 18:57:45,197 - __main__ - INFO - PDF报告已成功生成: test_reports/2025-07-11_18-57-44/report_cn.pdf +2025-07-11 18:57:45,201 - __main__ - INFO - API调用详情已保存为 Markdown: test_reports/2025-07-11_18-57-44/api_call_details.md +2025-07-11 18:57:45,201 - __main__ - INFO - 部分测试失败或出错,请检查报告。 DEBUG: curlify generated command (repr): 'curl -X DELETE -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 65\' -d \'{"version": "1.0.0", "data": [{"description": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' DEBUG: curlify generated command (raw): curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 63' -d '{"version": 12345, "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report DEBUG: curlify generated command (repr): 'curl -X DELETE -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 63\' -d \'{"version": 12345, "data": [{"description": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' @@ -5349,3 +5385,5 @@ DEBUG: curlify generated command (raw): curl -X DELETE -H 'User-Agent: python-re DEBUG: curlify generated command (repr): 'curl -X DELETE -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 20\' -d \'{"version": "1.0.0"}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' DEBUG: curlify generated command (raw): curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report DEBUG: curlify generated command (repr): 'curl -X DELETE -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 65\' -d \'{"version": "1.0.0", "data": [{"description": "example_string"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report' +DEBUG: curlify generated command (raw): curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 55' -d '{"data": [{"description": "test-entry-from-scenario"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +DEBUG: curlify generated command (repr): 'curl -H \'User-Agent: python-requests/2.32.3\' -H \'Accept-Encoding: gzip, deflate, br, zstd\' -H \'Accept: application/json\' -H \'Connection: keep-alive\' -H \'Content-Type: application/json\' -H \'Content-Length: 55\' -d \'{"data": [{"description": "test-entry-from-scenario"}]}\' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test' diff --git a/test_reports/2025-07-11_18-01-51/api_call_details.md b/test_reports/2025-07-11_18-01-51/api_call_details.md new file mode 100644 index 0000000..59197d9 --- /dev/null +++ b/test_reports/2025-07-11_18-01-51/api_call_details.md @@ -0,0 +1,8140 @@ +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.203437"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.203437" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0009s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.206751"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.206751" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0006s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.208115"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.208115" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0006s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.209605"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.209605" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.210708"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.210708" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.211952"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.211952" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.213145"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.213145" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.214290"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.214290" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.215306"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.215306" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.216345"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.216345" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.219172"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.219172" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.220335"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.220335" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.221488"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.221488" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.222530"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.222530" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.223593"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.223593" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 193' -d '{"version": 12345, "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.224686"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": 12345, + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.224686" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 199' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 10001, "status": "active", "update_date": "2025-07-11T18:01:51.226063"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 10001, + "status": "active", + "update_date": "2025-07-11T18:01:51.226063" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0006s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.227693"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.227693" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 30' -d '{"version": "1.0.0", "act": 0}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0 +} +``` +### Response Details +- **Status Code:** `400` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "102", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 400, + "message": "请求体格式错误,应为 {'data': [...]}" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.229797"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.229797" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.229797" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.229797" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.229797" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.229797" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.229797" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.229797" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.229797" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.229797" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.229797" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.229797" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.229797" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.229797" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0010s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.229797" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.229797" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0007s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.229797" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0007s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.229797" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0007s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.229797" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.229797" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.229797" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.229797" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `GET http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0/param_id` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0/param_id +``` +### Request Details +- **Method:** `GET` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0/param_id` +- **Headers:** +```json +{ + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `404` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "91", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "message": "资源 'lujing_test' with ID 'param_id' 未找到." +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.252633"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.252633" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0006s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.253839"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.253839" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.254906"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.254906" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.255925"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.255925" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.256775"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.256775" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.257699"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.257699" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.258764"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.258764" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.259719"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.259719" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.260710"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.260710" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.261660"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.261660" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.262634"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.262634" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.263722"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.263722" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.264737"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.264737" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.265823"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.265823" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.266836"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.266836" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 193' -d '{"version": 12345, "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.267996"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": 12345, + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.267996" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 199' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 10001, "status": "active", "update_date": "2025-07-11T18:01:51.269211"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 10001, + "status": "active", + "update_date": "2025-07-11T18:01:51.269211" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.270282"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.270282" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 30' -d '{"version": "1.0.0", "act": 0}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0 +} +``` +### Response Details +- **Status Code:** `400` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "102", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 400, + "message": "请求体格式错误,应为 {'data': [...]}" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.272228"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.272228" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 63' -d '{"version": 12345, "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": 12345, + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 20' -d '{"version": "1.0.0"}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0" +} +``` +### Response Details +- **Status Code:** `400` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "115", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 400, + "message": "请求体格式错误,应为 {'data': [{pk: value}, ...]}" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.291384", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.291384", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.292297", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.292297", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.293321", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.293321", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.294296", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.294296", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.295160", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.295160", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.296078", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.296078", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.296967", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.296967", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.297843", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.297843", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.298737", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.298737", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.299660", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.299660", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.300637", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.300637", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.301558", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.301558", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.302491", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.302491", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.303362", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.303362", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.304351", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.304351", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 204' -d '{"version": 12345, "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.305354", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": 12345, + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.305354", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 210' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 10001, "status": "active", "update_date": "2025-07-11T18:01:51.306412", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 10001, + "status": "active", + "update_date": "2025-07-11T18:01:51.306412", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.307369", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.307369", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 30' -d '{"version": "1.0.0", "act": 0}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0 +} +``` +### Response Details +- **Status Code:** `400` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "102", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 400, + "message": "请求体格式错误,应为 {'data': [...]}" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.309333", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.309333", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.309333", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.309333", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.309333", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.309333", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.309333", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.309333", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0031s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.309333", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.309333", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.309333", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0006s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.309333", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.309333", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.309333", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.309333", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.309333", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.309333", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.309333", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.309333", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.309333", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.309333", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.309333", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `GET http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/param_id` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/param_id +``` +### Request Details +- **Method:** `GET` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/param_id` +- **Headers:** +```json +{ + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `404` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "102", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "message": "资源 'wb_dr_pro_daily_report' with ID 'param_id' 未找到." +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.334564", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.334564", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.335719", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.335719", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.336765", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.336765", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.337787", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.337787", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.338722", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.338722", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.339719", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.339719", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.340712", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.340712", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.341658", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.341658", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.342565", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.342565", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.343525", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.343525", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.344532", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.344532", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.345416", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.345416", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.346389", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.346389", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.347307", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.347307", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.348279", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.348279", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 204' -d '{"version": 12345, "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.349336", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": 12345, + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.349336", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 210' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 10001, "status": "active", "update_date": "2025-07-11T18:01:51.350398", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 10001, + "status": "active", + "update_date": "2025-07-11T18:01:51.350398", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.351442", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.351442", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 30' -d '{"version": "1.0.0", "act": 0}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0 +} +``` +### Response Details +- **Status Code:** `400` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "102", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 400, + "message": "请求体格式错误,应为 {'data': [...]}" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:01:51.353469", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:01:51.353469", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0011s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 63' -d '{"version": 12345, "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": 12345, + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 20' -d '{"version": "1.0.0"}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0" +} +``` +### Response Details +- **Status Code:** `400` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "115", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 400, + "message": "请求体格式错误,应为 {'data': [{pk: value}, ...]}" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:01:51 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- \ No newline at end of file diff --git a/test_reports/2025-07-11_18-01-51/report_cn.pdf b/test_reports/2025-07-11_18-01-51/report_cn.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1a03598a8022f9cd1e12e8e80930a4a932cbea3c GIT binary patch literal 114394 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 z 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 literal 0 HcmV?d00001 diff --git a/test_reports/2025-07-11_18-01-51/summary.json b/test_reports/2025-07-11_18-01-51/summary.json new file mode 100644 index 0000000..2cd6948 --- /dev/null +++ b/test_reports/2025-07-11_18-01-51/summary.json @@ -0,0 +1,3373 @@ +{ + "start_time": "2025-07-11T18:01:51.189965", + "end_time": "2025-07-11T18:01:51.375546", + "duration_seconds": "0.19", + "overall_summary": { + "total_endpoints_defined": 10, + "endpoints_tested": 10, + "endpoints_passed": 8, + "endpoints_failed": 2, + "endpoints_error": 0, + "endpoints_skipped": 0, + "endpoints_partial_success": 0, + "endpoint_success_rate": "80.00%", + "total_test_cases_applicable": 200, + "total_test_cases_executed": 200, + "test_cases_passed": 112, + "test_cases_failed": 50, + "test_cases_error": 0, + "test_cases_skipped_in_endpoint": 38, + "test_case_success_rate": "56.00%", + "total_stages_defined": 1, + "total_stages_executed": 2, + "stages_passed": 0, + "stages_failed": 2, + "stages_error": 0, + "stages_skipped": 0, + "stage_success_rate": "0.00%" + }, + "errors": [], + "endpoint_results": [ + { + "endpoint_id": "POST /api/dms/wb_ml/v1/lujing_test", + "endpoint_name": "Create lujing_test", + "overall_status": "通过", + "duration_seconds": 0.027555, + "start_time": "2025-07-11T18:01:51.203022", + "end_time": "2025-07-11T18:01:51.230577", + "executed_test_cases": [ + { + "test_case_id": "TC-STATUS-001", + "test_case_name": "基本状态码 200 检查", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "响应状态码为 200,符合预期 200。", + "duration_seconds": 0.0032178749970626086, + "timestamp": "2025-07-11T18:01:51.206414", + "validation_points": [ + { + "passed": true, + "message": "响应状态码为 200,符合预期 200。" + } + ] + }, + { + "test_case_id": "TC-HEADER-001", + "test_case_name": "必需请求头Schema验证", + "test_case_severity": "HIGH", + "status": "失败", + "message": "缺少必需的请求头 X-Tenant-ID;缺少必需的请求头 X-Data-Domain;缺少必需的请求头 Authorization", + "duration_seconds": 0.001403832997311838, + "timestamp": "2025-07-11T18:01:51.207862", + "validation_points": [ + { + "header": "X-Tenant-ID", + "possible_names": [ + "X-Tenant-ID" + ], + "endpoint": "POST /api/dms/wb_ml/v1/lujing_test" + }, + { + "header": "X-Data-Domain", + "possible_names": [ + "X-Data-Domain" + ], + "endpoint": "POST /api/dms/wb_ml/v1/lujing_test" + }, + { + "header": "Authorization", + "possible_names": [ + "Authorization" + ], + "endpoint": "POST /api/dms/wb_ml/v1/lujing_test" + } + ] + }, + { + "test_case_id": "TC-SECURITY-002", + "test_case_name": "敏感字段加密检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "未在响应中找到需要检查的敏感字段。", + "duration_seconds": 0.0011797500046668574, + "timestamp": "2025-07-11T18:01:51.209077", + "validation_points": [ + { + "passed": true, + "message": "未在响应中找到需要检查的敏感字段。" + } + ] + }, + { + "test_case_id": "TC-LLM-COMPLIANCE-001", + "test_case_name": "LLM合规性综合检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "合规性标准列表为空,跳过LLM合规性检查。", + "duration_seconds": 0.0013407500082394108, + "timestamp": "2025-07-11T18:01:51.210452", + "validation_points": [ + { + "reason": "compliance_criteria.json is empty or contains an empty list." + } + ] + }, + { + "test_case_id": "TC-RESTful-001", + "test_case_name": "核心命名与结构规范检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。", + "duration_seconds": 0.001211082999361679, + "timestamp": "2025-07-11T18:01:51.211706", + "validation_points": [ + { + "passed": true, + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。" + } + ] + }, + { + "test_case_id": "TC-DMS-PAGINATION-001", + "test_case_name": "分页参数检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount", + "duration_seconds": 0.0010931659926427528, + "timestamp": "2025-07-11T18:01:51.212836", + "validation_points": [ + { + "path": "/api/dms/wb_ml/v1/lujing_test", + "method": "POST", + "missing_params": [ + "pageNo", + "pageSize", + "isSearchCount" + ], + "found_params": { + "pageNo": false, + "pageSize": false, + "isSearchCount": false + } + } + ] + }, + { + "test_case_id": "TC-RESTful-004", + "test_case_name": "资源集合复数命名检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "路径 '/api/dms/wb_ml/v1/lujing_test' 的最后一个路径分段 'lujing_test' 可能不是复数形式,建议对资源集合使用复数命名。", + "duration_seconds": 0.0011302079947199672, + "timestamp": "2025-07-11T18:01:51.214035", + "validation_points": [ + { + "path": "/api/dms/wb_ml/v1/lujing_test", + "segment": "lujing_test" + } + ] + }, + { + "test_case_id": "TC-RESTful-002", + "test_case_name": "资源路径名词检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "路径 '/api/dms/wb_ml/v1/lujing_test' 符合资源名词命名规范。", + "duration_seconds": 0.0009812920034164563, + "timestamp": "2025-07-11T18:01:51.215060", + "validation_points": [ + { + "passed": true, + "message": "路径 '/api/dms/wb_ml/v1/lujing_test' 符合资源名词命名规范。" + } + ] + }, + { + "test_case_id": "TC-DMS-CORE-SCHEMA-001", + "test_case_name": "DMS核心存储服务API响应格式检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}", + "duration_seconds": 0.0009785000002011657, + "timestamp": "2025-07-11T18:01:51.216080", + "validation_points": [ + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-001", + "test_case_name": "返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "针对 POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test (状态码 200) 的响应体 conforms to the JSON schema.", + "duration_seconds": 0.0027952080126851797, + "timestamp": "2025-07-11T18:01:51.218917", + "validation_points": [ + { + "passed": true, + "message": "针对 POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test (状态码 200) 的响应体 conforms to the JSON schema." + } + ] + }, + { + "test_case_id": "TC-RESTful-003", + "test_case_name": "时间字段ISO 8601格式检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。", + "duration_seconds": 0.0011146670003654435, + "timestamp": "2025-07-11T18:01:51.220077", + "validation_points": [ + { + "passed": true, + "message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。" + } + ] + }, + { + "test_case_id": "TC-DMS-URL-VERSION-001", + "test_case_name": "DMS API URL版本号检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "API路径 '/api/dms/wb_ml/v1/lujing_test' 正确以'/api/'开头;API路径 '/api/dms/wb_ml/v1/lujing_test' 包含版本标识: 'v1'", + "duration_seconds": 0.001100459005101584, + "timestamp": "2025-07-11T18:01:51.221221", + "validation_points": [ + { + "full_path": "/api/dms/wb_ml/v1/lujing_test" + }, + { + "pattern_matched": "/v\\d+/", + "version_string": "v1", + "full_path": "/api/dms/wb_ml/v1/lujing_test" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-002", + "test_case_name": "灵活的返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "", + "duration_seconds": 0.0009897919953800738, + "timestamp": "2025-07-11T18:01:51.222261", + "validation_points": [] + }, + { + "test_case_id": "TC-SECURITY-001", + "test_case_name": "HTTPS 协议强制性检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "API通过HTTP (http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test) 响应了成功的状态码 200,这违反了HTTPS强制策略。", + "duration_seconds": 0.0010139589867321774, + "timestamp": "2025-07-11T18:01:51.223323", + "validation_points": [ + { + "status_code": 200 + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-QUERY", + "test_case_name": "查询参数类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。", + "duration_seconds": 0.0010436669981572777, + "timestamp": "2025-07-11T18:01:51.224402", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-BODY", + "test_case_name": "请求体字段类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "当请求体字段 'version' 类型不匹配时, 业务错误码应为 -1,但实际为 0。", + "duration_seconds": 0.0010904999944614246, + "timestamp": "2025-07-11T18:01:51.225527", + "validation_points": [ + { + "expected_code": -1, + "actual_code": 0, + "response_body": { + "code": 0, + "data": true, + "message": "创建成功" + } + } + ] + }, + { + "test_case_id": "TC-ERROR-4002", + "test_case_name": "数值参数越界检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "当 body 字段 'record_count' 值为 10001 (超出范围: min=0, max=10000) 时, 业务错误码应为 -1,但实际为 0。", + "duration_seconds": 0.0014423750108107924, + "timestamp": "2025-07-11T18:01:51.227004", + "validation_points": [ + { + "expected_code": -1, + "actual_code": 0, + "response_body": { + "code": 0, + "data": true, + "message": "创建成功" + } + } + ] + }, + { + "test_case_id": "TC-ERROR-4006", + "test_case_name": "非法枚举值检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:未找到具有明确枚举值限制的字段。", + "duration_seconds": 0.0014260000025387853, + "timestamp": "2025-07-11T18:01:51.228466", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:未找到具有明确枚举值限制的字段。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-BODY", + "test_case_name": "缺失必填请求体字段检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "当移除必填请求体字段 'data' 时, API应返回状态码 200,但实际为 400。", + "duration_seconds": 0.0010238329996354878, + "timestamp": "2025-07-11T18:01:51.229531", + "validation_points": [ + { + "expected_status": 200, + "actual_status": 400 + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-QUERY", + "test_case_name": "缺失必填查询参数检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。", + "duration_seconds": 0.000975666000158526, + "timestamp": "2025-07-11T18:01:51.230551", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。" + } + ] + } + ] + }, + { + "endpoint_id": "POST /api/dms/wb_ml/v1/lujing_test/1.0.0", + "endpoint_name": "List lujing_test", + "overall_status": "通过", + "duration_seconds": 0.019893, + "start_time": "2025-07-11T18:01:51.230650", + "end_time": "2025-07-11T18:01:51.250543", + "executed_test_cases": [ + { + "test_case_id": "TC-STATUS-001", + "test_case_name": "基本状态码 200 检查", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "响应状态码为 200,符合预期 200。", + "duration_seconds": 0.0009309580054832622, + "timestamp": "2025-07-11T18:01:51.231824", + "validation_points": [ + { + "passed": true, + "message": "响应状态码为 200,符合预期 200。" + } + ] + }, + { + "test_case_id": "TC-HEADER-001", + "test_case_name": "必需请求头Schema验证", + "test_case_severity": "HIGH", + "status": "失败", + "message": "缺少必需的请求头 X-Tenant-ID;缺少必需的请求头 X-Data-Domain;缺少必需的请求头 Authorization", + "duration_seconds": 0.0010596670035738498, + "timestamp": "2025-07-11T18:01:51.232926", + "validation_points": [ + { + "header": "X-Tenant-ID", + "possible_names": [ + "X-Tenant-ID" + ], + "endpoint": "POST /api/dms/wb_ml/v1/lujing_test/1.0.0" + }, + { + "header": "X-Data-Domain", + "possible_names": [ + "X-Data-Domain" + ], + "endpoint": "POST /api/dms/wb_ml/v1/lujing_test/1.0.0" + }, + { + "header": "Authorization", + "possible_names": [ + "Authorization" + ], + "endpoint": "POST /api/dms/wb_ml/v1/lujing_test/1.0.0" + } + ] + }, + { + "test_case_id": "TC-SECURITY-002", + "test_case_name": "敏感字段加密检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "未在响应中找到需要检查的敏感字段。", + "duration_seconds": 0.0009361249976791441, + "timestamp": "2025-07-11T18:01:51.233894", + "validation_points": [ + { + "passed": true, + "message": "未在响应中找到需要检查的敏感字段。" + } + ] + }, + { + "test_case_id": "TC-LLM-COMPLIANCE-001", + "test_case_name": "LLM合规性综合检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "合规性标准列表为空,跳过LLM合规性检查。", + "duration_seconds": 0.000888082999153994, + "timestamp": "2025-07-11T18:01:51.234813", + "validation_points": [ + { + "reason": "compliance_criteria.json is empty or contains an empty list." + } + ] + }, + { + "test_case_id": "TC-RESTful-001", + "test_case_name": "核心命名与结构规范检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。;响应中包含一个主列表,但其键名 'data' 不是 'list'。", + "duration_seconds": 0.0008430830057477579, + "timestamp": "2025-07-11T18:01:51.235693", + "validation_points": [ + { + "passed": true, + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。" + }, + { + "keys": [ + "code", + "data", + "message" + ] + } + ] + }, + { + "test_case_id": "TC-DMS-PAGINATION-001", + "test_case_name": "分页参数检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount", + "duration_seconds": 0.0007470409909728914, + "timestamp": "2025-07-11T18:01:51.236470", + "validation_points": [ + { + "path": "/api/dms/wb_ml/v1/lujing_test/1.0.0", + "method": "POST", + "missing_params": [ + "pageNo", + "pageSize", + "isSearchCount" + ], + "found_params": { + "pageNo": false, + "pageSize": false, + "isSearchCount": false + } + } + ] + }, + { + "test_case_id": "TC-RESTful-004", + "test_case_name": "资源集合复数命名检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "路径 '/api/dms/wb_ml/v1/lujing_test/1.0.0' 的最后一个路径分段 '1.0.0' 可能不是复数形式,建议对资源集合使用复数命名。", + "duration_seconds": 0.0007732920057605952, + "timestamp": "2025-07-11T18:01:51.237280", + "validation_points": [ + { + "path": "/api/dms/wb_ml/v1/lujing_test/1.0.0", + "segment": "1.0.0" + } + ] + }, + { + "test_case_id": "TC-RESTful-002", + "test_case_name": "资源路径名词检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "路径 '/api/dms/wb_ml/v1/lujing_test/1.0.0' 符合资源名词命名规范。", + "duration_seconds": 0.0007587910076836124, + "timestamp": "2025-07-11T18:01:51.238080", + "validation_points": [ + { + "passed": true, + "message": "路径 '/api/dms/wb_ml/v1/lujing_test/1.0.0' 符合资源名词命名规范。" + } + ] + }, + { + "test_case_id": "TC-DMS-CORE-SCHEMA-001", + "test_case_name": "DMS核心存储服务API响应格式检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}", + "duration_seconds": 0.0007793749973643571, + "timestamp": "2025-07-11T18:01:51.238896", + "validation_points": [ + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-001", + "test_case_name": "返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "针对 POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 (状态码 200) 的响应体 conforms to the JSON schema.", + "duration_seconds": 0.000982333003776148, + "timestamp": "2025-07-11T18:01:51.239936", + "validation_points": [ + { + "passed": true, + "message": "针对 POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 (状态码 200) 的响应体 conforms to the JSON schema." + } + ] + }, + { + "test_case_id": "TC-RESTful-003", + "test_case_name": "时间字段ISO 8601格式检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "时间字段 'data[].update_date' (format: date-time) 缺少建议的 `pattern` (^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}([+-]\\d{2}:\\d{2}|Z)$) 来强制执行ISO 8601格式。", + "duration_seconds": 0.0007897500036051497, + "timestamp": "2025-07-11T18:01:51.240764", + "validation_points": [ + { + "field": "data[].update_date" + } + ] + }, + { + "test_case_id": "TC-DMS-URL-VERSION-001", + "test_case_name": "DMS API URL版本号检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "API路径 '/api/dms/wb_ml/v1/lujing_test/1.0.0' 正确以'/api/'开头;API路径 '/api/dms/wb_ml/v1/lujing_test/1.0.0' 包含版本标识: 'v1'", + "duration_seconds": 0.000782916002208367, + "timestamp": "2025-07-11T18:01:51.241584", + "validation_points": [ + { + "full_path": "/api/dms/wb_ml/v1/lujing_test/1.0.0" + }, + { + "pattern_matched": "/v\\d+/", + "version_string": "v1", + "full_path": "/api/dms/wb_ml/v1/lujing_test/1.0.0" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-002", + "test_case_name": "灵活的返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "", + "duration_seconds": 0.0015084999904502183, + "timestamp": "2025-07-11T18:01:51.243146", + "validation_points": [] + }, + { + "test_case_id": "TC-SECURITY-001", + "test_case_name": "HTTPS 协议强制性检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "API通过HTTP (http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0) 响应了成功的状态码 200,这违反了HTTPS强制策略。", + "duration_seconds": 0.0009054160036612302, + "timestamp": "2025-07-11T18:01:51.244093", + "validation_points": [ + { + "status_code": 200 + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-QUERY", + "test_case_name": "查询参数类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。", + "duration_seconds": 0.00124020800285507, + "timestamp": "2025-07-11T18:01:51.245367", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-BODY", + "test_case_name": "请求体字段类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:在请求体中未找到合适的字段来测试类型不匹配。", + "duration_seconds": 0.0012612080026883632, + "timestamp": "2025-07-11T18:01:51.246661", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在请求体中未找到合适的字段来测试类型不匹配。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4002", + "test_case_name": "数值参数越界检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:未找到具有明确范围限制的数值字段。", + "duration_seconds": 0.0012295410124352202, + "timestamp": "2025-07-11T18:01:51.247924", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:未找到具有明确范围限制的数值字段。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4006", + "test_case_name": "非法枚举值检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:未找到具有明确枚举值限制的字段。", + "duration_seconds": 0.0008931250049499795, + "timestamp": "2025-07-11T18:01:51.248851", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:未找到具有明确枚举值限制的字段。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-BODY", + "test_case_name": "缺失必填请求体字段检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "跳过测试:在API规范中未找到合适的必填请求体字段用于移除测试。", + "duration_seconds": 0.0007615829963469878, + "timestamp": "2025-07-11T18:01:51.249652", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在API规范中未找到合适的必填请求体字段用于移除测试。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-QUERY", + "test_case_name": "缺失必填查询参数检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。", + "duration_seconds": 0.0008291250123875216, + "timestamp": "2025-07-11T18:01:51.250513", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。" + } + ] + } + ] + }, + { + "endpoint_id": "GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}", + "endpoint_name": "Read lujing_test", + "overall_status": "失败", + "duration_seconds": 0.001588, + "start_time": "2025-07-11T18:01:51.250626", + "end_time": "2025-07-11T18:01:51.252214", + "executed_test_cases": [ + { + "test_case_id": "TC-STATUS-001", + "test_case_name": "基本状态码 200 检查", + "test_case_severity": "CRITICAL", + "status": "失败", + "message": "期望状态码 200,但收到 404。", + "duration_seconds": 0.0009235000034095719, + "timestamp": "2025-07-11T18:01:51.251728", + "validation_points": [ + { + "expected_status": 200, + "actual_status": 404, + "request_url": "http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0/param_id", + "response_body_sample": "{\"code\": 404, \"message\": \"资源 'lujing_test' with ID 'param_id' 未找到.\"}" + } + ] + }, + { + "test_case_id": "TC-HEADER-001", + "test_case_name": "必需请求头Schema验证", + "test_case_severity": "HIGH", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 9.082999895326793e-06, + "timestamp": "2025-07-11T18:01:51.251776", + "validation_points": [] + }, + { + "test_case_id": "TC-SECURITY-002", + "test_case_name": "敏感字段加密检查", + "test_case_severity": "HIGH", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.959009963087738e-06, + "timestamp": "2025-07-11T18:01:51.251803", + "validation_points": [] + }, + { + "test_case_id": "TC-LLM-COMPLIANCE-001", + "test_case_name": "LLM合规性综合检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.5830030255019665e-06, + "timestamp": "2025-07-11T18:01:51.251828", + "validation_points": [] + }, + { + "test_case_id": "TC-RESTful-001", + "test_case_name": "核心命名与结构规范检查", + "test_case_severity": "HIGH", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.208000170066953e-06, + "timestamp": "2025-07-11T18:01:51.251852", + "validation_points": [] + }, + { + "test_case_id": "TC-DMS-PAGINATION-001", + "test_case_name": "分页参数检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.208000170066953e-06, + "timestamp": "2025-07-11T18:01:51.251876", + "validation_points": [] + }, + { + "test_case_id": "TC-RESTful-004", + "test_case_name": "资源集合复数命名检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.1250105975195765e-06, + "timestamp": "2025-07-11T18:01:51.251899", + "validation_points": [] + }, + { + "test_case_id": "TC-RESTful-002", + "test_case_name": "资源路径名词检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.0829992182552814e-06, + "timestamp": "2025-07-11T18:01:51.251923", + "validation_points": [] + }, + { + "test_case_id": "TC-DMS-CORE-SCHEMA-001", + "test_case_name": "DMS核心存储服务API响应格式检查", + "test_case_severity": "HIGH", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 6.9590023485943675e-06, + "timestamp": "2025-07-11T18:01:51.251946", + "validation_points": [] + }, + { + "test_case_id": "TC-CORE-FUNC-001", + "test_case_name": "返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.250011549331248e-06, + "timestamp": "2025-07-11T18:01:51.251969", + "validation_points": [] + }, + { + "test_case_id": "TC-RESTful-003", + "test_case_name": "时间字段ISO 8601格式检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 6.999995093792677e-06, + "timestamp": "2025-07-11T18:01:51.251992", + "validation_points": [] + }, + { + "test_case_id": "TC-DMS-URL-VERSION-001", + "test_case_name": "DMS API URL版本号检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.041002390906215e-06, + "timestamp": "2025-07-11T18:01:51.252015", + "validation_points": [] + }, + { + "test_case_id": "TC-CORE-FUNC-002", + "test_case_name": "灵活的返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.041002390906215e-06, + "timestamp": "2025-07-11T18:01:51.252038", + "validation_points": [] + }, + { + "test_case_id": "TC-SECURITY-001", + "test_case_name": "HTTPS 协议强制性检查", + "test_case_severity": "HIGH", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 6.999995093792677e-06, + "timestamp": "2025-07-11T18:01:51.252061", + "validation_points": [] + }, + { + "test_case_id": "TC-ERROR-4001-QUERY", + "test_case_name": "查询参数类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.000009645707905e-06, + "timestamp": "2025-07-11T18:01:51.252083", + "validation_points": [] + }, + { + "test_case_id": "TC-ERROR-4001-BODY", + "test_case_name": "请求体字段类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 6.875008693896234e-06, + "timestamp": "2025-07-11T18:01:51.252106", + "validation_points": [] + }, + { + "test_case_id": "TC-ERROR-4002", + "test_case_name": "数值参数越界检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.208000170066953e-06, + "timestamp": "2025-07-11T18:01:51.252129", + "validation_points": [] + }, + { + "test_case_id": "TC-ERROR-4006", + "test_case_name": "非法枚举值检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 6.9590023485943675e-06, + "timestamp": "2025-07-11T18:01:51.252152", + "validation_points": [] + }, + { + "test_case_id": "TC-ERROR-4003-BODY", + "test_case_name": "缺失必填请求体字段检查", + "test_case_severity": "HIGH", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.0829992182552814e-06, + "timestamp": "2025-07-11T18:01:51.252175", + "validation_points": [] + }, + { + "test_case_id": "TC-ERROR-4003-QUERY", + "test_case_name": "缺失必填查询参数检查", + "test_case_severity": "HIGH", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.291993824765086e-06, + "timestamp": "2025-07-11T18:01:51.252198", + "validation_points": [] + } + ] + }, + { + "endpoint_id": "PUT /api/dms/wb_ml/v1/lujing_test", + "endpoint_name": "Update lujing_test", + "overall_status": "通过", + "duration_seconds": 0.020668, + "start_time": "2025-07-11T18:01:51.252266", + "end_time": "2025-07-11T18:01:51.272934", + "executed_test_cases": [ + { + "test_case_id": "TC-STATUS-001", + "test_case_name": "基本状态码 200 检查", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "响应状态码为 200,符合预期 200。", + "duration_seconds": 0.0011774580052588135, + "timestamp": "2025-07-11T18:01:51.253600", + "validation_points": [ + { + "passed": true, + "message": "响应状态码为 200,符合预期 200。" + } + ] + }, + { + "test_case_id": "TC-HEADER-001", + "test_case_name": "必需请求头Schema验证", + "test_case_severity": "HIGH", + "status": "失败", + "message": "缺少必需的请求头 X-Tenant-ID;缺少必需的请求头 X-Data-Domain;缺少必需的请求头 Authorization", + "duration_seconds": 0.0010462920035934076, + "timestamp": "2025-07-11T18:01:51.254682", + "validation_points": [ + { + "header": "X-Tenant-ID", + "possible_names": [ + "X-Tenant-ID" + ], + "endpoint": "PUT /api/dms/wb_ml/v1/lujing_test" + }, + { + "header": "X-Data-Domain", + "possible_names": [ + "X-Data-Domain" + ], + "endpoint": "PUT /api/dms/wb_ml/v1/lujing_test" + }, + { + "header": "Authorization", + "possible_names": [ + "Authorization" + ], + "endpoint": "PUT /api/dms/wb_ml/v1/lujing_test" + } + ] + }, + { + "test_case_id": "TC-SECURITY-002", + "test_case_name": "敏感字段加密检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "未在响应中找到需要检查的敏感字段。", + "duration_seconds": 0.0009398330003023148, + "timestamp": "2025-07-11T18:01:51.255650", + "validation_points": [ + { + "passed": true, + "message": "未在响应中找到需要检查的敏感字段。" + } + ] + }, + { + "test_case_id": "TC-LLM-COMPLIANCE-001", + "test_case_name": "LLM合规性综合检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "合规性标准列表为空,跳过LLM合规性检查。", + "duration_seconds": 0.0008858749934006482, + "timestamp": "2025-07-11T18:01:51.256564", + "validation_points": [ + { + "reason": "compliance_criteria.json is empty or contains an empty list." + } + ] + }, + { + "test_case_id": "TC-RESTful-001", + "test_case_name": "核心命名与结构规范检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。", + "duration_seconds": 0.0008819579961709678, + "timestamp": "2025-07-11T18:01:51.257481", + "validation_points": [ + { + "passed": true, + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。" + } + ] + }, + { + "test_case_id": "TC-DMS-PAGINATION-001", + "test_case_name": "分页参数检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount", + "duration_seconds": 0.0009910419903462753, + "timestamp": "2025-07-11T18:01:51.258503", + "validation_points": [ + { + "path": "/api/dms/wb_ml/v1/lujing_test", + "method": "PUT", + "missing_params": [ + "pageNo", + "pageSize", + "isSearchCount" + ], + "found_params": { + "pageNo": false, + "pageSize": false, + "isSearchCount": false + } + } + ] + }, + { + "test_case_id": "TC-RESTful-004", + "test_case_name": "资源集合复数命名检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过检查:PUT 方法,不适用于资源集合复数检查。", + "duration_seconds": 0.0009516249992884696, + "timestamp": "2025-07-11T18:01:51.259496", + "validation_points": [ + { + "passed": true, + "message": "跳过检查:PUT 方法,不适用于资源集合复数检查。" + } + ] + }, + { + "test_case_id": "TC-RESTful-002", + "test_case_name": "资源路径名词检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "路径 '/api/dms/wb_ml/v1/lujing_test' 符合资源名词命名规范。", + "duration_seconds": 0.0009412500075995922, + "timestamp": "2025-07-11T18:01:51.260475", + "validation_points": [ + { + "passed": true, + "message": "路径 '/api/dms/wb_ml/v1/lujing_test' 符合资源名词命名规范。" + } + ] + }, + { + "test_case_id": "TC-DMS-CORE-SCHEMA-001", + "test_case_name": "DMS核心存储服务API响应格式检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}", + "duration_seconds": 0.0009099589951802045, + "timestamp": "2025-07-11T18:01:51.261428", + "validation_points": [ + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-001", + "test_case_name": "返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "针对 PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test (状态码 200) 的响应体 conforms to the JSON schema.", + "duration_seconds": 0.0009431249927729368, + "timestamp": "2025-07-11T18:01:51.262411", + "validation_points": [ + { + "passed": true, + "message": "针对 PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test (状态码 200) 的响应体 conforms to the JSON schema." + } + ] + }, + { + "test_case_id": "TC-RESTful-003", + "test_case_name": "时间字段ISO 8601格式检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。", + "duration_seconds": 0.0010243340075248852, + "timestamp": "2025-07-11T18:01:51.263468", + "validation_points": [ + { + "passed": true, + "message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。" + } + ] + }, + { + "test_case_id": "TC-DMS-URL-VERSION-001", + "test_case_name": "DMS API URL版本号检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "API路径 '/api/dms/wb_ml/v1/lujing_test' 正确以'/api/'开头;API路径 '/api/dms/wb_ml/v1/lujing_test' 包含版本标识: 'v1'", + "duration_seconds": 0.0009774579957593232, + "timestamp": "2025-07-11T18:01:51.264493", + "validation_points": [ + { + "full_path": "/api/dms/wb_ml/v1/lujing_test" + }, + { + "pattern_matched": "/v\\d+/", + "version_string": "v1", + "full_path": "/api/dms/wb_ml/v1/lujing_test" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-002", + "test_case_name": "灵活的返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "", + "duration_seconds": 0.0010409590031486005, + "timestamp": "2025-07-11T18:01:51.265576", + "validation_points": [] + }, + { + "test_case_id": "TC-SECURITY-001", + "test_case_name": "HTTPS 协议强制性检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "API通过HTTP (http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test) 响应了成功的状态码 200,这违反了HTTPS强制策略。", + "duration_seconds": 0.0009514159901300445, + "timestamp": "2025-07-11T18:01:51.266575", + "validation_points": [ + { + "status_code": 200 + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-QUERY", + "test_case_name": "查询参数类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。", + "duration_seconds": 0.0010367500071879476, + "timestamp": "2025-07-11T18:01:51.267645", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-BODY", + "test_case_name": "请求体字段类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "当请求体字段 'version' 类型不匹配时, 业务错误码应为 -1,但实际为 0。", + "duration_seconds": 0.0012279160000616685, + "timestamp": "2025-07-11T18:01:51.268910", + "validation_points": [ + { + "expected_code": -1, + "actual_code": 0, + "response_body": { + "code": 0, + "data": true, + "message": "创建成功" + } + } + ] + }, + { + "test_case_id": "TC-ERROR-4002", + "test_case_name": "数值参数越界检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "当 body 字段 'record_count' 值为 10001 (超出范围: min=0, max=10000) 时, 业务错误码应为 -1,但实际为 0。", + "duration_seconds": 0.0010710000060498714, + "timestamp": "2025-07-11T18:01:51.270013", + "validation_points": [ + { + "expected_code": -1, + "actual_code": 0, + "response_body": { + "code": 0, + "data": true, + "message": "创建成功" + } + } + ] + }, + { + "test_case_id": "TC-ERROR-4006", + "test_case_name": "非法枚举值检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:未找到具有明确枚举值限制的字段。", + "duration_seconds": 0.0009615839953767136, + "timestamp": "2025-07-11T18:01:51.271010", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:未找到具有明确枚举值限制的字段。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-BODY", + "test_case_name": "缺失必填请求体字段检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "当移除必填请求体字段 'data' 时, API应返回状态码 200,但实际为 400。", + "duration_seconds": 0.0009471660014241934, + "timestamp": "2025-07-11T18:01:51.271995", + "validation_points": [ + { + "expected_status": 200, + "actual_status": 400 + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-QUERY", + "test_case_name": "缺失必填查询参数检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。", + "duration_seconds": 0.0008816670015221462, + "timestamp": "2025-07-11T18:01:51.272913", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。" + } + ] + } + ] + }, + { + "endpoint_id": "DELETE /api/dms/wb_ml/v1/lujing_test", + "endpoint_name": "Delete lujing_test", + "overall_status": "通过", + "duration_seconds": 0.017974, + "start_time": "2025-07-11T18:01:51.272990", + "end_time": "2025-07-11T18:01:51.290964", + "executed_test_cases": [ + { + "test_case_id": "TC-STATUS-001", + "test_case_name": "基本状态码 200 检查", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "响应状态码为 200,符合预期 200。", + "duration_seconds": 0.0009028339991346002, + "timestamp": "2025-07-11T18:01:51.274050", + "validation_points": [ + { + "passed": true, + "message": "响应状态码为 200,符合预期 200。" + } + ] + }, + { + "test_case_id": "TC-HEADER-001", + "test_case_name": "必需请求头Schema验证", + "test_case_severity": "HIGH", + "status": "失败", + "message": "缺少必需的请求头 X-Tenant-ID;缺少必需的请求头 X-Data-Domain;缺少必需的请求头 Authorization", + "duration_seconds": 0.0009804169967537746, + "timestamp": "2025-07-11T18:01:51.275068", + "validation_points": [ + { + "header": "X-Tenant-ID", + "possible_names": [ + "X-Tenant-ID" + ], + "endpoint": "DELETE /api/dms/wb_ml/v1/lujing_test" + }, + { + "header": "X-Data-Domain", + "possible_names": [ + "X-Data-Domain" + ], + "endpoint": "DELETE /api/dms/wb_ml/v1/lujing_test" + }, + { + "header": "Authorization", + "possible_names": [ + "Authorization" + ], + "endpoint": "DELETE /api/dms/wb_ml/v1/lujing_test" + } + ] + }, + { + "test_case_id": "TC-SECURITY-002", + "test_case_name": "敏感字段加密检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "未在响应中找到需要检查的敏感字段。", + "duration_seconds": 0.0008671249961480498, + "timestamp": "2025-07-11T18:01:51.275962", + "validation_points": [ + { + "passed": true, + "message": "未在响应中找到需要检查的敏感字段。" + } + ] + }, + { + "test_case_id": "TC-LLM-COMPLIANCE-001", + "test_case_name": "LLM合规性综合检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "合规性标准列表为空,跳过LLM合规性检查。", + "duration_seconds": 0.0008644579938845709, + "timestamp": "2025-07-11T18:01:51.276855", + "validation_points": [ + { + "reason": "compliance_criteria.json is empty or contains an empty list." + } + ] + }, + { + "test_case_id": "TC-RESTful-001", + "test_case_name": "核心命名与结构规范检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。", + "duration_seconds": 0.000923374987905845, + "timestamp": "2025-07-11T18:01:51.277819", + "validation_points": [ + { + "passed": true, + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。" + } + ] + }, + { + "test_case_id": "TC-DMS-PAGINATION-001", + "test_case_name": "分页参数检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount", + "duration_seconds": 0.0007976670021889731, + "timestamp": "2025-07-11T18:01:51.278645", + "validation_points": [ + { + "path": "/api/dms/wb_ml/v1/lujing_test", + "method": "DELETE", + "missing_params": [ + "pageNo", + "pageSize", + "isSearchCount" + ], + "found_params": { + "pageNo": false, + "pageSize": false, + "isSearchCount": false + } + } + ] + }, + { + "test_case_id": "TC-RESTful-004", + "test_case_name": "资源集合复数命名检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过检查:DELETE 方法,不适用于资源集合复数检查。", + "duration_seconds": 0.0008324580121552572, + "timestamp": "2025-07-11T18:01:51.279520", + "validation_points": [ + { + "passed": true, + "message": "跳过检查:DELETE 方法,不适用于资源集合复数检查。" + } + ] + }, + { + "test_case_id": "TC-RESTful-002", + "test_case_name": "资源路径名词检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "路径 '/api/dms/wb_ml/v1/lujing_test' 符合资源名词命名规范。", + "duration_seconds": 0.0008100830018520355, + "timestamp": "2025-07-11T18:01:51.280368", + "validation_points": [ + { + "passed": true, + "message": "路径 '/api/dms/wb_ml/v1/lujing_test' 符合资源名词命名规范。" + } + ] + }, + { + "test_case_id": "TC-DMS-CORE-SCHEMA-001", + "test_case_name": "DMS核心存储服务API响应格式检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}", + "duration_seconds": 0.000817624997580424, + "timestamp": "2025-07-11T18:01:51.281225", + "validation_points": [ + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-001", + "test_case_name": "返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "针对 DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test (状态码 200) 的响应体 conforms to the JSON schema.", + "duration_seconds": 0.0008775419992161915, + "timestamp": "2025-07-11T18:01:51.282145", + "validation_points": [ + { + "passed": true, + "message": "针对 DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test (状态码 200) 的响应体 conforms to the JSON schema." + } + ] + }, + { + "test_case_id": "TC-RESTful-003", + "test_case_name": "时间字段ISO 8601格式检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。", + "duration_seconds": 0.0007901669887360185, + "timestamp": "2025-07-11T18:01:51.282967", + "validation_points": [ + { + "passed": true, + "message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。" + } + ] + }, + { + "test_case_id": "TC-DMS-URL-VERSION-001", + "test_case_name": "DMS API URL版本号检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "API路径 '/api/dms/wb_ml/v1/lujing_test' 正确以'/api/'开头;API路径 '/api/dms/wb_ml/v1/lujing_test' 包含版本标识: 'v1'", + "duration_seconds": 0.000799959001597017, + "timestamp": "2025-07-11T18:01:51.283804", + "validation_points": [ + { + "full_path": "/api/dms/wb_ml/v1/lujing_test" + }, + { + "pattern_matched": "/v\\d+/", + "version_string": "v1", + "full_path": "/api/dms/wb_ml/v1/lujing_test" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-002", + "test_case_name": "灵活的返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "", + "duration_seconds": 0.0007744580070720986, + "timestamp": "2025-07-11T18:01:51.284623", + "validation_points": [] + }, + { + "test_case_id": "TC-SECURITY-001", + "test_case_name": "HTTPS 协议强制性检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "API通过HTTP (http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test) 响应了成功的状态码 200,这违反了HTTPS强制策略。", + "duration_seconds": 0.0008474580099573359, + "timestamp": "2025-07-11T18:01:51.285506", + "validation_points": [ + { + "status_code": 200 + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-QUERY", + "test_case_name": "查询参数类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。", + "duration_seconds": 0.0009027920023072511, + "timestamp": "2025-07-11T18:01:51.286440", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-BODY", + "test_case_name": "请求体字段类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "当请求体字段 'version' 类型不匹配时, 业务错误码应为 -1,但实际为 404。", + "duration_seconds": 0.0009559580066706985, + "timestamp": "2025-07-11T18:01:51.287427", + "validation_points": [ + { + "expected_code": -1, + "actual_code": 404, + "response_body": { + "code": 404, + "data": false, + "message": "未找到要删除的资源" + } + } + ] + }, + { + "test_case_id": "TC-ERROR-4002", + "test_case_name": "数值参数越界检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:未找到具有明确范围限制的数值字段。", + "duration_seconds": 0.0008888750016922131, + "timestamp": "2025-07-11T18:01:51.288348", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:未找到具有明确范围限制的数值字段。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4006", + "test_case_name": "非法枚举值检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:未找到具有明确枚举值限制的字段。", + "duration_seconds": 0.000847167000756599, + "timestamp": "2025-07-11T18:01:51.289227", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:未找到具有明确枚举值限制的字段。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-BODY", + "test_case_name": "缺失必填请求体字段检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "当移除必填请求体字段 'data' 时, API应返回状态码 200,但实际为 400。", + "duration_seconds": 0.0008547089964849874, + "timestamp": "2025-07-11T18:01:51.290120", + "validation_points": [ + { + "expected_status": 200, + "actual_status": 400 + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-QUERY", + "test_case_name": "缺失必填查询参数检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。", + "duration_seconds": 0.0007836250006221235, + "timestamp": "2025-07-11T18:01:51.290941", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。" + } + ] + } + ] + }, + { + "endpoint_id": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report", + "endpoint_name": "Create wb_dr_pro_daily_report", + "overall_status": "通过", + "duration_seconds": 0.019064, + "start_time": "2025-07-11T18:01:51.291019", + "end_time": "2025-07-11T18:01:51.310083", + "executed_test_cases": [ + { + "test_case_id": "TC-STATUS-001", + "test_case_name": "基本状态码 200 检查", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "响应状态码为 200,符合预期 200。", + "duration_seconds": 0.0009002079896163195, + "timestamp": "2025-07-11T18:01:51.292082", + "validation_points": [ + { + "passed": true, + "message": "响应状态码为 200,符合预期 200。" + } + ] + }, + { + "test_case_id": "TC-HEADER-001", + "test_case_name": "必需请求头Schema验证", + "test_case_severity": "HIGH", + "status": "失败", + "message": "缺少必需的请求头 X-Tenant-ID;缺少必需的请求头 X-Data-Domain;缺少必需的请求头 Authorization", + "duration_seconds": 0.0009771250042831525, + "timestamp": "2025-07-11T18:01:51.293091", + "validation_points": [ + { + "header": "X-Tenant-ID", + "possible_names": [ + "X-Tenant-ID" + ], + "endpoint": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report" + }, + { + "header": "X-Data-Domain", + "possible_names": [ + "X-Data-Domain" + ], + "endpoint": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report" + }, + { + "header": "Authorization", + "possible_names": [ + "Authorization" + ], + "endpoint": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report" + } + ] + }, + { + "test_case_id": "TC-SECURITY-002", + "test_case_name": "敏感字段加密检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "未在响应中找到需要检查的敏感字段。", + "duration_seconds": 0.0009049579966813326, + "timestamp": "2025-07-11T18:01:51.294028", + "validation_points": [ + { + "passed": true, + "message": "未在响应中找到需要检查的敏感字段。" + } + ] + }, + { + "test_case_id": "TC-LLM-COMPLIANCE-001", + "test_case_name": "LLM合规性综合检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "合规性标准列表为空,跳过LLM合规性检查。", + "duration_seconds": 0.000879166997037828, + "timestamp": "2025-07-11T18:01:51.294944", + "validation_points": [ + { + "reason": "compliance_criteria.json is empty or contains an empty list." + } + ] + }, + { + "test_case_id": "TC-RESTful-001", + "test_case_name": "核心命名与结构规范检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。", + "duration_seconds": 0.0008975419914349914, + "timestamp": "2025-07-11T18:01:51.295878", + "validation_points": [ + { + "passed": true, + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。" + } + ] + }, + { + "test_case_id": "TC-DMS-PAGINATION-001", + "test_case_name": "分页参数检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount", + "duration_seconds": 0.0008542919968022034, + "timestamp": "2025-07-11T18:01:51.296762", + "validation_points": [ + { + "path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report", + "method": "POST", + "missing_params": [ + "pageNo", + "pageSize", + "isSearchCount" + ], + "found_params": { + "pageNo": false, + "pageSize": false, + "isSearchCount": false + } + } + ] + }, + { + "test_case_id": "TC-RESTful-004", + "test_case_name": "资源集合复数命名检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 的最后一个路径分段 'wb_dr_pro_daily_report' 可能不是复数形式,建议对资源集合使用复数命名。", + "duration_seconds": 0.0008338329935213551, + "timestamp": "2025-07-11T18:01:51.297631", + "validation_points": [ + { + "path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report", + "segment": "wb_dr_pro_daily_report" + } + ] + }, + { + "test_case_id": "TC-RESTful-002", + "test_case_name": "资源路径名词检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 符合资源名词命名规范。", + "duration_seconds": 0.000843374989926815, + "timestamp": "2025-07-11T18:01:51.298512", + "validation_points": [ + { + "passed": true, + "message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 符合资源名词命名规范。" + } + ] + }, + { + "test_case_id": "TC-DMS-CORE-SCHEMA-001", + "test_case_name": "DMS核心存储服务API响应格式检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}", + "duration_seconds": 0.0008620419976068661, + "timestamp": "2025-07-11T18:01:51.299416", + "validation_points": [ + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-001", + "test_case_name": "返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "针对 POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report (状态码 200) 的响应体 conforms to the JSON schema.", + "duration_seconds": 0.0009706249984446913, + "timestamp": "2025-07-11T18:01:51.300427", + "validation_points": [ + { + "passed": true, + "message": "针对 POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report (状态码 200) 的响应体 conforms to the JSON schema." + } + ] + }, + { + "test_case_id": "TC-RESTful-003", + "test_case_name": "时间字段ISO 8601格式检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。", + "duration_seconds": 0.0008891249890439212, + "timestamp": "2025-07-11T18:01:51.301348", + "validation_points": [ + { + "passed": true, + "message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。" + } + ] + }, + { + "test_case_id": "TC-DMS-URL-VERSION-001", + "test_case_name": "DMS API URL版本号检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 正确以'/api/'开头;API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 包含版本标识: 'v1'", + "duration_seconds": 0.0008472080080537125, + "timestamp": "2025-07-11T18:01:51.302233", + "validation_points": [ + { + "full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report" + }, + { + "pattern_matched": "/v\\d+/", + "version_string": "v1", + "full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-002", + "test_case_name": "灵活的返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "", + "duration_seconds": 0.0008627909992355853, + "timestamp": "2025-07-11T18:01:51.303134", + "validation_points": [] + }, + { + "test_case_id": "TC-SECURITY-001", + "test_case_name": "HTTPS 协议强制性检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "API通过HTTP (http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report) 响应了成功的状态码 200,这违反了HTTPS强制策略。", + "duration_seconds": 0.0008957920072134584, + "timestamp": "2025-07-11T18:01:51.304072", + "validation_points": [ + { + "status_code": 200 + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-QUERY", + "test_case_name": "查询参数类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。", + "duration_seconds": 0.0009773329948075116, + "timestamp": "2025-07-11T18:01:51.305085", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-BODY", + "test_case_name": "请求体字段类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "当请求体字段 'version' 类型不匹配时, 业务错误码应为 -1,但实际为 0。", + "duration_seconds": 0.0010160420060856268, + "timestamp": "2025-07-11T18:01:51.306131", + "validation_points": [ + { + "expected_code": -1, + "actual_code": 0, + "response_body": { + "code": 0, + "data": true, + "message": "创建成功" + } + } + ] + }, + { + "test_case_id": "TC-ERROR-4002", + "test_case_name": "数值参数越界检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "当 body 字段 'record_count' 值为 10001 (超出范围: min=0, max=10000) 时, 业务错误码应为 -1,但实际为 0。", + "duration_seconds": 0.0009561250044498593, + "timestamp": "2025-07-11T18:01:51.307118", + "validation_points": [ + { + "expected_code": -1, + "actual_code": 0, + "response_body": { + "code": 0, + "data": true, + "message": "创建成功" + } + } + ] + }, + { + "test_case_id": "TC-ERROR-4006", + "test_case_name": "非法枚举值检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:未找到具有明确枚举值限制的字段。", + "duration_seconds": 0.0008952080097515136, + "timestamp": "2025-07-11T18:01:51.308045", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:未找到具有明确枚举值限制的字段。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-BODY", + "test_case_name": "缺失必填请求体字段检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "当移除必填请求体字段 'data' 时, API应返回状态码 200,但实际为 400。", + "duration_seconds": 0.0009807500027818605, + "timestamp": "2025-07-11T18:01:51.309067", + "validation_points": [ + { + "expected_status": 200, + "actual_status": 400 + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-QUERY", + "test_case_name": "缺失必填查询参数检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。", + "duration_seconds": 0.0009479170112172142, + "timestamp": "2025-07-11T18:01:51.310058", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。" + } + ] + } + ] + }, + { + "endpoint_id": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0", + "endpoint_name": "List wb_dr_pro_daily_report", + "overall_status": "通过", + "duration_seconds": 0.022373, + "start_time": "2025-07-11T18:01:51.310141", + "end_time": "2025-07-11T18:01:51.332514", + "executed_test_cases": [ + { + "test_case_id": "TC-STATUS-001", + "test_case_name": "基本状态码 200 检查", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "响应状态码为 200,符合预期 200。", + "duration_seconds": 0.0008558749977964908, + "timestamp": "2025-07-11T18:01:51.311159", + "validation_points": [ + { + "passed": true, + "message": "响应状态码为 200,符合预期 200。" + } + ] + }, + { + "test_case_id": "TC-HEADER-001", + "test_case_name": "必需请求头Schema验证", + "test_case_severity": "HIGH", + "status": "失败", + "message": "缺少必需的请求头 X-Tenant-ID;缺少必需的请求头 X-Data-Domain;缺少必需的请求头 Authorization", + "duration_seconds": 0.0008141250000335276, + "timestamp": "2025-07-11T18:01:51.312005", + "validation_points": [ + { + "header": "X-Tenant-ID", + "possible_names": [ + "X-Tenant-ID" + ], + "endpoint": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0" + }, + { + "header": "X-Data-Domain", + "possible_names": [ + "X-Data-Domain" + ], + "endpoint": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0" + }, + { + "header": "Authorization", + "possible_names": [ + "Authorization" + ], + "endpoint": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0" + } + ] + }, + { + "test_case_id": "TC-SECURITY-002", + "test_case_name": "敏感字段加密检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "未在响应中找到需要检查的敏感字段。", + "duration_seconds": 0.0007839169993530959, + "timestamp": "2025-07-11T18:01:51.312817", + "validation_points": [ + { + "passed": true, + "message": "未在响应中找到需要检查的敏感字段。" + } + ] + }, + { + "test_case_id": "TC-LLM-COMPLIANCE-001", + "test_case_name": "LLM合规性综合检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "合规性标准列表为空,跳过LLM合规性检查。", + "duration_seconds": 0.0008193749963538721, + "timestamp": "2025-07-11T18:01:51.313664", + "validation_points": [ + { + "reason": "compliance_criteria.json is empty or contains an empty list." + } + ] + }, + { + "test_case_id": "TC-RESTful-001", + "test_case_name": "核心命名与结构规范检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。;响应中包含一个主列表,但其键名 'data' 不是 'list'。", + "duration_seconds": 0.0008105419983621687, + "timestamp": "2025-07-11T18:01:51.314521", + "validation_points": [ + { + "passed": true, + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。" + }, + { + "keys": [ + "code", + "data", + "message" + ] + } + ] + }, + { + "test_case_id": "TC-DMS-PAGINATION-001", + "test_case_name": "分页参数检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount", + "duration_seconds": 0.0008809170103631914, + "timestamp": "2025-07-11T18:01:51.315430", + "validation_points": [ + { + "path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0", + "method": "POST", + "missing_params": [ + "pageNo", + "pageSize", + "isSearchCount" + ], + "found_params": { + "pageNo": false, + "pageSize": false, + "isSearchCount": false + } + } + ] + }, + { + "test_case_id": "TC-RESTful-004", + "test_case_name": "资源集合复数命名检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 的最后一个路径分段 '1.0.0' 可能不是复数形式,建议对资源集合使用复数命名。", + "duration_seconds": 0.003489124996121973, + "timestamp": "2025-07-11T18:01:51.318961", + "validation_points": [ + { + "path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0", + "segment": "1.0.0" + } + ] + }, + { + "test_case_id": "TC-RESTful-002", + "test_case_name": "资源路径名词检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 符合资源名词命名规范。", + "duration_seconds": 0.001102125010220334, + "timestamp": "2025-07-11T18:01:51.320133", + "validation_points": [ + { + "passed": true, + "message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 符合资源名词命名规范。" + } + ] + }, + { + "test_case_id": "TC-DMS-CORE-SCHEMA-001", + "test_case_name": "DMS核心存储服务API响应格式检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}", + "duration_seconds": 0.0009908749925671145, + "timestamp": "2025-07-11T18:01:51.321172", + "validation_points": [ + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-001", + "test_case_name": "返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "针对 POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 (状态码 200) 的响应体 conforms to the JSON schema.", + "duration_seconds": 0.0011700420000124723, + "timestamp": "2025-07-11T18:01:51.322387", + "validation_points": [ + { + "passed": true, + "message": "针对 POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 (状态码 200) 的响应体 conforms to the JSON schema." + } + ] + }, + { + "test_case_id": "TC-RESTful-003", + "test_case_name": "时间字段ISO 8601格式检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "时间字段 'data[].update_date' (format: date-time) 缺少建议的 `pattern` (^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}([+-]\\d{2}:\\d{2}|Z)$) 来强制执行ISO 8601格式。", + "duration_seconds": 0.001084292001905851, + "timestamp": "2025-07-11T18:01:51.323632", + "validation_points": [ + { + "field": "data[].update_date" + } + ] + }, + { + "test_case_id": "TC-DMS-URL-VERSION-001", + "test_case_name": "DMS API URL版本号检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 正确以'/api/'开头;API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 包含版本标识: 'v1'", + "duration_seconds": 0.0009572920098435134, + "timestamp": "2025-07-11T18:01:51.324634", + "validation_points": [ + { + "full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0" + }, + { + "pattern_matched": "/v\\d+/", + "version_string": "v1", + "full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-002", + "test_case_name": "灵活的返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "", + "duration_seconds": 0.0010163749975617975, + "timestamp": "2025-07-11T18:01:51.325694", + "validation_points": [] + }, + { + "test_case_id": "TC-SECURITY-001", + "test_case_name": "HTTPS 协议强制性检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "API通过HTTP (http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0) 响应了成功的状态码 200,这违反了HTTPS强制策略。", + "duration_seconds": 0.00113795799552463, + "timestamp": "2025-07-11T18:01:51.326872", + "validation_points": [ + { + "status_code": 200 + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-QUERY", + "test_case_name": "查询参数类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。", + "duration_seconds": 0.0010346250055590644, + "timestamp": "2025-07-11T18:01:51.327946", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-BODY", + "test_case_name": "请求体字段类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:在请求体中未找到合适的字段来测试类型不匹配。", + "duration_seconds": 0.0009153330029221252, + "timestamp": "2025-07-11T18:01:51.328893", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在请求体中未找到合适的字段来测试类型不匹配。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4002", + "test_case_name": "数值参数越界检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:未找到具有明确范围限制的数值字段。", + "duration_seconds": 0.0009326250001322478, + "timestamp": "2025-07-11T18:01:51.329859", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:未找到具有明确范围限制的数值字段。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4006", + "test_case_name": "非法枚举值检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:未找到具有明确枚举值限制的字段。", + "duration_seconds": 0.0008866249991115183, + "timestamp": "2025-07-11T18:01:51.330787", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:未找到具有明确枚举值限制的字段。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-BODY", + "test_case_name": "缺失必填请求体字段检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "跳过测试:在API规范中未找到合适的必填请求体字段用于移除测试。", + "duration_seconds": 0.0007889999978942797, + "timestamp": "2025-07-11T18:01:51.331622", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在API规范中未找到合适的必填请求体字段用于移除测试。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-QUERY", + "test_case_name": "缺失必填查询参数检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。", + "duration_seconds": 0.0008344579982804134, + "timestamp": "2025-07-11T18:01:51.332488", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。" + } + ] + } + ] + }, + { + "endpoint_id": "GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}", + "endpoint_name": "Read wb_dr_pro_daily_report", + "overall_status": "失败", + "duration_seconds": 0.001559, + "start_time": "2025-07-11T18:01:51.332603", + "end_time": "2025-07-11T18:01:51.334162", + "executed_test_cases": [ + { + "test_case_id": "TC-STATUS-001", + "test_case_name": "基本状态码 200 检查", + "test_case_severity": "CRITICAL", + "status": "失败", + "message": "期望状态码 200,但收到 404。", + "duration_seconds": 0.000868874994921498, + "timestamp": "2025-07-11T18:01:51.333679", + "validation_points": [ + { + "expected_status": 200, + "actual_status": 404, + "request_url": "http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/param_id", + "response_body_sample": "{\"code\": 404, \"message\": \"资源 'wb_dr_pro_daily_report' with ID 'param_id' 未找到.\"}" + } + ] + }, + { + "test_case_id": "TC-HEADER-001", + "test_case_name": "必需请求头Schema验证", + "test_case_severity": "HIGH", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 8.916991646401584e-06, + "timestamp": "2025-07-11T18:01:51.333726", + "validation_points": [] + }, + { + "test_case_id": "TC-SECURITY-002", + "test_case_name": "敏感字段加密检查", + "test_case_severity": "HIGH", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.875001756474376e-06, + "timestamp": "2025-07-11T18:01:51.333752", + "validation_points": [] + }, + { + "test_case_id": "TC-LLM-COMPLIANCE-001", + "test_case_name": "LLM合规性综合检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.458002073690295e-06, + "timestamp": "2025-07-11T18:01:51.333776", + "validation_points": [] + }, + { + "test_case_id": "TC-RESTful-001", + "test_case_name": "核心命名与结构规范检查", + "test_case_severity": "HIGH", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.0829992182552814e-06, + "timestamp": "2025-07-11T18:01:51.333800", + "validation_points": [] + }, + { + "test_case_id": "TC-DMS-PAGINATION-001", + "test_case_name": "分页参数检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.166003342717886e-06, + "timestamp": "2025-07-11T18:01:51.333823", + "validation_points": [] + }, + { + "test_case_id": "TC-RESTful-004", + "test_case_name": "资源集合复数命名检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.166003342717886e-06, + "timestamp": "2025-07-11T18:01:51.333847", + "validation_points": [] + }, + { + "test_case_id": "TC-RESTful-002", + "test_case_name": "资源路径名词检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.0829992182552814e-06, + "timestamp": "2025-07-11T18:01:51.333870", + "validation_points": [] + }, + { + "test_case_id": "TC-DMS-CORE-SCHEMA-001", + "test_case_name": "DMS核心存储服务API响应格式检查", + "test_case_severity": "HIGH", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.291004294529557e-06, + "timestamp": "2025-07-11T18:01:51.333894", + "validation_points": [] + }, + { + "test_case_id": "TC-CORE-FUNC-001", + "test_case_name": "返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.0829992182552814e-06, + "timestamp": "2025-07-11T18:01:51.333917", + "validation_points": [] + }, + { + "test_case_id": "TC-RESTful-003", + "test_case_name": "时间字段ISO 8601格式检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.041002390906215e-06, + "timestamp": "2025-07-11T18:01:51.333941", + "validation_points": [] + }, + { + "test_case_id": "TC-DMS-URL-VERSION-001", + "test_case_name": "DMS API URL版本号检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.208000170066953e-06, + "timestamp": "2025-07-11T18:01:51.333964", + "validation_points": [] + }, + { + "test_case_id": "TC-CORE-FUNC-002", + "test_case_name": "灵活的返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.291004294529557e-06, + "timestamp": "2025-07-11T18:01:51.333987", + "validation_points": [] + }, + { + "test_case_id": "TC-SECURITY-001", + "test_case_name": "HTTPS 协议强制性检查", + "test_case_severity": "HIGH", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.0829992182552814e-06, + "timestamp": "2025-07-11T18:01:51.334010", + "validation_points": [] + }, + { + "test_case_id": "TC-ERROR-4001-QUERY", + "test_case_name": "查询参数类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 6.999995093792677e-06, + "timestamp": "2025-07-11T18:01:51.334033", + "validation_points": [] + }, + { + "test_case_id": "TC-ERROR-4001-BODY", + "test_case_name": "请求体字段类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.042006473056972e-06, + "timestamp": "2025-07-11T18:01:51.334056", + "validation_points": [] + }, + { + "test_case_id": "TC-ERROR-4002", + "test_case_name": "数值参数越界检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 6.95799826644361e-06, + "timestamp": "2025-07-11T18:01:51.334079", + "validation_points": [] + }, + { + "test_case_id": "TC-ERROR-4006", + "test_case_name": "非法枚举值检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 6.95799826644361e-06, + "timestamp": "2025-07-11T18:01:51.334101", + "validation_points": [] + }, + { + "test_case_id": "TC-ERROR-4003-BODY", + "test_case_name": "缺失必填请求体字段检查", + "test_case_severity": "HIGH", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.041991921141744e-06, + "timestamp": "2025-07-11T18:01:51.334124", + "validation_points": [] + }, + { + "test_case_id": "TC-ERROR-4003-QUERY", + "test_case_name": "缺失必填查询参数检查", + "test_case_severity": "HIGH", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 6.874994141981006e-06, + "timestamp": "2025-07-11T18:01:51.334147", + "validation_points": [] + } + ] + }, + { + "endpoint_id": "PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report", + "endpoint_name": "Update wb_dr_pro_daily_report", + "overall_status": "通过", + "duration_seconds": 0.019964, + "start_time": "2025-07-11T18:01:51.334215", + "end_time": "2025-07-11T18:01:51.354179", + "executed_test_cases": [ + { + "test_case_id": "TC-STATUS-001", + "test_case_name": "基本状态码 200 检查", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "响应状态码为 200,符合预期 200。", + "duration_seconds": 0.0011190000077476725, + "timestamp": "2025-07-11T18:01:51.335490", + "validation_points": [ + { + "passed": true, + "message": "响应状态码为 200,符合预期 200。" + } + ] + }, + { + "test_case_id": "TC-HEADER-001", + "test_case_name": "必需请求头Schema验证", + "test_case_severity": "HIGH", + "status": "失败", + "message": "缺少必需的请求头 X-Tenant-ID;缺少必需的请求头 X-Data-Domain;缺少必需的请求头 Authorization", + "duration_seconds": 0.0010194579954259098, + "timestamp": "2025-07-11T18:01:51.336544", + "validation_points": [ + { + "header": "X-Tenant-ID", + "possible_names": [ + "X-Tenant-ID" + ], + "endpoint": "PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report" + }, + { + "header": "X-Data-Domain", + "possible_names": [ + "X-Data-Domain" + ], + "endpoint": "PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report" + }, + { + "header": "Authorization", + "possible_names": [ + "Authorization" + ], + "endpoint": "PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report" + } + ] + }, + { + "test_case_id": "TC-SECURITY-002", + "test_case_name": "敏感字段加密检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "未在响应中找到需要检查的敏感字段。", + "duration_seconds": 0.0009390420018462464, + "timestamp": "2025-07-11T18:01:51.337511", + "validation_points": [ + { + "passed": true, + "message": "未在响应中找到需要检查的敏感字段。" + } + ] + }, + { + "test_case_id": "TC-LLM-COMPLIANCE-001", + "test_case_name": "LLM合规性综合检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "合规性标准列表为空,跳过LLM合规性检查。", + "duration_seconds": 0.0009437499975319952, + "timestamp": "2025-07-11T18:01:51.338484", + "validation_points": [ + { + "reason": "compliance_criteria.json is empty or contains an empty list." + } + ] + }, + { + "test_case_id": "TC-RESTful-001", + "test_case_name": "核心命名与结构规范检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。", + "duration_seconds": 0.0009870420035440475, + "timestamp": "2025-07-11T18:01:51.339511", + "validation_points": [ + { + "passed": true, + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。" + } + ] + }, + { + "test_case_id": "TC-DMS-PAGINATION-001", + "test_case_name": "分页参数检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount", + "duration_seconds": 0.000888041002326645, + "timestamp": "2025-07-11T18:01:51.340429", + "validation_points": [ + { + "path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report", + "method": "PUT", + "missing_params": [ + "pageNo", + "pageSize", + "isSearchCount" + ], + "found_params": { + "pageNo": false, + "pageSize": false, + "isSearchCount": false + } + } + ] + }, + { + "test_case_id": "TC-RESTful-004", + "test_case_name": "资源集合复数命名检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过检查:PUT 方法,不适用于资源集合复数检查。", + "duration_seconds": 0.0009685420081950724, + "timestamp": "2025-07-11T18:01:51.341439", + "validation_points": [ + { + "passed": true, + "message": "跳过检查:PUT 方法,不适用于资源集合复数检查。" + } + ] + }, + { + "test_case_id": "TC-RESTful-002", + "test_case_name": "资源路径名词检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 符合资源名词命名规范。", + "duration_seconds": 0.0008787080005276948, + "timestamp": "2025-07-11T18:01:51.342357", + "validation_points": [ + { + "passed": true, + "message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 符合资源名词命名规范。" + } + ] + }, + { + "test_case_id": "TC-DMS-CORE-SCHEMA-001", + "test_case_name": "DMS核心存储服务API响应格式检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}", + "duration_seconds": 0.0008883330010576174, + "timestamp": "2025-07-11T18:01:51.343282", + "validation_points": [ + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-001", + "test_case_name": "返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "针对 PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report (状态码 200) 的响应体 conforms to the JSON schema.", + "duration_seconds": 0.0009844169981079176, + "timestamp": "2025-07-11T18:01:51.344303", + "validation_points": [ + { + "passed": true, + "message": "针对 PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report (状态码 200) 的响应体 conforms to the JSON schema." + } + ] + }, + { + "test_case_id": "TC-RESTful-003", + "test_case_name": "时间字段ISO 8601格式检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。", + "duration_seconds": 0.0008577499975217506, + "timestamp": "2025-07-11T18:01:51.345194", + "validation_points": [ + { + "passed": true, + "message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。" + } + ] + }, + { + "test_case_id": "TC-DMS-URL-VERSION-001", + "test_case_name": "DMS API URL版本号检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 正确以'/api/'开头;API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 包含版本标识: 'v1'", + "duration_seconds": 0.0009250000002793968, + "timestamp": "2025-07-11T18:01:51.346156", + "validation_points": [ + { + "full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report" + }, + { + "pattern_matched": "/v\\d+/", + "version_string": "v1", + "full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-002", + "test_case_name": "灵活的返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "", + "duration_seconds": 0.0008801670046523213, + "timestamp": "2025-07-11T18:01:51.347074", + "validation_points": [] + }, + { + "test_case_id": "TC-SECURITY-001", + "test_case_name": "HTTPS 协议强制性检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "API通过HTTP (http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report) 响应了成功的状态码 200,这违反了HTTPS强制策略。", + "duration_seconds": 0.0009055830014403909, + "timestamp": "2025-07-11T18:01:51.348025", + "validation_points": [ + { + "status_code": 200 + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-QUERY", + "test_case_name": "查询参数类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。", + "duration_seconds": 0.000982333003776148, + "timestamp": "2025-07-11T18:01:51.349041", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-BODY", + "test_case_name": "请求体字段类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "当请求体字段 'version' 类型不匹配时, 业务错误码应为 -1,但实际为 0。", + "duration_seconds": 0.0010403340129414573, + "timestamp": "2025-07-11T18:01:51.350114", + "validation_points": [ + { + "expected_code": -1, + "actual_code": 0, + "response_body": { + "code": 0, + "data": true, + "message": "创建成功" + } + } + ] + }, + { + "test_case_id": "TC-ERROR-4002", + "test_case_name": "数值参数越界检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "当 body 字段 'record_count' 值为 10001 (超出范围: min=0, max=10000) 时, 业务错误码应为 -1,但实际为 0。", + "duration_seconds": 0.0010148750006919727, + "timestamp": "2025-07-11T18:01:51.351161", + "validation_points": [ + { + "expected_code": -1, + "actual_code": 0, + "response_body": { + "code": 0, + "data": true, + "message": "创建成功" + } + } + ] + }, + { + "test_case_id": "TC-ERROR-4006", + "test_case_name": "非法枚举值检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:未找到具有明确枚举值限制的字段。", + "duration_seconds": 0.0009512079996056855, + "timestamp": "2025-07-11T18:01:51.352145", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:未找到具有明确枚举值限制的字段。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-BODY", + "test_case_name": "缺失必填请求体字段检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "当移除必填请求体字段 'data' 时, API应返回状态码 200,但实际为 400。", + "duration_seconds": 0.000999500000034459, + "timestamp": "2025-07-11T18:01:51.353187", + "validation_points": [ + { + "expected_status": 200, + "actual_status": 400 + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-QUERY", + "test_case_name": "缺失必填查询参数检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。", + "duration_seconds": 0.0009224999957950786, + "timestamp": "2025-07-11T18:01:51.354153", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。" + } + ] + } + ] + }, + { + "endpoint_id": "DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report", + "endpoint_name": "Delete wb_dr_pro_daily_report", + "overall_status": "通过", + "duration_seconds": 0.01955, + "start_time": "2025-07-11T18:01:51.354244", + "end_time": "2025-07-11T18:01:51.373794", + "executed_test_cases": [ + { + "test_case_id": "TC-STATUS-001", + "test_case_name": "基本状态码 200 检查", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "响应状态码为 200,符合预期 200。", + "duration_seconds": 0.0008209579973481596, + "timestamp": "2025-07-11T18:01:51.355232", + "validation_points": [ + { + "passed": true, + "message": "响应状态码为 200,符合预期 200。" + } + ] + }, + { + "test_case_id": "TC-HEADER-001", + "test_case_name": "必需请求头Schema验证", + "test_case_severity": "HIGH", + "status": "失败", + "message": "缺少必需的请求头 X-Tenant-ID;缺少必需的请求头 X-Data-Domain;缺少必需的请求头 Authorization", + "duration_seconds": 0.000868874994921498, + "timestamp": "2025-07-11T18:01:51.356137", + "validation_points": [ + { + "header": "X-Tenant-ID", + "possible_names": [ + "X-Tenant-ID" + ], + "endpoint": "DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report" + }, + { + "header": "X-Data-Domain", + "possible_names": [ + "X-Data-Domain" + ], + "endpoint": "DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report" + }, + { + "header": "Authorization", + "possible_names": [ + "Authorization" + ], + "endpoint": "DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report" + } + ] + }, + { + "test_case_id": "TC-SECURITY-002", + "test_case_name": "敏感字段加密检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "未在响应中找到需要检查的敏感字段。", + "duration_seconds": 0.0008231670071836561, + "timestamp": "2025-07-11T18:01:51.356988", + "validation_points": [ + { + "passed": true, + "message": "未在响应中找到需要检查的敏感字段。" + } + ] + }, + { + "test_case_id": "TC-LLM-COMPLIANCE-001", + "test_case_name": "LLM合规性综合检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "合规性标准列表为空,跳过LLM合规性检查。", + "duration_seconds": 0.0015773750055814162, + "timestamp": "2025-07-11T18:01:51.358594", + "validation_points": [ + { + "reason": "compliance_criteria.json is empty or contains an empty list." + } + ] + }, + { + "test_case_id": "TC-RESTful-001", + "test_case_name": "核心命名与结构规范检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。", + "duration_seconds": 0.0008904580026865005, + "timestamp": "2025-07-11T18:01:51.359530", + "validation_points": [ + { + "passed": true, + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。" + } + ] + }, + { + "test_case_id": "TC-DMS-PAGINATION-001", + "test_case_name": "分页参数检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount", + "duration_seconds": 0.0008306670060846955, + "timestamp": "2025-07-11T18:01:51.360397", + "validation_points": [ + { + "path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report", + "method": "DELETE", + "missing_params": [ + "pageNo", + "pageSize", + "isSearchCount" + ], + "found_params": { + "pageNo": false, + "pageSize": false, + "isSearchCount": false + } + } + ] + }, + { + "test_case_id": "TC-RESTful-004", + "test_case_name": "资源集合复数命名检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过检查:DELETE 方法,不适用于资源集合复数检查。", + "duration_seconds": 0.000890750001417473, + "timestamp": "2025-07-11T18:01:51.361324", + "validation_points": [ + { + "passed": true, + "message": "跳过检查:DELETE 方法,不适用于资源集合复数检查。" + } + ] + }, + { + "test_case_id": "TC-RESTful-002", + "test_case_name": "资源路径名词检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 符合资源名词命名规范。", + "duration_seconds": 0.0009288339933846146, + "timestamp": "2025-07-11T18:01:51.362317", + "validation_points": [ + { + "passed": true, + "message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 符合资源名词命名规范。" + } + ] + }, + { + "test_case_id": "TC-DMS-CORE-SCHEMA-001", + "test_case_name": "DMS核心存储服务API响应格式检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}", + "duration_seconds": 0.0008226659992942587, + "timestamp": "2025-07-11T18:01:51.363181", + "validation_points": [ + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-001", + "test_case_name": "返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "针对 DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report (状态码 200) 的响应体 conforms to the JSON schema.", + "duration_seconds": 0.000995124995824881, + "timestamp": "2025-07-11T18:01:51.364215", + "validation_points": [ + { + "passed": true, + "message": "针对 DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report (状态码 200) 的响应体 conforms to the JSON schema." + } + ] + }, + { + "test_case_id": "TC-RESTful-003", + "test_case_name": "时间字段ISO 8601格式检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。", + "duration_seconds": 0.0008364590030396357, + "timestamp": "2025-07-11T18:01:51.365084", + "validation_points": [ + { + "passed": true, + "message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。" + } + ] + }, + { + "test_case_id": "TC-DMS-URL-VERSION-001", + "test_case_name": "DMS API URL版本号检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 正确以'/api/'开头;API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 包含版本标识: 'v1'", + "duration_seconds": 0.0009462090092711151, + "timestamp": "2025-07-11T18:01:51.366075", + "validation_points": [ + { + "full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report" + }, + { + "pattern_matched": "/v\\d+/", + "version_string": "v1", + "full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-002", + "test_case_name": "灵活的返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "", + "duration_seconds": 0.0008159999997587875, + "timestamp": "2025-07-11T18:01:51.366929", + "validation_points": [] + }, + { + "test_case_id": "TC-SECURITY-001", + "test_case_name": "HTTPS 协议强制性检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "API通过HTTP (http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report) 响应了成功的状态码 200,这违反了HTTPS强制策略。", + "duration_seconds": 0.0008562090079067275, + "timestamp": "2025-07-11T18:01:51.367820", + "validation_points": [ + { + "status_code": 200 + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-QUERY", + "test_case_name": "查询参数类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。", + "duration_seconds": 0.0010283330047968775, + "timestamp": "2025-07-11T18:01:51.368883", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-BODY", + "test_case_name": "请求体字段类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "当请求体字段 'version' 类型不匹配时, 业务错误码应为 -1,但实际为 404。", + "duration_seconds": 0.0010812500113388523, + "timestamp": "2025-07-11T18:01:51.369995", + "validation_points": [ + { + "expected_code": -1, + "actual_code": 404, + "response_body": { + "code": 404, + "data": false, + "message": "未找到要删除的资源" + } + } + ] + }, + { + "test_case_id": "TC-ERROR-4002", + "test_case_name": "数值参数越界检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:未找到具有明确范围限制的数值字段。", + "duration_seconds": 0.0009402919968124479, + "timestamp": "2025-07-11T18:01:51.370965", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:未找到具有明确范围限制的数值字段。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4006", + "test_case_name": "非法枚举值检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:未找到具有明确枚举值限制的字段。", + "duration_seconds": 0.0008508750033797696, + "timestamp": "2025-07-11T18:01:51.371851", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:未找到具有明确枚举值限制的字段。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-BODY", + "test_case_name": "缺失必填请求体字段检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "当移除必填请求体字段 'data' 时, API应返回状态码 200,但实际为 400。", + "duration_seconds": 0.0008847499993862584, + "timestamp": "2025-07-11T18:01:51.372772", + "validation_points": [ + { + "expected_status": 200, + "actual_status": 400 + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-QUERY", + "test_case_name": "缺失必填查询参数检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。", + "duration_seconds": 0.0009503329929430038, + "timestamp": "2025-07-11T18:01:51.373768", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。" + } + ] + } + ] + } + ], + "stage_results": [ + { + "stage_id": "dms_crud_scenario_stage", + "stage_name": "DMS Full CRUD Scenario", + "description": "Performs a full Create -> Read -> Update -> Read -> Delete -> List workflow for a single DMS business object. (Scenario for: lujing_test)", + "api_group_name": "Global (所有API)", + "tags": [ + "dms", + "crud", + "scenario" + ], + "overall_status": "失败", + "duration_seconds": "0.00", + "start_time": "2025-07-11T18:01:51", + "end_time": "2025-07-11T18:01:51", + "message": "测试阶段因步骤 'Step 1: Create Resource' 的状态 (执行错误) 而中止.", + "executed_steps_count": 1, + "executed_steps": [ + { + "step_name": "Step 1: Create Resource", + "description": null, + "lookup_key": "CREATE", + "resolved_endpoint": null, + "status": "执行错误", + "message": "步骤执行期间发生意外错误: name 'BaseEndpoint' is not defined", + "duration_seconds": "0.0000", + "timestamp": "2025-07-11T18:01:51+0800", + "validation_points": [], + "api_call_curl": "N/A", + "request_details": null, + "extracted_outputs": {}, + "context_after_step_summary": {} + } + ], + "final_stage_context_summary": { + "pk_name": "description", + "pk_value": "6802f559-3888-476e-bca5-a95f87fd7e6a", + "current_payload": "Type: dict, Keys/Count: 1", + "update_payload": "Type: dict, Keys/Count: 1", + "scenario_endpoints": "Type: dict, Keys/Count: 5" + } + }, + { + "stage_id": "dms_crud_scenario_stage", + "stage_name": "DMS Full CRUD Scenario", + "description": "Performs a full Create -> Read -> Update -> Read -> Delete -> List workflow for a single DMS business object. (Scenario for: lujing_test)", + "api_group_name": "Global (所有API)", + "tags": [ + "dms", + "crud", + "scenario" + ], + "overall_status": "失败", + "duration_seconds": "0.00", + "start_time": "2025-07-11T18:01:51", + "end_time": "2025-07-11T18:01:51", + "message": "测试阶段因步骤 'Step 1: Create Resource' 的状态 (执行错误) 而中止.", + "executed_steps_count": 1, + "executed_steps": [ + { + "step_name": "Step 1: Create Resource", + "description": null, + "lookup_key": "CREATE", + "resolved_endpoint": null, + "status": "执行错误", + "message": "步骤执行期间发生意外错误: name 'BaseEndpoint' is not defined", + "duration_seconds": "0.0000", + "timestamp": "2025-07-11T18:01:51+0800", + "validation_points": [], + "api_call_curl": "N/A", + "request_details": null, + "extracted_outputs": {}, + "context_after_step_summary": {} + } + ], + "final_stage_context_summary": { + "pk_name": "description", + "pk_value": "8562a278-d1eb-4d56-b7e6-6db4aa14b6c8", + "current_payload": "Type: dict, Keys/Count: 1", + "update_payload": "Type: dict, Keys/Count: 1", + "scenario_endpoints": "Type: dict, Keys/Count: 5" + } + } + ], + "api_call_details_summary": [] +} \ No newline at end of file diff --git a/test_reports/2025-07-11_18-55-23/summary.json b/test_reports/2025-07-11_18-55-23/summary.json new file mode 100644 index 0000000..e69de29 diff --git a/test_reports/2025-07-11_18-57-44/api_call_details.md b/test_reports/2025-07-11_18-57-44/api_call_details.md new file mode 100644 index 0000000..c7a804d --- /dev/null +++ b/test_reports/2025-07-11_18-57-44/api_call_details.md @@ -0,0 +1,8234 @@ +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 55' -d '{"data": [{"description": "test-entry-from-scenario"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "data": [ + { + "description": "test-entry-from-scenario" + } + ] +} +``` +### Response Details +- **Status Code:** `400` +- **Elapsed Time:** `0.0006s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "115", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 400, + "message": "创建失败,数据项缺少主键 'lujing_test_id'" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.892671"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.892671" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0006s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.893971"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.893971" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.895131"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.895131" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.896599"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.896599" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.897636"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.897636" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.898778"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.898778" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.899742"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.899742" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.900781"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.900781" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.901796"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.901796" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.902823"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.902823" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.904921"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.904921" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.906008"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.906008" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.907137"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.907137" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.908090"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.908090" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.909170"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.909170" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 193' -d '{"version": 12345, "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.910366"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": 12345, + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.910366" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0006s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 199' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 10001, "status": "active", "update_date": "2025-07-11T18:57:44.912003"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 10001, + "status": "active", + "update_date": "2025-07-11T18:57:44.912003" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.913606"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.913606" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 30' -d '{"version": "1.0.0", "act": 0}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0 +} +``` +### Response Details +- **Status Code:** `400` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "102", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 400, + "message": "请求体格式错误,应为 {'data': [...]}" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.915752"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.915752" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.915752" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.915752" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.915752" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.915752" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.915752" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.915752" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.915752" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.915752" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.915752" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.915752" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.915752" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.915752" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.915752" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.915752" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.915752" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.915752" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.915752" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.915752" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.915752" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "229", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.915752" + } + ], + "message": "获取 'lujing_test' 列表成功" +} +``` + +--- +## `GET http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0/param_id` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0/param_id +``` +### Request Details +- **Method:** `GET` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0/param_id` +- **Headers:** +```json +{ + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `404` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "91", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "message": "资源 'lujing_test' with ID 'param_id' 未找到." +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.937246"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.937246" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.938274"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.938274" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.939302"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.939302" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.940349"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.940349" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.941289"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.941289" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.942224"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.942224" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.943255"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.943255" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.944255"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.944255" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0006s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.945356"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.945356" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.946323"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.946323" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.947295"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.947295" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.948436"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.948436" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.949567"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.949567" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.950599"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.950599" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.951607"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.951607" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 193' -d '{"version": 12345, "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.952712"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": 12345, + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.952712" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 199' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 10001, "status": "active", "update_date": "2025-07-11T18:57:44.953838"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 10001, + "status": "active", + "update_date": "2025-07-11T18:57:44.953838" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.954880"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.954880" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 30' -d '{"version": "1.0.0", "act": 0}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0 +} +``` +### Response Details +- **Status Code:** `400` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "102", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 400, + "message": "请求体格式错误,应为 {'data': [...]}" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 195' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "lujing_test_id": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.956832"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "lujing_test_id": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.956832" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0006s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0006s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 63' -d '{"version": 12345, "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": 12345, + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 20' -d '{"version": "1.0.0"}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0" +} +``` +### Response Details +- **Status Code:** `400` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "115", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 400, + "message": "请求体格式错误,应为 {'data': [{pk: value}, ...]}" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.977510", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.977510", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.978653", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.978653", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.979718", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.979718", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.980783", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.980783", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.981767", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.981767", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.982732", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.982732", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.983732", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.983732", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.984770", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.984770", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.985762", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.985762", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.986728", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.986728", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.987723", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.987723", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.988633", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.988633", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.989583", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.989583", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.990573", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.990573", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.991641", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.991641", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 204' -d '{"version": 12345, "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.992709", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": 12345, + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.992709", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 210' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 10001, "status": "active", "update_date": "2025-07-11T18:57:44.993812", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 10001, + "status": "active", + "update_date": "2025-07-11T18:57:44.993812", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.994895", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.994895", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 30' -d '{"version": "1.0.0", "act": 0}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0 +} +``` +### Response Details +- **Status Code:** `400` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "102", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 400, + "message": "请求体格式错误,应为 {'data': [...]}" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:44.996881", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.996881", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.996881", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:44 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.996881", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.996881", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.996881", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.996881", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.996881", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.996881", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.996881", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.996881", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.996881", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.996881", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.996881", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.996881", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.996881", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.996881", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.996881", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.996881", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.996881", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.996881", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +**cURL Command:** +```sh +curl -X POST -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 0' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "251", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:44.996881", + "wb_dr_pro_daily_report_id": "example_string" + } + ], + "message": "获取 'wb_dr_pro_daily_report' 列表成功" +} +``` + +--- +## `GET http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/param_id` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/param_id +``` +### Request Details +- **Method:** `GET` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/param_id` +- **Headers:** +```json +{ + "Accept": "application/json" +} +``` +### Response Details +- **Status Code:** `404` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "102", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "message": "资源 'wb_dr_pro_daily_report' with ID 'param_id' 未找到." +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.017555", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:45.017555", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.018628", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:45.018628", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.019752", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:45.019752", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.020868", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:45.020868", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.021872", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:45.021872", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.022916", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:45.022916", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.023841", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:45.023841", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0009s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.025258", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:45.025258", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.026325", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:45.026325", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.027303", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:45.027303", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.028365", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:45.028365", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.029281", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:45.029281", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.030259", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:45.030259", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.031193", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:45.031193", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.032208", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:45.032208", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 204' -d '{"version": 12345, "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.033300", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": 12345, + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:45.033300", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 210' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 10001, "status": "active", "update_date": "2025-07-11T18:57:45.034394", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 10001, + "status": "active", + "update_date": "2025-07-11T18:57:45.034394", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.035468", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:45.035468", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 30' -d '{"version": "1.0.0", "act": 0}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0 +} +``` +### Response Details +- **Status Code:** `400` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "102", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 400, + "message": "请求体格式错误,应为 {'data': [...]}" +} +``` + +--- +## `PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X PUT -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 206' -d '{"version": "1.0.0", "act": 0, "data": [{"description": "example_string", "record_count": 0, "status": "active", "update_date": "2025-07-11T18:57:45.037422", "wb_dr_pro_daily_report_id": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `PUT` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "act": 0, + "data": [ + { + "description": "example_string", + "record_count": 0, + "status": "active", + "update_date": "2025-07-11T18:57:45.037422", + "wb_dr_pro_daily_report_id": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "60", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 0, + "data": true, + "message": "创建成功" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 63' -d '{"version": 12345, "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": 12345, + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 20' -d '{"version": "1.0.0"}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0" +} +``` +### Response Details +- **Status Code:** `400` +- **Elapsed Time:** `0.0005s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "115", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 400, + "message": "请求体格式错误,应为 {'data': [{pk: value}, ...]}" +} +``` + +--- +## `DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +**cURL Command:** +```sh +curl -X DELETE -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 65' -d '{"version": "1.0.0", "data": [{"description": "example_string"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report +``` +### Request Details +- **Method:** `DELETE` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "version": "1.0.0", + "data": [ + { + "description": "example_string" + } + ] +} +``` +### Response Details +- **Status Code:** `200` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "93", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 404, + "data": false, + "message": "未找到要删除的资源" +} +``` + +--- +## `POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +**cURL Command:** +```sh +curl -H 'User-Agent: python-requests/2.32.3' -H 'Accept-Encoding: gzip, deflate, br, zstd' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'Content-Type: application/json' -H 'Content-Length: 55' -d '{"data": [{"description": "test-entry-from-scenario"}]}' --insecure http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test +``` +### Request Details +- **Method:** `POST` +- **Full URL:** `http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test` +- **Headers:** +```json +{ + "Content-Type": "application/json", + "Accept": "application/json" +} +``` +- **Body:** +```json +{ + "data": [ + { + "description": "test-entry-from-scenario" + } + ] +} +``` +### Response Details +- **Status Code:** `400` +- **Elapsed Time:** `0.0004s` +- **Headers:** +```json +{ + "Server": "Werkzeug/3.1.3 Python/3.12.0", + "Date": "Fri, 11 Jul 2025 10:57:45 GMT", + "Content-Type": "application/json", + "Content-Length": "115", + "Connection": "close" +} +``` +- **Body:** +```json +{ + "code": 400, + "message": "创建失败,数据项缺少主键 'lujing_test_id'" +} +``` + +--- \ No newline at end of file diff --git a/test_reports/2025-07-11_18-57-44/report_cn.pdf b/test_reports/2025-07-11_18-57-44/report_cn.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ce9e4c9f94de758ec6cd0cee7ce8f6346edd21e0 GIT binary patch literal 114398 zcmdS8V|Zm-n}!?Pc2Z%*X2rH`+qTV$?Mf=Pjf!pC6x*~rz*l;lqd5>p2g zH#;+XR}xECS4SR3Mh_1U2Iv1MYinf8VB%m0$4tUR;$UnI$IA=HD9%j6@<%F@Fp9I# zGLf({{kLEyVP*SE!143Lnc18ERpGCa|5Z`g$i+Yv{~`mf8MCx6=dx2{K3|9bJihT)HIMP~;S6*JdAZ882ee2l7Qo_|b9*%?`w3IFRV z@~^8DiQb=ABwqfGm3vI|C^b=#__+#?SIU0|7ZXI zG&AgfXNK)x^X8vshU0I|{A*_X)6D!e)&I{lWBb?g{->GwYpMTVGk=AJKWp}%X6CP@ z{(sHeMi&A)Ha|KsLgo8Uif*)abt z1+e`?DS-KJF@WtKiUG`j%K_~FP!3@JTM%IXhk^j}-;x0PKa>QR{}u(<|Dh36x{5e?uBUymuZ&`r-AIbtOf6D^w|4w%ipp9 z$3K(>SpJp;IR2q5!1C`bAZ}&rYUcb`s!QDVPX`%JR?5}K@teL%qt0f6D8#~iq zc`FxJXEP%^IM1B0l_`62b_~c}zr3P!61E=z2N@;u&y*oLC=^^Gl7(^v`b7E4WV++a zGZ%RXH26ri;_T>&$JaE!%Z@AJk&%NvH;<3=SFeE9?kghXk%;@JJAnJPLnq_L%HZwz z>eisq=Nl0Jb4Oq+zov$fbH~reYb%eRh&aF2-rjwsR}c7d=M8Lmuem#kAin1RY$DW0 z?hOEJ3iz%QAvq`zr(M_91aJ%3o($fee{yvBe9HxH=CvH0+qZXgZ}HhCq(cXE2z>Z{ zHeJ?yo?iv5`vcwA-P3yU5lub;b=^5v&l|767q`w1t+b7;shn1gjoUqgfW|Ms^B5D} z1+HeU?b0V^E-5(DxsY~HHe_-(U?K@?HpW*C_ILfn2pqQ}V!4X^#-N;pv&;Ee_vhCv zgx;CR_PwKIGKicye_0VCIZ0$=Q0@nLI(2!7ea1*dQmv;OG1dnO48{5*0Lp9HR{HYO z)KM0Q(Rhbl=ukg!UR<6CnE}+Au|s{=7Q-%br9bQB5|ckPj(-|=K><&(o}>cQ5dyRj zoXt-2b62Qb_8n{0fb_P@Uyt1?aZH-zneR-xjbm4!hCCTLXvFR9lw&Q{s&Eb(#F(9p zD~(reRbp?~Yj6&lMQ#PVX!KDPhDJk@clxgnPug+-Nd8p4AvGnUUL6N3Y)2(=z8e;PfIcOM(j*n?>*o7yo3Ni zfg}Ne0;9yc$am2HSLz-J0YL)33-l2mBHuv2f&>0rp5P_iNxT#TP=Q|qLIuW&_x_ih zVJA9DxRH1z11JGu0#XD9i2t|DKeVuux}$nY2EYQz1A+y{@^=;ff6KvqXd6k6sxhb! zi=}|&d4%3LOq0oq{BUMKKURy;hb!)Jjw|DE604251ww!%`mwH-hL#1(d9R)A;9EQ0 zs8P6p*%0ly^@$7BwVn~f%}8Qm{=kRKbx9ww@5m}Vz=(d-D`=;-3Lg^4jg15M5%<{W z_<0Ba9@=Yq#TfRk!E!-@?7p!ygKjlu(xY zYBW{*=l+ST-Wu|`ZX zk;ZL0brygB-KO^*U~+n$^Qm{48K6?u+)-H0cbm(R$gi9u5VzNO zOCNvPn&HsD$GvtsdaY)E(Kr@p46m&ca521~Jy9TFs(Mhk3ZcEf*5Xv3&e!s+U1of4 zOMRr0ZzFCk3R+ygzgc{MKAnQXS}}SS!%oUV@%yATgvVEeF7o>OQp;XkQk=+l_^Dnfy?tq z%ruuR?4~23|8Wf-S>Mr}O<2AU=usF?#lYhZm@hw147)jAiMhwtbAA$|3fQ4~+Vf`% z{OT9a8)W)x4BZi1*rUb&7FiMVgHa>00!8@imy40FTy9q?KTBbRk#r+C>?h5Yu=dKS zJ3M|Xr+FL5l-44S%mb36$b~4%k|?jxyCQ;FXp5C3;aqS9B+7fy zO!MF4Nxw!Tm%ABwG*V zD5kfhT@P<5UYJF4<>3Lp6z!a~Z-TxQd!O}prQ``jDiS$m;(^bNi!X4QReFGPW#B>1 zO<)kjE;2bKb!F~=Ae2ZinwUL0g>$9ofYXbs5n3rapM5-qLg|k?rF3QWrs#m&iq;Ra z7ilflC`La;a;55k?}plnyApaXS}9s7Tq))(;4I=Se4ovp`#7aPtvRoR~(p$mhzy#5al3wb$4W?QN}YrlLV;(Z-e%byh6W9`j$gmM=>pyRk8?E84e>2<@eG=`jts#LE;0DzY{`?h`jBXJ_ z*d}prqkUJEK0(nilLx}wCwE@J{%zfE;x+v&RrqPm{V42Wdh9Z4Q>x461om{cV<1ZS z=~oAOSjc|(GX4I~Pg7BZ5YWr`XrxF)6Mbm;$ozqR7i8Bb(M@ah0(2^SbYqVoquBqGx3v3dBT?B0CU%&CB~Z3?EUrAvaf$Fe5Ro|7wyiW*ZcB6 zwN7+{;VNSQC`qM$w5uv*)%In~@?bo+whl120p%RuDjjbe3@D8gXfOblGmH4A?`KS& zvjm>~al7R;kTZ86!sg}MWj|pT9KAr0_me7>RxM*`<3GPCdn}|-Q?Md`do1zH;rLxL z%;mJOsvapGV|B434Rs3=l$7J_`eQNTzUUqADXbOdeISI7lZPeVPe^#Klna8BW7x@L z6q`Ipr$&5X{r3=xnsoSj^@AvXj1Lr+>Htx@+$gNZY zr<~Ya!1QqVjOSpYZ~$7sMiujKwQk4hBq?oYVFTIT-@}MCNp6p@kL#>1ZJ~?= zk>YMHt4Z)@MTsOoJ4CkhC1VgTHJf}7lkSVmS9j^ymp1@YJ$4Zt_D#--k(G*!#j6!3 z#}qBVsTUO^T1rlhRq7n4o1YqVJTsOI&->(RU)Jg*l75#Hhc!Y_jV}Epoq$q{j;kp< zN3;EXsAGG^=&KC;gS)t!6 zT7&6~gvck3((m@j3gQyE)=G)w=Yu8ezNU5>oP*-dbXk3wqj#5LSk9M{OcaSb?#OAh zZ6i^?kEBtOX~FB0Qf2X?bLwSTv%J`kogFvTU8RXZq>ge|Oz>hyk~`4gj$=tnczLqi z7^~Jmg-cZ2L9riQ>;OMgb*GDfC;q+r= zh&(aj2Q(6@^Q({jMqUk@BTJ$zNbs0kcbI=D5=f6G)jkhYIV}EylQx1VYH!FeA}pi&f=`0yE8 z6)MhVNs29CexN7i*Pt2uRx^LG4tT1bj(T`4Laben-H5WV*2>$Sapo?8UJiMN^)hA) zPtFP{yNTQAxN7~g=KWK)1T|q7H>O8Jb_Ls!-5tj-a{6X!56{hzdV={b#3KmSq@SHo z{sCMDvX8koj9;CW}$HCQRAmkpGD9PTS>BI^9S0vnXl zXTfQ*F^OO?f3t(PZuR2MiQj4AcFRqw#3rO)1IRdq(LHwD;tZmmhy;;84bOjxpdGMK zVdHV5@=IX=iPeN64~r(-%~n}O>(R_R?-VL3QF2l0@%xMS1`4wGa0{$&FD zj!Ez)z!hQ`9Jo?}d(jqe7qx(dfUSF>gRM&L4`{HvV|y{4?*HI8u;;%{0%|f~%ZQmM z-`i4{?@ke5ciAq#Zx{@5ZuhThWSVwp%cfOFl4ql-Ydk>P(GPIBsD<5uls@REc`Rwh z3tXEwUflz_a}0)7$+(eEx_!58fU6Te;Z-=y4QgYErj6j-N4C?>QZjJLMe9izunygQ zh)%+NXJ!2bMktvIk?wLglY(jRxYA#_-H<;>>_FVRar7eCXVp&|&fC;0M`VNi-C@Kd zOVsUD`{!a)ep!9qSjy<`PM*_irTOB*DotTx*nW#6#ZYu;B86N$%(w(a5s3gyl$u>8 zYyrk?mb@pTrfA#vz5+d)#Jl)Z@3Y9KMe1MAUdW|uIK%sT%ysy_^{pDyVX#;+*=~fR zxh1;^+YYM2Ag?JA?V>Fe=hztOPzKfE(?Q~%qaQ4dG<;~Kp=DE3nsn`3i-+KqBq&A~ zBjiuK+Rvu@QFq2DrHedhA7UYJ!q$w$XT(CN%AA0P8B~6iL7ZVFS+&>{?(Y_JCrv_S zY_k&6qLimoNjdi{O&arZ>-$1uPA-5VtCu2K(-^Q(&*i zx6iDlLY4uUABH96NP2-rDZvi^g7XCcN&$V@+dpNxiC;j=eU$3B_D!ouy5M^riycy< z5frhrl0p_eMV-7-VmhqZjixvv!38eaNV-jvTLpB zky$mE`*&X42Dp9k)Av=^>XWIL=tz2x#d`QRM_-MGf!X;JtL|0bk1-oqULn!v{ASwgIj1w)MU3S!nJ-!TW- z$-gmq=G&n_7=CXgGlE2(#RYyjz%ZV3hYY~NA98P^P=#n@{WZyaZJm~X)Fs60$~X52 z>h3j&z$XuU=d0|NT(6{!CEE9mgT9Uc7(N12J1Emf=fs~-Zlv5gZ9c@zpd+!D%iX?jlwD3l^HY!=nfL%2}tbuQSmM`;9b=%mJ&6#Yv-WdA`U)Pwc+s$gqU&OQxU?A=u<_@0saE6VyfF!9i4k^r8EYJi{~> z4=-iZ9;`~ErcsYK<=6-I4h*A_VjrZ*v*DZQG@3N9bx;$iVMsu;kl><+sLFezmF8Km zgNBvPheC&$OtThMCgIkX9a;(zz@djdG|spHy_NyV>0y$c+Od{ArqTv!a)be)(xvtw zwZm4(w)xV>z@w&)-B~ay4OUxjXl9pT{edpeAVNM2l zY;vk|t*_gHY3ehXg;_xs*ti zgXiNDEymMrHs!Vnrszq$f4@f}dJ5`q-3rD{Go8Zfa{pMwKU=YcZ8JbP0!_FI4S@_u z@x7t`8YpH1B%yB6svBZjmas4^4TzeT@a#{Z5 zW^gW}nJ-0zOXR40y6^#4u}zrg0mlngk*fJ`W!rI`%?aia=u?F~MChYVdPOZEI~kIA zVYRmqsaFb_97@u~gH{6W7x~`!e&|y{pOS@ej&Br}*mZAOL|NFAX)kQ)FWo4Ie8-cLBJ>8^oUznE6_1qr7!IC7Dy4-|JmTi5Oz(;qyCMHx;#NHYe&+ ztdH1-OZjE*Uu>B*%l-IPaoKj*_nFU6pMo8xY%Y zUc?7?K)!&Cm9>Mhf?nE4RaYyJa4M#z^=a!DGK9nqQ?w;^)pq8@iX&9-2Bly7u6oJ<-VJ)Fg=wU|u_?>~xcqo#wYU6#I9;7BVf$XE#W+`y@vwv$oOU{haNuIvDYBcuiC@QgketwmGy6DbEp7HnD*4Qk+*(UQ~CMxyW8lR3fz!YJB#Ro*Eaun0~ zI+WTuV!_ob_5csw8uHAGcv4oOG9*JAm_7O-ZnFSGqy6 zhX9Py=e$QY8tg!s4`_{zLz^y1N1#r@;r=^YU=h(Q#*N%?C*xp7kA~o!0T{?jnqzSr z@xD38J|z)W=Txl|uqbEajd->rDe}rc$6x1R6=eK}5>F_Cz`GMihpgl(eH1yS zW@GiK<{-tUydFrmc{6BNN?_^WG6KOpg@#EB1(Q}cg+N$59Q2nA=`GYX)WoB&$lr@3 zHKqKmE?I^^+clDStw;51)Ak{7wpLNpn|S*DnEAG=O_BhNdPa$&#`)xkkk3CGe6nm> zv15F|J3?xm7j^GjL}#btj*BO*86?*QyHFH0y;mx?Ir4@rr1|6*#||kF4U zZQQT>lTzf?@>cRyCi*v_+VRR&i_m^5Lg(5NqScjeH6?0=g5Ok{#VL*{>*g{L$U=A!HJBrF zzeF{4=NRe|MTy|i5g{hb56CnXBRWM*f*bC!c|0>{ls^A1$1gb zHhQV9F?*s(fH5+opCStPn%|sTHChXFOTR0r-o})=0(W2fU4D2Q*2m~8xotpX`3qpX zNz@xpe2Sch84Z>MbI1KlcmU-0ndohlG+F6l)M4Y{{Wwwi=Tfh@pWgGnk)U2CVxVy` z2uO8b7*=)TIBO?0rUJA(24MSkeaHsAhKq1kE_e0EH945GW1j8$!JN+hw_VhbvE!t05ARpp0 z8-lnV-Vc-ynctJ&@Je*S)qkMSP5Z?X)OwBg@VrvizsV2tK0$ux=j0C@=_i6_V!!hB zne`#t`LWz3{?bVm&y~cJ*^u?qebh-Q|O-P#Qu@Vzn89QrFfx6d=wUj7()0a&M#!?X>@TLnm5b0jq0lyHApeEyTO zz~exLtu<=tW)uEC+(^Y>8*_X!Wp zQD7>eQN|b-3JW(pR1sTRQn_)k9(BVISkBFPP|uNP#>ADDpe~cTEjt0sCNLg!Kve=X zbUK6DtOlLCc}c~gC}G}6;A$siJ3+CS>~;2Z)ZIv6Vrlv36VtK9u+phEVjUib#eDKY zU4dMUc29He$lJG9X@Mm6<2H%Xj0OLTqsd)ncgBzzzx|lKYojRNofuKQKKWGL20R2W zv3OXeV5Qhj2{fe*#G9WuFm#9G4TaEdK?HfAMM+~r;W$VxV~c$kZk)d?MMqMup6)Pe ziBxS77yH1`MpvLB_h-LD^^v4h2l=oGieywT%@|!c6)XVU2>7|gODuoAeh@n_4uMYW zbt!^Vz+j4R?d+kL#2LZ!;volG*yUYgWzaNe9MTA)iVWt}1h?oEqQF0-*X2ATp~+5r zWn+g|(9=(PHMEPW{tkmBi|#g5(S&{~5!RVR43_!PpY9tTUqo6L$vUg|CvV%jYjR8) zb;iW*;KQTE%$T=SwuFi*aXjn2`<^?2c10*#p&AcpHoM zHMjZ5V&ENu zIGv;)kZyFiy6oiK1ktmrW(DHRFcK&jVxH>&^I_L5RVFCE-vSB?)G+)NVy04U1sF=H z`eIS*vHHpG3eNk1*q9f` zDJNZ>qW0(ZK{C%w?%6OVt;{VGog^w_!X|4aq#vHtHrpUbq60y7PP<^1K9cE78pW+! zGUZ?l{e_FMIMI3-@@ndRoZ2k+Ol*(iI+u0Qg8ls-JuXhUG6nh3koHsy>06I`(3Xu?C6e3jjrVNMp6Fu7ffBwauU#ObI> zY*5psk_z!N{A0!|hP*^Qf?JSK2U2lX207pZ;#JJU*%c|O8LK5X)l}Ir8bn|>hZv3l z#!uNf&+z?P{(DC+_rWr4!7_E#fJJD!ObAO5&nTjr*q{Vb%@(!DZ#HQ!&GU7~h)9ZK z(I7Q&=U2OyOem`KQl1}s{)w-x7_y$LxH!-|1N8FLjp>VvicBC%2wcf}&nH^@Dh{Rj zA9lYO44H z{A)OL(i9w`v>e&P$+V=($uVDZV56|m4MR$QNCkrDX^=}8e^`lMqCk)VwA`^q+)-6> zK85jySvuvDe%lmbLL85akozw4^KlTFC&-h}EJRWz{do zF8J;Q=P#0Uj|F~1lB3=_+H-A=7Oz~R)Rv797di;nIJiqyREduwnV=aJYNm3-PbnC0 z$@B}{oT<;0`*bW&T|H)ur$rV7NgOv2T@gs~m0n@Z(Ip{MHfv|vvbVx2LKDVZBs+NQc zOQWvLkGM_KI+P;qx|oH?;^OyUD1qmuG_62eGPO>H(M_C^VOwcz$P#-r3pZ3;6GkRA zDjEx-6yCHUQ3H5s4H_SkSh%X}0C`zPPDJo45h;~-QtUA}$l~eQ>~udVRRijLAT{I! ze0|DSDzhv)=#W^6c2P``m@@fMShVpO%%BrprnW%z-NHJ`f#6?qrJ*7v2$7eI&@qwOEwd<8#Ww4~y}Fb- zEM!uqsjC-@Hr?gT)Ydm_((L=J`KhQKZ%+uOjd8m0I*&RVaSZJq6$Q`>18xRp|AO@> zu%uWFM6=QDl`8b2D6T=4xKj>XD`qd6Am`U4e+JW@=%6B3zM%J@Z!@-8)7S1FvxW0` zJjBWg^C0vYivK-@&)j|CSzOs*dKMp7ncUPmlGU~qw-E$d-0-8Gi^cJ7FRtCEAY1Ds zFZldNZTzUOD!h2tajS<)m-r7_ueV}c0{mImC8p5ci!AR9|KNBLgbRuHIU7+xc5VY> z5AWw#!gL#?2S3JD26a|?q$P91G;YZ&L>&jYdG65XGHD#GG3iD_?p9`eqzxtEg-?)k5J--2`Ceyla?Db zTRgFb^Nd)8VZO5xV8P88k24PaLU(fx@#@p77%QV=)=_Gj-7RDhM1emCY38L@qw`gU zAQ~qeZklyeGn(p9@LLW96J=g)pd_mW zi##iICu~cKFd;Gb^$Y^N(~vmGJf_FB%uiGmp=YRjcRN&Mv*t@9c zg*e0V5D>x$H_>y7lSW?HwTFPNGX+NwDsBPNs>{e1Kcc|N{=LLHPy$MESd$7or)#5& zZ^A7*Mi+7xc$(<6Pp%Sa#olz>-XHyDZTm+;>D}d>XM;`HnPq|c3H;IDsTb!m^EAF6oFipbIHsC67X~OA`M>QQHQ3v281k#<$is7r)&buK7t59< z0-$f54PaUKkEQk#LTimwHOg5~s955G?1-Lk{^G7tH}oVPSP0@|N=a?@y|rh%yCTEk zs5C#JF{x1y)>h{RjOfhXT?E$yhd@W6G>QAjo!?09Bbq_*5fo!xKoVT)Hz9N_s5&@| z_FoR7Q@=;iZ>bInHRRqNCm1o+W`cdU>Te(WJgiDGCxt<4IFym+x!g5iZrO(F5i;X0 z6j%T}O*5534WrT$>3PX2Ih)msl17uwF?Q~mqU!15z-fb^qA#Z=c+wQ( z!S3tInnOOwxW{QA zR@TcTMXJ%IwgA?j!5}3Bv+mG~LjFt}Aa2NgB7jnsZ;Mg(PNlf$3>}bMUs2SR9OFjj z3kEbiuijTo^}|aEyeJ2cRU8l!1I4JWYR7;dPk-izG4Wi(!!-=6D*K{UpAu$)Mx*}o zVbJkFNJ-%yzkuRn(t!1b=Z#!1ayxb#++F=Sz1o;6MCLK;o8X6A?4&V}XP6(sDQgKI ze9-{XCWgDNK^Y~Do8fhW5?rKy$hFQ^&}W zG;uS$nQN_>W=vE$&JqirakM^gAO=6(q3?|Ri?r`M&{rdmHYx@RYR;|6CyhxbsJOPk+#8j`By%qFNt@jb*YVRk+^FsYHYJPxd%S9T75Ak z#OUw~mWCoZ5-GtwDCe2ByycJ&go%bs3;C+TV{sHx^IMjrm6GcnA+VK#V9JRcy{KxS zrVR4)w(Xp0Rr|Jx`C(E!`wQ`Q`m!a!Ho`Ohmg-ueGG!trm%QQIbIsHsKJ%TsJ+UhK<2FIr>A zR|?Rrb$lt5q=cMye=b)61#Eh|?9vC(VkMZ>7nh^L#cvmM3|YwL%4aVc1CX1T9aQ|s z58*V|UtV)CL9gojVSgS(dD=zAVGp_B^&L8UpyBJaznu7AQb>Ne+t_q0;A^(S`^02HlOl8IIvdU^Qa8oV~@TXmatbcdwA)8lvLgyGn!(w4`_G0 zI48Mr(LEundt@}KFfAbFWQLY|lzuVD+HfavrQNGLqYA%cHuuVe-8+^;0vY{JVoNkSsbixr4oi(ktG-YSv732h&Mg0H( z55hiuqhamaN52{fLdL*-?3yW*xgUrbMKk_8vBV(IX8S-D7|o_{{VAcT0mp)(z`gTl(e2nvh2D@yx2H8B_-4+sa#-? zx@@Eg^$-xY?cDs~2x8UFoRysi#7;E~0COc+nNPag%GEXyloo$l%O-7B%yhL`svDy( zrmFIYAmoFX6G(MpQ76HD^u~U$$A`H7ZDdPCAlsqJd2}0*%f*BaP@|_ksXDHg6dKu^ z-`3wy!qC1#)K-Gsu`+X7wj@e$SIQxkHk^eKGtmPFRcDHgZ7qr$iN-|qX^ zZu4M+%kh>gB&JE|ygk;5L!0&_NmWcY2~1!0U}JyEIwpMG#&F!}367P5Q#hVDTD9~~ zO_Vol*`BhZ#D!JmTnFcS(eYwLo%ul;rlR}{UUGXp6<@^*KRb00pEk1aaB-tw{eZO| z$p0YpuwyKzF~S=lp_^}_PPlQk32_0_*REdFYW7sEJNrN$Pz`yYU1}P2&)943jvCtM zmAMU;rv=3kgA3p#d6ZMbpky+z+rIb(k~c*$WnOIYAsts`WZ~k^@lIqS0a?mL!!HmD zzRxrhjc^x&gH4OdZQB-WlPIjMl(hRId2d5XAH5?^Et>Yd#7c$=_EH&>|M&=zvmK_1 z0xdO)AeIsg4kHV+Z4Ds&OVu?7g-W>!w*wVD#zjJnL^JMv*&*NvKk&AUK#+jZM}wHp zWg@SVrh#`E9}4*bf`r$la=y6EjNkMX)nu!ve{0_b-h?mb`DLee-vY)u+~DM>%!r0t zEuE>2mPSlDV|c;|Ew;>D)egZB7hiVVYpNB?M>W^dNGDMZDcHnpS^*pOZh;$UwJ49% zAYQcPhq^LPCVFn~kE{!-F&+4H3gU=Ua!Z$1#>QJQ8p188P71p+Rw zl;e%!D9=e#%(DtCDX_Yqhg(osjeUW!WLs}o%Q`zD!{gtdV}cln=c0z<-|}AthtkFC z3&R>#0u<1UGpB-%1*nF0k#VfM^<;io>vOW$T2C2t%6&7 zl;km^7*P*kKe8)j6MXSxD%sx~S{?mK78>`U)!&u}ll7vN913NIIv^c(~ za~9E8yM1P1^#R>;eBfXN&Dgr#WS0l*NYZs%XX3eU{Ct*xUw#Q9af-ZE}SxWpX{C9-5<#?^)iao37>AG zKIp5^M|vC49EE2d56PIf`H~0qB@ZaH`3OyE63*G_)rB@0b%|{A@E# zW_ryxn1oS>DTWv$HD8^8q7^#FTS+hHvbMA3i&K|4EWv3(W}-q&r*JeDpS5_gS# zYuBsnn5r57Qv)f|j4yBpS@r{hYRn)J$sc3szJ!H7-M8>GgGRIsCy-|6LJEE#scCk? z#M;=+rMsv7HsVLziXHaMnw^9HqCIe9)yf3EC5GjBKjQY<3SxYc#PskBR7-S|n6%f` z)kr7WVlmgXTTt`JsEdoo?O@*Rs#Q_=0ug%5wM9$VHp(L3BN#53fEe`b>;9P#^E?Wh z1<1;#UEPqi5B=3-&%(M>>CY>kmM_2GAmiV-!RsApSj`$%z=Vddj&Z+bHofD-8*Woz z#UnV`CjGz-YgC$KG^$HyK}heD*VpAaHCQ((QC@}_!IH`hJ~MV_9^sIZdubH~IPek7 zfAwONaie;5<6X+#uVptjQY*$NK(rl>^Z6)Vxi$5O=Cd9idVEkC-nJRO!9yBpchIT) z$?yefE52pAYUl=B?Mv;dIv#L6W0|wi%H=j)6y9p7qL>VP{8W;5e{mxb?sGNzl!(H; z$)_%WO9@wpOI_+>ds?O2s>Ljoeh&r7CmL;O1e;LqA&wsJT;^i^*L*j1Pb@%%{7Sr- z9OL}lO(sgUXtTG$;@t`Se#qEr8fV1Xfs2yXJQOaO`s&tuA=9+op{VOI_^XjjXe>5! zQOk{{{coy=gF`V4LCW94;F6O7m`J)inl$C=kVeccwvQm&CUIT5&@p#?@|t?bqr}D; z|HILMs+x!DGoS8his%GrIF1aP`)R=-(`~oI(Lvx^bKs?Y$IB`rCqZXhgVV(E<2k2; zmHNQI*7q5FcV1uXdZQiRi+z0iu2W63LGa{cWSFaz%s1Fq$|lxO-g=@oqbS9l=`Xk> zib4f}e22F(#BpC=S`+5CVa@egmHzjqp z`q=nBdwpzSI9I1(I_X+L#4ftx1l8m-4Dly4$4)e|g)HK}m@7t!(d%hwyfb zqh9GGOnFdX^|qtPEG)$0_x>{9CqkiAmzY7Vd#~Vp^fO(1=b8!w;0N&s&$2LKsyg9S z&TH#jVmrEh;&Zt=35v2DWHg@+oi=La@#StD@zvLdgx=2vILs{nFabWdilv017r&Q@ zrr_o1*h4x)2$%B=jECYBM+LP4yXAR#Ft~xNpnNdN0lf<;b~ps^Q8;xPv<(a+G$l5* z)FVO!7c|;mFel$kwGgf05;JsRqeWV*4MEiy75ZqSF##_9*kJtA^J{3_NXp`NF0`#BNx56noehfDFq)aQ7}{~N{nMH zHU-~=j|{#A(5V?aQg}HhXvR+b`;2J2$$LVr`nIfy_~6kK+!1Ecl2dciivZIGW1FhS zKj&2+6mUmvFpFcolaI6spt8oy6s^An)l)sc`HuEj1L!c{x z>=vIMpI!{8y2LcB8z}lPyN^gc|xSwwE(_q znb&@NL2Kws_ws3^W*S2?wZ)}h#&-`Uv4Qf38HlEs zTi?l`LMz~q)KEYbGR3foS3Gpoqycts)b}XJ{Bgvimnq=_&if|4%3b(P(SDol`2kqr zaJ|{QAv@d_Bf$uipCc%Tl&UJ9cnS&ov~%8 zQ@?-EhO-ty?ig~>CFb>zwaV%zYL^aC{1&YjTDt2vnpn;PU1CrU7OD5`KbVd2p&mMB zPj~1vmzvi(nLR^1SF99-n=3!MfzP+ln@$U8V(0>Kz*M?TLd<7%g>O zm>agg=Fu|t9>xRt9C$qsgFZy)bt?PYo`MKmW?2Nja5k%U4o z8ryTS@NA1flgiRe?=U?s(=pa0)lL&zCuo*t9EJ7 zwhJK$X=K%+bfN7A6|3^QX}*wFK4+~X5R)=Cp0 zzts@s{DA?)1a}>Y4z@pZvXJ2ETLKRX!a@6&4X5+@oLN(4h;NF(*($Z(J zRn-VfM#|6hJ3{2IOyuUnCduY&ht{Y5ck1rXe$C-)SpQWi@|+D(n>AY-a6c!r7RI8j zN~74%T&Mzm99LeOxPy5D501;u(~H>y3cBm?196Cn*X_JRLl0($&UhodY$SpTot2|kHzuJg%(`Sso4i5o3+hz5R zGn{m0Wi6T1n^ZSk%Tou~&s{3P=65!Huil`Ql1{ZG83l*B9`Lb&3jkMXfagf{dG}ol z?Q__M^JgXX6{96u7CWwL7DbN1E>2k&_4UTt=%2NtuVDaSsk||z))5jJqF};%GHp-5 zg?`2+GAyHCqir7BbaB>mZIATIgBjr?s|4yNe-J;ww7;z%o2{)*g%M(_DxUA25r zVX5CEtnCW6)9ZE~s<@0L^md#`6G3pqY@eg`b#|>S6m_rdyfFq)aIkRc8p%z@b5>O2 zY=H!Le|cE|%3o%d#x^!>Tb&I}g0sIg+thw*WOlz9Zia5*>42DvU!NPlnU0y+X!Ioi zjk15H{ELTP?b}PZpU<|dx?f_RGr}5)^?nU)ZF?ncDB{>nQsNSj3zoZUVubz{iMk2Q zR?C%ZeQuAF_bH5OhqJ#UzZ0PO?24W5xu2}C4S{i}rr|V4rL+z9wbo(!J>Oi#$pzhI z;RMeA)-%CVZXqAnNBe?r3WsuEu(Jru-BYnZ^u@0z4(sPRK`>7zP{B=JqeUU*Lm-xq z>?zNPA1kl=#3|4~k>96KF9N5Mb5L{X6WL_RT$b=m5~s<-zT;?iHF&Vqmdl~D`p?G+ zVS~?L@N@%bqhgZA)FOS$m0etyaQcd-@XI&!yk7>8a>~El1hn(4WuM>YxEu2H26*+n zMmp$k-_lN9pYOpQB??x!>(kK%?|Z+Q-M9?RC~|GDAw|8nD9(o zeU(aK%Ebo40_EUk#$Gc|Mzo1)AJvmGpY>2>?RAL#l!GWQl_H|)#-8P*{KXt=TT5H#t&KrTPmzJTf<4ud+V0JCg7y=v3maDrd zA2DWLx8j?Ric5#-ltJUlA^GS98m0>cG>SQtAa!VO3QB`<-+xKmi~@(Js^FA|0C zRM*oaQ)%WGFQb~%yv#jOMJUA98(#_BS;+b#F9HvysIxu$#ru|mvT6dy?JJxD>mo+S zpha+_w31gZ5crA#EV^1lL$5K^G|Qp4k-ljuVSc{loUF5Zk=gA+ugkFG__SkMi^?D?9@-dVV(rX4=BE z^R(Vi#T#O4JQN4aQTd+;3n0`zUN1^>)&RZ&a}sIh#5_j57eU4&jUMp_nqF6p5SiO8 zGQ6JMaG&e$y^3#FT#sDpBJzP^t~%=RdHs$6gPkWXSFgL$5LytUwCGFz{6PK)07o-l znF3GU0!N1WLmp)lVWEoC=kRKtTQ()4Mj^t^VWcdll3Kw_!u)#uf_Cs z|95%9jU`Fega7#d12sU(zxaRnFZu&9J-_Ar1XWr-V>yi9=`eoF{w|L#`!jMr7H>U+ z(McEutP<-bTFHQ=*B=EgtE&()CCga1ZsGXQLYW*{e#YxBIrns%2<9luW^`n6b#bJa zO3UQ%J)@g!IM#CmihX#6z#TdbT$+I@>ziyEhCqQ(mSUH~REtyHcN(A?24sJSl zi)ecWF4=uA}T2v4myBMw5ud9AQP{8jP&dfu|UQSLLvRzy1W%(Nff1u}UU z%1uJK+1RWt&2yp(zOnf|U+n8vubnJ-Nw4t66h4fP_>SwYOAa2o7$5hy@Bi3)MY%y} z??q5<*>7)|PCvZ~W-H!tR~?=4Gt=p>0#3zy`4<3vIX&?nwnHt4v8?ulwzmLUfP9hn z#`R2$+zPlWWMpH_r^^piDD8fr503#d3js1abxkbO>Q@SU+#OK=8sF09*Kdg@H)b$m zt3ma7?P>dR0GYPpx9>;svV1L8HMbZq$yLQwB<#f3D?M>F)}u@Yx(Jp{y(*PsaZd~3 zE97!~b-YJjYlkF9U9EJ-^<0eHEXxti$U)n?9_l0H(rfWpJe!R-pB{KzrS!I=(36~@ zMP&KZ^|4$wj+Y!>Pso*{%_rm8R=-Lh*S*lM6|*_SdPnbscKXkybkGAvJHwL?oJ)D; zKb2otX9Z>XBb5G=tOTuUVnD41x>PJ)1Tv@&Bzi1Wmfl0@M`T%?9SkiDmLX8$jN1qe zB=jiofB@bI5PXCOfQY8NbBs+kr7MSz#8PlFz?)xStocc}3d}Ng+}dUnvVQoumumGz zhrXUqy$s{Gs5i&bhF}@Zy$b(UM^17Q+EAFzN#fb}IJC1dtyhY+g6nQG5yLA9 zC8vA~yVpp>nonRNrYJ9{K9ln#^^6Kbt1LFB}V5=Eydet3B~5bv1!w7XPDn1 z3c6in*Vl8tF6w#F&*o$FVz1!lJodLQaaYXE0#BYA#h12n$+PxVn_)b7qf=0xBLUTP z3i8h|4?UA`=xb#;r0NO#Zx_mPSk?Xh4?~-hGi~b3{&pa--J%)m8JmoFUgUPsz|VSl zm(vFGa&E!<+ugCeC~FI@k`Vc;kfr%@G|X2&Qp)QDH1A3~#OQ6oN>dH-8|e=8C4eocDrb0aES-)u-^IA9M$@qi-a^P*E{LW5wrf*cNn`3!k)wAzvJDH3 zc-+9>Fk>+;_n-p*%$iV~TecMn`1@<1@GSqzYUd+q++kJe@W8!nYV_Wgj>e+}~LZ|5RglOC=!KfF5glNNZ@HE-K?%jSu? zLve_NV~j;3hP7<#=B1gecwpI8gIKngr5?It@13jDp_n9_5n_rb0uF86a!_O7kRws1 z#6n#@KNWe=6(Ey*OD64{o9om^%cFBa)6SD1YA(m6Cyh7TAtJYpSs<7X1xwL=V&fPQfINczZ!c2SG zDWBH5J|C7%3q-&nKZ7tjG%PZuAe{BrKGZ*XpmzK^T#h$?%t`RHrM=yuP=Gr@riC~B zJNrH-_0j%9CH0OID=yv8ci%O@baH(8>WC~}?v;!wMSQ-(7A(zlxBPK>>IM8dIwW$& zxC1Yi!CIytOn8|$y$LZcZB6IZs`#jQ%cX1?j(8{iYThHH)Wch>FzjWsuEq|Ylb{vZ z)^yGtRmHn|0hs_MXWN?tyZEtao(+42&onl7-#!#JJ?-j>>jbqtN>kbt~-$F zVzSvYeDK`!9)0hoYISq(&fl1?QKf$1E%nck{r(V!N^qr6SLN4`XhjU5`^0mzJEJDcUpEaNLrRyzgB(pMWeyoN6M2`9e z^d~w1{5$bd22MNj($jV2V_LaZ?Jm`7Pz8QU9B3|p0lR;otE<1it82h7ck0_y68axn zfl|vYq|(Z+wikrYa`Vo#c&}}Gp#YJ)V`gP)GI=Mrt&20ofJ&@5pswmCp0s$s?`iGgaU11wru^#*{?t*qC=eNU6OEVMo zKb&0d%hbRTMU?=?1jC-1+P#D9@IA-7vO&xx9*`YHF(SY=TK%K9T`#NEEx&pi)EN~zEwwXj zt(hZSnpygTuejjwhJk?%hg(12IzBORd?M8|d3@EXOE>iNY`ApQs^gQ}&fK=`;K6O% zd|TN%Ws?zv3IpY z>dn7%WXPrDMqYu|qB+AB8pErdvN`tevEuiL-p(T40t5I>fgWCgTkI+iWLVxCMX z%tp29Xk#{yQ=s!=+0VQJ@R#LVL`WN0R{+!{7aX4-esLz0L2Itrfgz|rbjR(FXjF{k^z&hUP#v9J3_KftMN)Plo`aJLpJIks8583{S`yrYO$yOYvP~Fc*EA)< zLvB9xoj>q}J0I`mD|nuYN7{2McyBx|=5y{3^oeu<{#WtR=x8SPT<-cXA+@WXi)EtX z^$^Y4bgrNWeCm3rd+q#OfnT>ZTlaKhMq3N8=OqjLg+TA_iubT9z@NL>c(+nj z4AAgcu%YzCBk>+(A&V0%O9q_ij@xcHh%bgSi{Q*)z{PTs_QS58jp1jQqJ^W`*ned% zu?V@o{9myw>}0PB5n^4EfxT#0hX^z(4u7`yYD!-h{cJ2N`qT^Zw4qPSJ66B89}?)G z*B$+^W>=8CG)*vR1||7kNqUtm2duv2U^o?v!N4j>=7#zcB`YAyuacy@6**v55<^-J z_o@JhpcA3Ngm@=+AnHG&1a^qC6V-rNVv;XCQ*Qb-EF{shwVn zB}E@{Q=ANt3aWP4_GrB|kNJ{J!ApkZm1o}$#^AhV0XI3qZ&djm3SY>N@M{CXzc7a6TZC*6Kab>U}7;z)Ga$`bd z7gDxd>LsMNBwMMdcVE<7ySwlDu5ptk3Q5IWQoO!*&ssMcaS1ICWUenQ`G1ss2bd&R zb#C8#tLom$Ido1l-IH_N*`1Brq?NQmT1mSrt#Zz?ETLc_p#&%pB|t(Zi70_E!4?=W zS=g4117H&j#u(c~oA0!~06DNP#7QKCQ`j*o^o8U!D4Y=sub?bDQXzSKB z;G&z1#*Q0rKR5u#eWg&(bAPet_XZDaPp@r;ShSb?4eBpa!!Y`4rWH&)NvZO?Ii6ly zS=Ss3%Q+D45^PgY5sSOZ>zd=iszbyo)CvU)8I1y@zc>}%=2zbCT*}#bf_;V!fc(29 zb02mOiAxNwV3cBA16qb@zn7VmDmLw3A;T8M1{R@$Bfr$BqN|lfku1t>rs<_J6pN;9 zFVfPpv|tR-IQ3^rv`nz1tZor9Q5rHf#iYl~l}7vP*Ys42-qzWe5k(TE-ilyUW1Q@r zvCVRhJH{ol8s6y}x7gF0-@I+@cqvxwt$`s33%=pkND}o(qUi}XQXHT8YT@yQ8IM;p(n1m#3(4DkuQC9^Hq9S zx_sMg>`D21CY5pWxa=8$)w*CvUrV0#XT~?K{qBYfZ(i3_Z7uR@d#bV9Gjzdc`likC931N-nL_>|NCaE%<9(fPkq{|NPYV3*>;K0vUW~oy{VT} zCS~8YwyqOfI;hr3&O5ZGtVDf=JM51;=HND$6254ZNfIoMtT_~|Db71((yPz!u(^JtBc=14fnNXc0kx>qv;(>6 z;L7}L5bVA3$TvS?ubY^dcRyaNub`@?-+T^-|sv6H2W;bin+{z%(a<2GOvU^ zu~bjl>8#VKj2tA&at*n}v3hu!??p}vjoX~DpfpxjB1d5_PR|lsa+H!K_qNM*2it_n z%?P<)XnGb}dw-#aky`Gf^r?JJVl(9PVNt2ZA0gx?VNot8-yFMOU*6Z9{>q2e%{iq6v9L6ee$D!KdsM**N*&P_ZoAg^^@nL zWaRm}{vOf@yzJgUZe)$Zq0g4GK_ROY3x%O%tWYXtCki_@^*gnshmtFHpE=)W*?kRb zXn&=6+AwB1G%V}t7(n#2YG@YO>DlEZD6gsZ)q6%~n``}rh1teX&!uK)HDUm|>x)$q z9xOEr5_1oxd@p~`zQwkH{Z!42rkbbPagC#4ffzyQts=N?BJ{)LqbSqP+XwTSTBK7M z#BxWze!(>j;%_@Nw5Ljf{>zSBOE(Ws2d(c^F6e1}*PA1UOECd+vN~QRAe*GEqoZ5L zn)|j+Zz11%*_ydlW!u7*eftJ#l?M6c{Q8zrEA(J7o&Dh^YR=||?VnHV9G}?H*2hn< zPqEp|7qBk-n0l_Xd~!8GTDyejMC3D=BfLz|+*M~bHlC&rFVk?e&zV+~(PJyhI>CeK zWsCx9ELi5tT179I`aqX~0y@{C7+pT}e?(*gB2kdzV$C6m4v!Qx;&4R;FcTZ_a^r>z zPm$!AMaNa-tSu`B^Y?9*>2M@kKjHij6UR{%Cm9JEfd3Uj6x}199;${cZstU6Rgv)3 zQWQ_2%6v5;=Wyn_*m8l2SA)q}8FRoyi2`^PwXl zy%x(>#lyEzLQhZabnN-`Ue*Wp)Fa1N=^s-qyTT$=T?xg2iddd~i*!m0>nC6XO$)%% zmQkygQRjnBIAvxT&XDUlx6G6jIJxu9g4?O?)KHWyX=SU1Bqp1<#KRx$Y8DY-BAjP>8sd6P}+vw9$4HC9!46q~6u%sW81bSEmY6OO&`q zG@=@@BnM8&d-@ref;v|m+gCJ=a&qfZFN_xU!?{(sZgj;z-gIA*gUN5xdg_`3yY3~J zyo=uQ`0b-Qkpq|_kFmf!?O)!TcGQ^I9oK6~zKvyuk3Pme0(mcRG)}Pacpv>cgC@to7kBHhW>aKyycp;c!d|Zrld*zUHrpKZ-y-+N&R(MDd>t+%3Gljrr`n5-F6xw^jyj)W1Pwk zRv88GBq@53m*mi2KjArEHVG!zP)Za{5+2boZmTlorgvakLLd>sH!PZ_&|rx$9?l-n zRNa7u_8YiB=6kMD&U;xQ91OD%tJZoaY*2D)O1$;4&Skbfo%Yq*goH4AIU%xBlI6jE zN%kD#M6n(^hDEh{Ns`O(!-N+5sD$<7RjgE~VktSZ`Bc9m`Kl!M)KESNUuKqm#tzER zc_zcUl@*uE6c(|e$ijgQRjV0sU^#Ygof438s_LtZ3QqwO9I54mR4ytK5A~GrKB!BI z7T*Y$p$4{|E4T{bR1Fw&wbHMuNlF@V6Yij!QqqW|+FsYaM;~RMU}KrxnHw|rz`Aae z%uOQ2eTUM132&#UG3-K(7}4Qj+UH_jN{o_X#m4N+(!Z13ooP3JX!m!VSqZMBvLj|` zf5^5l!Zk{Mu3D4CD%#N+ht}R}X_}X_ihUtr6BqgwRt-P(mY_x|@mpRBs-zUXRL&Q2 zAIz57!Ux}w2kbHPh7aceJWfB93yL;jh3ltsFt$SOE9djY?4GG1_5drEdv;q)ss*N} z4))Vm$kra$3>>$@sXp?vuD^y zW@BbMjQ81@^D{T3k=ss-jI>D~8Z9`Y=-j|o10=L4kJ8agS%y|6vH6qJ=<##Ipag^O z`r#xdA+Z$i)yZ;EeR~cXqAY$rnUK* z(Fsqj<`$Vs@;ChB4aLHZ|G0hAb!RtfHusXo6&JYujYiYI;K&2E#+BOenNtJWc)?Of zzf+~BK6;np5_ONQs-jGlg`zc?%$6lG5GKX4a@+dRP!w!uaNiE1B*tVpYi0W{zr1|p zE5UW^P9azSs4s5)^!q_hCwa2>M;|EEkGwux`(Eo=t>4ydtKhm!U5Jc$Cqpb69TUl zBGc{!gw;ymgbn}F)Ct-zUWa8jMOkV6A1=oY5QX=OO030|zvP?@Vw?CZMAm54^E8*|}UQxk|NeiuHru@w8rW%x{(5I4tFiA+w~wh*yPs4Dq;)&nYf zCDv{~$oW2G7v0C(RrhfEYL>@!zSl1n{k@#u6MRHrwAxgZT7yVRT&aA4mxL(s|KhwT z#6bn$C@=OGBr?+@z(%$W%CNItc>sPx11USni~WT{e~}|ACZVLiB$(n;V%W0mt9=VZ zD)biwDR8X$)=-veeCgj}UxBxNAW()4fo}eIrw_{A-RnRJ<)un9m>$xZUvzi=mI>~n z2|NMySqBMq=hGac(?dEWUJEyP)+WMQKZX~NaY{DP4fXi{FiNJLJODsX2XTSiulAZL zY*KcqsHVgS*Ti*7CuST^mJ$ciuY2yBCMjjVKrTo!pVB8(VUFYa3koCW-2xN+SA;1q z!M`_?o@`a77e6!>{kXW;k8lbW~!CI1zomh{1ai9Vzs0uT#uCp6an!DUpg zW^sz|!J)k;WlCtroLGdi{)CL~OC4ss^{4gZXNbI?_vbY=Dmw`SHho()qnJ}e|A0Nf(M|Qg3 z`~sxJ`-sWgS73b+r}2wcXCCFu+M{o0Utp6NJ98#zoO?2F$YkPFwYU8}jC8nLs-R`2 zW^ll5QeE*rAU#VHiR@-NZLHF$fF+HPMTvzeqYHA?+HLn6P77|a#wcClfq_4oP5IHJ z5_R&t#Da89T3{LD>rwSapUUAsp)^ti_@Vb$wBga^*zpFcC%lTQk-*UUK9 zWJ#^(i$nN>UzOBi6ijR}iBRjFZjVeGGe+Gzds~y(r9$)79;FY|6R+l}jc`oUDpE98 z8SL4xC!U&)6Dr?(=+ga@8YS*r9TXF#)>vM(y@Aq<=?#~|Xx*u;&plcIOswSNGNJvx zJKI03NQ=|Y`DIFrw=<_)G861{lgyXAAb+-z%MsdpL%CvEp2Cb>JA;(d+dldf`x2{y zTsx!PS*y3YLY~DI0Sz?UzMu9Ez_>;_+H&dzm8M7NAhu#&-=-AA&ncJ_oes_`jwYD9 z)K8RtIi&{1R=+fE_iDq937;^v^-ZHrD*>s;1yY=o9U?KF{hBjKs`1bE4*<&XHrEAa z$cXACXBn!)*u-Lm6Q(=A+)<&DB4nA^XJlc~`dl)?)}Fm$faU@cXG4}GyGxDfEq$&v zc*@kehM6x~eIz*0SQk|-Q}>F=L2tTTZdS<1=Eo)qvKrOG;>4PPeIJr4<72ybk8W9C zkTj)~8{xF~@It=HXRC4l#OPXQlvF%Py|)jvh;W-W=>7h~rxIG7F8#7N**7#?{_-G+ zD^~G_bN}IcMKk=Cs{>9mkG>VgeS4;m>CbG1J@Z)RX^?*<2?4Ky?UiwSOMto4$ZU2*O7|L^fUFRx;Wk;#phm-#Q>nQ`7-&h2DFlS1-53ft5`E9e zw(V=Gq~95QcEjVlr-?IgXf%wf{WVE`{6|4wBm8l;LK-hnkYA-R&)r78NVS3CO8`Ao zN-dskkeQR!Sl1 z$aVWc&yO5x{c6v+ZO@)c##_(xkoeWs^JKRZw0_}Obo@6z_3I6X`F1ZU(hIXyr#5R; zNsl&Ln$8yLTeI2O5K;Hu+E>%yeI8qbgZ|r+jVflmJdsaibbnx zzE-R9*6bZpS9u z4!*WWn*k*jwGv7Lw}+eu=6u4mP>Y0@@RV*%sEJVkOi<&z^$(nk;WNHlh-*QiwzESn zO}XxqTv=D~W9+vK0O1Y1O*2h@f_dQ#uz;rPWBs9!WF87tH-?S~Um+T|6E3^Xg|`O) z1KmVbZTm*@ZYz-_A1lT6a#0T@*)~0yiu_;bfh;+OFB6e1q@{Nb^{83khN0_`MkPs$ z`i3yUAQYIYJ9y-%5Nm~aPKbFSK3q#$1H#ys)UMZaX`QQwDfJCmE|?^yN+hrH`yn$V?91TW!wYypaA}67 z?v8ZVR~4p##^B0y-fKAp7vl&4e%pByG8vrDKZ?KiO4_c zp=~vT;ykPzoebbT9rHePglp6hfi+ z$h$BZDY;(cnhlGZqV73ar?7_6%JA=d`zWhd%U(Um5j&otFIc%sUr6Zsk}Em0VXa&^ zeBFmGenf3H9NkWmtye#J#^&MK=_413VSVh9GY+0opoNNa&rLV>b3&?NSSgH`cS${0 zo>opQ%^@_bth=iK!kWC(`X}EVpk(ao(KUHDD`!|{58&`8SU+gV?SLjSsP<O_M7(0A2?Cw57aA;H7?q-^bM9GI*-<&0-9NEI;kokKXgt^|w z&zuDbt3+qM1O1OfqR(DGYRHs|;XkNfefZUYHG~{*yW^tkSz$P^=0cDeQArH8{>E+u zg~OKVHN!~MosvpEbY_|8-knoxNMGGQb3Yl`v*UtGfA=Ao3>L=)7DDWO*%duT|1}@I z_G+eV4K2TM{zul@CB@Ru9@`?6`kb|qeA_MrOu2h1ED_h5PI`khujC^~uP3j`{A-&# zY*kDFGhXXm+0XxuX;Lm{l5kE3xk73G{KCNW{F#qPlJGcwCVJOXX?$Q{V&|sQ?nvV- zuVEhoc~HolOFXc6jspzcBKJ6_*@=1!MD5-J?&{{Xlg(p01Fd#%3?ADgVx@&q+k@2U zWfiRSYdp3mLVcAhuze3R(xCl(@)KwS zOfW7bIY1t=?^2}IG^QF_h%FjftjiLt#3xb53>MY&AVD!nK8YN%c_dE_5j@A?`;L6W?QyCE9QE)eB>~oTQK0QSP0u1od8)Jw_c9ktdVJ)wAf-4 z1LKFEeSz~ga{f5riM|xp{2k~=OOmXBUW?tZEY!q8E*NE@lwVkS*8LI(#LGSsScGSQVepwxGXHuQcUj*3fAB)SteT*&}XNd27hT9&+n!r`?_(3$du*AZA@2? zZHZU((d`YVm`n0O`DKGvb}H|$9jqwI8^SUvM&z-iK=KLsl{afOt4wOzfu-dK%lVnW z?OX5^gPXNNxq3=3qXm7+c1Y{4;UR#YLwUa}OMnh9EsRuJmlOzzcNY_@S7JsqI!irO z4&2voD23VC2XAULM}!p#x%jde+|RKws-cQ0QQ*7ZN}5TYrbJAtqY}X8iuX zVjSfQQCLJfGzWI*JK1o@CODkAGxMs<x=(O}G8OaDE+9gkOh` zThf2;O2gxKhUIct=G;e2<);$vI^^jF{9h`;mgKGXTZv(58VOa2*N2@fihc?@yG9qq zy+Yh0UJL)jV;;6+uC|4e*b6{Bb0Z*z4d$RKUMYw@s>WakT0SgXiBwFRtC8jB0QI|| zZj{I#MMl3~0KQ~EObd9BJ|PA=WcC12$m+;h7?ovi%pRjpsCP}FhuTpb0wz`S5s9XD_Kh? z){Z^TAKb|$x^|202%dE)Q)Ta}iR#Xk0@c*D7998-bL4dcSr(?eSV zO_mtd0@s(N%XcrF4qBqG2LM4pnQ4QT&}L2rtMXjbAU^}O`^oQzaDucewV}7Z@(r2K zG<|Y?8kW&0W`SIBo*u(RE3%}9hcilM;^^zxb1ccM%k0RU1=iBFnLq8wAEi6cw~QfI zTA+5y=$A5MR$j+l9IMN(ut;;IU+*OE`i_*IvTc4=ms{$t>a(yUTYh_Y-Hyuw7t8YX zz88~FVB;=;>G>OMgg{^A=W>4Qe*g+>N@~@Sih$R((TeyJD-5mQw}Zg`TxdOnZyvJ# z!wy6H0el_dtEcdZZYX%I=V1RS0O2tD=*GD*LVeeVc~L!IRmAzCJY3<2uvarb2UD`@ z@%I%fGs0V+^7DD0l|8yc%%KoFJFY7c&oy)K;E{rk1CSoGLOg+qI8TVb3=1JV?kt93 zG29lW|2!8I19)s`H$hcXvr?nygoO*cD<&S`VT?zV~+8SP4dS#tEJ7ywMmj_-b@pa|nB zXd2G6UB{?<EjH+uopC-t1N7YV?**21Qo)Ur1(qzJUD^>@Pmz zmPp=zNN|o-^kI&*arbK7c+C2Ph%ZHD(S+L zq(82<5m%BM<7lO=W3ZG&8!x|J)%zUx-T0~wjpHlMqvJC9PMihXq1x$KnecZ(JHd~P zYo<^`>?Imrexc=Xo;6jK%E9>$1B3>l>BvfK)ke&~3mMJ2$A4*RicE;SHdlj-26I&d8y5|d zdam`YWPJD42lvmG)#;hW`>Oq|7fzvM6FI|KADy)(ksHbQqbB+Lo+SG0hA2`7l4#>6 z#*ci`-VmL!q5Y{vwlAJ_#>>`eTPf-7O`hu6n{0PWrKH&0w)K=+ktRD`Q{6W>IX_3L zn&x^V@OHSEC?v%hE9d#Y#iZ;Bi}8YemzC=iP{VcJZ5LoW6LpW`r7FWcT9sa*H7Ct zU`N$LT_VJfi#N=;taqXDiYLF51=*7OPEaHDzlt=8)+$<%@2L>Iz?=4gY?kD*t?hAv zl)W{{BvYn**HUxL82F&?8-_0pc%?W;hg!GNbq`t%MN`6EJIBK<1179REk1WmrN**J zsT!zYZ&GHIt~+1I8Wq`GoF}r7sTz*^L~^RXQz(&K`I(D+MxWe&>&#FSki^;pdnN!# zC6>g%fNG4Ln+tn3l-=9Ut<*~S&@Z;;jnLIjxpF=WlO0*rv;FhUYF`x@7(g=fXM%hr zlw|f`6uX}%&U|xyIZLJa^WAD(PKu+HZgf;Vu4Aj(t8;-II7dRU4slklfWQQ8|j3$Gl@qhTE z#GDw4dtr^7pN>QE=sVM1=w>FL`F1C^6e=BiaXBL_HPPg*oWIqIpgVU7iQLDg>z#IV zE5U{?>vDOxj_V)3x_x*z=VsUIwtd>&wY8IHf70#(2t6^`?C%5-3!ERhoG`X11Q4x7Ys0>R`` zAob~M*hpn@vEXZ7jH`@2bB+~Jknv#8O2j<-Erh<|eC&bhS&}J{z>&D0<|h_03-Jw# z@-r}a%Zz9mm>8O2?7AYcG*FaS9$@*rI#h;Jm%$|d89F@RPg=jBgk1R6G~+pJ9uk=D zdR{+~G>c*k^1v{K_QI!!u+BphnkKl% zN^c>bOLPDYGG3Ybj!S)JNRkms%(D)q`YLzyHSCLQJnak9$V_E6Wp)!R>~8NrWUHI0 z%U#KvY2&)3f~26i)WA617wJLRp{YY=Chi=ZNe}j-k-v=Zjv4Ed)JHYCT=H!fYI^p` zH`6vKu#s>vCNJJkeTq0sX2$T1sbD&?5&LMn&1N7q!!RU=SPa)NSTB~s6DmB)9G$X4pin0Jg`%%;qI&UAR1HcT zM1*hnx}p&NBBPFx_@++a*JVr_wm8^%#4dRfQ76j^NE296rXZ38mwXf*S*>p?3@{%E zDk}l8K=w2w&+#RhB$f`lor=#z6&lF&{!0kC>=pbYaCfdoDf3ih-LauA1eNX2D=Mh9j}{H}OJ$fiL#Jy#-d9!@KV` zbfL%rM%o>dO69>4?^Q8+ei01)-T#%?I-vnd)46e8jx!yb^C|XekUx6n3z@HGevCBV z*fU_IgClDp_5x=Am+2NK4gS5C^IbyRA@=AorGewX+Ft;R z=SqP(ERO5gES(>MC&#lD)e5jtQN3U>6{fP!FBJT5abjj=5;Teph zL`ybi*;=zRyEn^n6u1GEvYx5|kilM(Q^O7{RZ3&0*aMpY&iDXEi{6J3k%4}h0ZLZ} z?Krl-)22HXEQ2 zU0+dh&YE7%cq|*brp9`mY!zby9%NQb{_sJcSat-qp>^e_&dXLsK?Yf0No-3nB2=Yp z*fNz&M>veZmSXv4fp6VGNl$Ntgl3@zr#$OaMOjnnactG}ZAVgeOzoAV&^4&9sf4SH z6q{BM!?Lz>IV<)JhhV-sT8)>0P%8Av{Hj;+k*E^E{Mt-(3aKum;que*fl z2P$e0uyvLB{`u2);Gb{zwSA@|NkQtiT{my0^nXkNt9T(pGi#5&jy(hWV-Pd?{qDT{ z6QtaC*QWVh^=c=L26ub%+9YqQ%k*Yfbv~W^V^K{AW`d9*UXS$z8_nQbEDhU>@Tc{n z$oC8%M6Y|ONsLLFPlj{8YHPgpQd&AT$zxZN`ujo9w0?%ZC~`MQZpE`b&p7+AB-1PT zKGepK!O6?`qAY6g243vrtv{-cR>flzleP;>I}s|j$Z!Y|+QWdhs@$_V2oe+7n^rx$8mX8lto~UtU8*n3m#`2Vp&5SRxt#!?P9HaseD>ATi+2X2jD0*5) zR{GMm^(=V^v9N2|@yljXq{?K^0To3IGf{=GbyI>r-M`5X6gd}YCi8b+E5t)Mg%1hw zI*eqzPKdL~Ur@&0$|%W=$@2IiOvwpdupWmGO7gnXJcVMcG%#yrDUPNo%EK4SQX^J;8Ey-ZBLK(Bv?NXSNQwq%4$BQaB|jv| zGn=(Q4;5Mot11Wx&kRDRdg|C&xHUfN0eU2qDu5nb)3Jr_J06pI?1HJq*3ih^LexKa z24QWx^_}dEV7H!~xj6HC*b{Z7N*&7$_*i|lE3Q+g+(v+OxsJWe&hzG4F=WOoG)%QqR3{F%d|CP3ZFt} z+cYPbq*){PikmsVS=?MpevKPgNhxs1P@<~%>f zKE!4-J75f-%ltF$_5UBK+3`*un+4NW^>uy>bXX}FmRC~_jIY%5(2lKoqLO9=Eyw8o zxcll>Wj-8(3XaL)^}GDLtFQi3SgecV4???BY&?|;?YPEU4^uKTh*UOU`ACjcANFOc z%CKMlNl)7;BKuQuz|EmVcgzO)pAT=TaK8T%O*gFs79}9#>ke_SIwg9~=`M(5+k!Lb zXJPH#O}?Kt41^msRBFx*iE38DIV+jI+?tdEE1T*PxS}UTyYTAMhUWxWtvuf_2*7Gv zkz=z#@8eDU=3)4Tz&jCeBZu)wlT#Arw17#DX;Y%c5%$To424QhVX6xcG*#0!4?4s& zLf@=^+F-0v0!b1P&EVXV^Sw;yx1>frNU<#kJWdrAWS*s8d>Ub@z9C4);xWdFKHm+V!>_u@!JWj#U^GR z-S&j-awTzPu1ntjrx&m{*>6(s`2y$vjuZFqFzzNSn_uJ6U&Aik1n}~D1bf@=8P)>K zqZSI7Nb12SKs>kbTfYJu?Xg4X*5|^sWhu~xUcMb|0)Th?CXvECein}3S-eg5a1;F7 zuDff3o%}&Ik{Qq32^xDv$1Z0%9P1QXRX$qpaC`;<@vM{ zK0+1vQO+MlC(onpBy{DK_@;Fy3>bM|8c1j=Y-){+1PyftLQS_7CDa+iD!kv_ODKC2 z4$Vt~+L#k-b8bc08~QimYoa<_sSH=)1wLPj<8mn;BQG!sB&TxK847P5OeduPyVSNd zz^`1k9RXJBc~4PR8>{mEo)`^GIW!HSMeX|bGeIsslG<5u=8TSRX%Am0cfIZnRwrE@ zR|>jPz1S^DvDWi%1w2}B6Mw_`-w1MnAZ5JF*v~3ohiS&L&aWwj&`hsAizS?(<+lp) zBIhrr&-cT(T6ZV4yeIQtrAr4OXA!>q04$1Ya3t_PYDb@7pM!l=$lQ_n^-?wF2?{1r z4j$7SLpf#AvN{;A_gF&`H}v=_3v)#h*ME!4#U@>sw4O{XUt5HPF_TL? z8l5|h+axmV9FwqsV2hjBiEAdIU?)i|ae7-ah(Ob)L^tC(!o#Gpo|4%01&BJosj7TX zD2^2>1c@W7{amcW<-1PQV+xZrjM#1%_V#~ikr1XCf<#<62#R>TK){MosH1SCz(mt2 zsFWIv-LXTGH*N;m!4sczow?`jmjQMWv6dlmCI#CpUKB)k9MC>>CX1h8(FnR;tmNll zdxjF3qko3Y)FO*u#b=>ux=acTI8{&U?G*V zY%dnKDqI7g=!@Z8_QoTpT)AOd)VdP#xcA%ZTA{j z60qLd{`I!!e)a^;-fkY8MKVn;;P(JcK(fCBzO!9ItgLOe?vp_;BbkU{$7jw9aTVrd zU6l&*I=>847%t<1N@TZPZah~9WEuik=E7GQfAp^jjqJd7qO8KQfbq7cG$^mf^sYY? zw3H)^j-Aga)&6a)2D0o2C@iYkV)GEDYQb7$6c#Zdy(5;kLtu-R*e-aKjvHoHLT|oD zRZjTLyfRc0l{BMMl!hvt+-?}M;;V|}?Obc5RmoIg0PO|n_*{T@$G2`|QhBga87%Xi zYmkjZqV{`gacfnk<=r{5Fga^sO){)N&J7ilvCK3t^C|YHY&dgT<}R4?j9>52 zd#qb7bR3~*%0)%m2|otmGI^g8+L$y2z@&~f#@M$fC5&HB}_c1#DMvP9+jE z^GD!8mYlAO`mn@U^H~jN5^Gq?>%>S4!EEVGlS*U{@G_@^P4WfzRBJU-`(YpRhPj#&|UiXu{FRHnO zdc8e8eS~M%mFHeV$WWlVn;);`3uO2!U;?Pag`%O=9rNN|5NCzL$9C?&ZC7k~eX}<| zbl%lrIg*((9v|LHCMvDBdkqrQ$ql)&vD;fu27RQSko_rNY7Dv$eT*ONa3cH`2(da} zvAq?>I_%4B)2a(bjMa}Rtyw}1-J3XCaYwGGhPGonY&*73qF+{aKm9B5Y#O1U`21%= z+>0ROULh{v)Ns{ERV{;3EZ74Cq6u9K6xCp`Ba-AzW1^z6LVP1q>#t2}70y zL)Y|Jbxeum9CTvK5=m^0gTUL^uHqMuAn18Sh}-ZNZxel@GFq*UR>UV2c;=4_-rtD8 zm?uPwRL#_}UxFm7VXg?U@5t-Zyy{18J?yD6q6XzU$`&r6aF}dA5}6ulLy`ZQHH%H&P?lgUY>b6^Fi2a9ap{3bNZSvi2LyTk2Gnr2Dcg}P+*-) z$}zK2j$Y?W$x7{FmpAv;ZBZ0tKnKa9?FQRwOsc&Y#|I6XKsaYc>Z3 z)5uPxN))BnF$+y9-F{VRBBz+G@5QC@T(pl2wZ0eBNHroAj4~f-mSRV3o|QdkGy==# zYhPeqUtczIosG79%lr_zFFMc57MX8Ifo$<-qmm3J;8(M--IKSIp;+@@Mrp+;=Vyj& zS|&6$CMUX0hzL<<Dqg!T^d|Jlw+(o=Dj=YC4H@5 z7YBUGN<(0PfEnt4HP=@u*Q#fFRgg&UD8vbo`%aswX4ATZ^;hDTCwM8zM zLCYppMl{t7DT!>b&74a&i3n?M!W;Y?(^>p8MLU^+)S!N5N60!*`|PEL`1_i%&n7drjaB{?3b--J1WsQuL*_*j2b3fK?cjR~{)9iRGlzP_M*~81C z9TRvuh`c??<6TX>dsp>cn3+5VIUScIhsfz+D()A|bS34SI;Z*8f21scFURMnKyqUV z|#P7{fekEY@jpFWh5uEgbm^V7;E zK%R;bG>1WeeuDF2O_pYIGT%xj0SE&C=0j6VQWfmaE442FAl9cyRLdoN^EI;En2}^% z_gyy|I(PgflZL^1-IdyCAC2p^)WbGDF=K@k(7Px(qA?b8@M`c|;d=Q4kgR?1Iw zg$h=CxY7UI9@Eq{-rk(6{T_>CiTvibSmrApk0o{eTloZ!-CN6*p6yk^%peP5&*!ec zdox!~z0sG^U2Vrktl#&pNvh0kRrniw(6!{5cKF&aB3~wqoF3aQ`na3@hN+ubn=+Lu z-n)K}5PCE$l|r&vh<^+6`QYD#X#HDyBu03Qj<+6s+xj-=M=>;f6s)XmLAe~Xe!v*X z)+J>vsk+3Lj4;w?dZ@CisRSM8vnokbpMN8lhx(X!m!P3c3@Z-ddg461itL;R(3pr@ z;mNU3sY;S&D2lI)o=#YCuqc`$-&f!bUK}Wcp$5v8^YTCu4ix(G@F9FfraR`j+{ko# zR)2uK2j=$j%&RdcWbimDOw8n9Y3Tod?Oknux8wCZCf+&ipM+7Yo4u2k`947R#f3{x z164e@>(Z4)z9lO$LQ3=QgrI&ikX}Xnn=^&=0TAuGt2tkL_U?s%aV-X9r7PT%t>*0fAm@{K=4-N5k;Sph z!UP|}%~I$5iBRuVG3f-$^@i%Rr?qy83id#+hzCS@s0wem-P@R@L9o;mxj59F|h zwfPa}w+eAkh+i@oPQAEx*!GzeyTtHLkHD^}s3yS2$fy%K!X@fd6~#0hrt0DSFITv2 z!VV`~^_8TSNGz}LwD9kf_+znYsajSu$;7A%I>^S_^~ltSJ~n*%hGCGSEb&FCt6;~5 zfOn^bk#J$#*l0FVH}-pu9fQs;_JYzP7uFJwG1@3d+^x)EmkdeP!Yx|}y#-d{Zb7!R z<09vSZS_f9Z>@*7-+J$j119r{<;U*UR}zX%3=AUsYtlUp;+qH^Q;Ka*Zd55KYZU_~ zu0#|PB5i)_DDr}GayIONzs04w27XtEtBaE(Z_k!J0pcKV99dqR*?5S)h>QMTD4Ci@ z#t%u2RbiSJIH5wZAo^TP7$C}Y)6FKH?UVtXvoBS=wjZ$yx)yDz1DR(s-+~pp6dYNJ zk~V&;D`Q0~9~%u>ZAO8<=uWnn>Z&RZk3(Q5&J0}IE=!e2$3$S4eJJfS9jAAC$j3ZN z3~B|E?3l7tDgZXR6G!gdu-j=|SDwMi`>2riHe|WSQskLFE7o+w2sjfj|30iJ5jkM& z_?y>oW#j?V)@(|BVTKHpGA-7GLy6BRF`ccwl+WUsH*oY_^`Q%{k4t%)aUxweOd2Xo zjIEXB4I>tzo|L99x`PX{a^1tap&JRtK0pbPJh?Z`^|6@Eh{~j)3CgO&Wxf-I)J|R= zuF6*pD^kgj<>|Fpr1~Bwxi~aY5G?%sy@f=Az6E%ry59#9(h^-2DV$SAGwhQAmahI*#^musaYW`%kUM( zM+pyL6eK&RX|}bvVclrRG|h_9bvCkg(`~g_O=^DqRXv7~iG$5lB`L8CBVRrDU57W5 z_rqC1*f2qraB=&VIbAo6LsiEINfxlyk5d?^i0oY&)3v)g?kOO&b+){$M%H+9NkQtsKs4%xxM@`(zxR)~i>bOfC*H&<%6mrA!!Ml$+aD!0j5{8A2&3G~Z7 zjloBN#Sg-OCgrurKLUG7XaR9NO^CZNF{GCKGiD16zydxvFUvDS%^7vJ|8-yXK)oo) zM-KCL`c5j<;?{TLnnX`KHDxBUDATCqpZ`Hp6$0#`Ustog1OXnPIYf45tE8I!kG@gE z!89wbn7Yly3jq1vi93S4E?a#LQ~FNXq9~hRIXw8}J`tcc;;=U;@1MXDl@y#%N@kjH z2n;I21`A9beZ>;b_FZfW<|3bY0R2`g%unrZG%JEsKE6u+#1X{VW9*yNk%$wTvB$8% zkY_o@Y+9e-&w()fF zpeVT#ra;DS%8>B3^Q^>mga`wbDMAoRzeOpslIM^uW5=st-UfvDIM}rhQ6}YVS=uov z%V+#yEonWU)IwX9t+1AS8&Ge54O26Yh7Xzrdi5kYmPwk@!=ckz7tyZzGUY?{}(`msI>o zF~qSX#j9XMxRScDYA-Obhjc)shVIHBS;X&Li~Z#QVrmB9DcYMzfeqS$VB5<|8DzoP z030H*MsPh@GxuL4r-w(}VJ1Vhj=LiHpjbN_VmDbI<1 z@;|R`WD{8dNhrw**EO4X@z04W_}q|BO^|kxN~nPKHLxqlWg}`)w^)L^Xr;@NoCz;4 z*ymO{A8T=Y9nGPyEZ<&WS_c!a}(CuIM1v5EW+7|m9zy|_(5R}CJ08~YPBo7tQ> zoVg?OhIV~RD$~ zvB~B9%(e!NKvmZGW9Wr{jMriThUX6eg$h8SuR(qD8l}E`@O>UYe<$RMV~zG9MSzu+ zW!LE&^<`{yC@ZdApYo8gFBFPxjk|V4NNfu`*mJh!g9bHCXBXM^$CbRoJTRC6cw`M+ zS7-e7)u&YxO!&x_8++hy0$&3pf@?N%a)zn$@A51iuO$}Nnk;!4mj1=kY73QwCGg)X zbRU_p;W|Vv)+4w=16`WATky4G;q`@OHIO9>`ycRZ>l%l6svG6}orhtW`Efothvk~S zrbv`%ST4`E&u_hmyc&P)j|V3Vm)drgGNEY5n4qY4aNhcOBY?G20vqNdAgk7;{2K2_ z^9VZ04ku>JI4&OBl^%hdG`s^Emn6yx=1GgEy4K1`%a~S-mG~sIf8NPy*=x&2{>idg zy8JWUg&goHO`;-S#6qKW0wX(@p%*2ti&;E0$4j9dmXs@aG5mr-!GZzfLYN>vsv}hv z#A*$YtL`i`sTjd!I3nP47bjbq(g`i(tmwmCBrekl9g(x`M}1A%FQ>;0M!$f!p!#Z|7js zD6lP>TX>1X<91O*68F}J`->7?C@G$z7#d^fjvK#`()qnbkm;eJo0`h1a3{t7g2=kC z3BQ3W{Tr|&?R?73-aPs^`y$Az-psX`-_2xZ-KDDfv^H_M30WFoN|o4p+S}wKq}?#2dGT0vP)Wzb1h+B->9}{+oT%$NTKtYVAJAG-=!m7 zZU5-Ddi9d$@_iPlr|jUFhn~2qx`oki6Q9ImJ?}7Uq{n(&GE@3dek}1ThfQ_Z%^8kS zwdZ=n-2C=rvTlm4VZK4=NbkYH4aR$_aa5W+FgRi*{)8&2>zn&_?7DlWB9B^5q&bxv zKKsV}8SZYB{dK?^AA|ji^-~L(?Wycn(t4?OmJRDlXlk}u#3s9eZ^zfPwBi1@soKrP zs=TOGF`!PvMwvzs4`JbLOf1nD)j^ix;kMs$eago__CH&Kxf> zk}4ICF-o&zw(Z4)gzo=q?LFY_s_OjFz1G@$ueHnBy`A3fIk)$gn{rc0ZVDj{5(q6J zg^&hGXb}O00hB5zDk4>dv4SEfAjN`ZW-L#hPZ1r*aeT_?jLtZ=F(>c0_Br?7bCXNP zd7poB_BreBv)kEwt>5~U@9+Cd2bKeO3FpER8e-q1NY_Cn^a=JXS1NR2B@wEz7gf|0 z#D2<(edTgrk;DAxKh|D5%AvD_n1SQS((W}op84@RW8iU#EiJ`GzO=q}CgN<>@Lb(Q z20U0lWm`z(?EDDi<7de;_>W*e)NS3M$qCRPw3>9;)cx1it!s4MXkxC;#PV z{Cys%ND5regOrys;-R!3b5pAJAB?@m|9p-0PX!Qotmc~d+Z$nKS;gWhu?|B2CI_Q~ zTop7eCWX);Ay>493r0<%JI-?owH{sao zpQd(hPV3}fR;OGvbsxYVQdNAMHk1JmCNW5 zn4D)Z0(}UR%}n(6LEokHX}%Gy^;5clF??IH=%q?a5Dsn5yTvpwOsNXj5RgBh2Ru^k zaQT7BgDlsXBSrMxs9(}_H?gc!@wur2M!rlyLhQ%L zN<=p38Bqok{O^p-<5glZdC)}eA|lO~u_%{sXQK>WE9xJ$U$B3r^j{hJQYorgU44el zVP5dlz{Indx}Va+YdvHdA=jpf$Q+J*`!f9Y1U6JPNGF5q|79}3bHNtqCbgR|+V%V$ zOw=?x<(r%KhdRSxQ)%#vIlhcJs!L@}?`%gRx1qa^KSrJ+^Mr(Or6A1YIdtE=${5V^yozmAhF5opvAK|{TOvaev zJtWQrpBRgY5>NZg`Jl`zl4J&qT1GmF#d7#j#(vCi8G4mF#;&*;aG zoEdE=j6nm#gyZm}YeEth*oNAi`_}gMoOO4f>dBIspwyEwvu#il6EIR^mbE%J;^XA2 zWU){MonX)Gne5FW`UWBDn>(A!r}8#8TY%`(r3kJhQ|j3lbB!uQB(mnZzMV)h+dxbf zS-^c^dZ_ocSA0zMFjAPVd6HdjJNAqO=8GhSyrlK$L?VP+#z_I-HgoKM!JE%sp_f!_&50bX90*NEEpVPk(gOld!`1 z%PCD5V{6XjGPnEq9bgBkaYc<2eO)trE#Zm2uErmGq#M+2iNf_;yT`1#$e)fIc1To&|F7eR{9NUn||g3 zT90w?od5ek|4#~c3HJ*x)^STGs)mCD{oI#uqHFAbTjO*JP(IY?*)ss;!4wv`LERhj zLgJ$%!e5CCuKV_f(T@!58gRb?GuvWXj*kMT+Ra^$s)~77alsZ5_jILHY{|09xLZL% z=J@!9D~UWdCr-1sv8WSg;}V&aeI&0C2~UknnBfYBRLe@zum}%`zQIxCb+q^|DN49V zL|rKAEtPspFT_)Ekgc8-6FGACF-HfNs)mZcYj_y0EkW#D$?&{{X%uS@g^En5r>UCy z){711`LaJ_zXwSNJ9VdkAOWmAgmM4 z6t;uz`7n=q^`e+OEeL7IfxYl>f;?)pa=cnNuQ7zGi(E&NLpiDavdOv>+Ic#^Ph862M0XjPL35uQE`kQ^ev|# zWzt_mSbELL(;#_4HmQitd0sgJVH`LW1GR1$brz+E&RgEuUg+O+Nl#?F!z-b5`H&=D z5$43PW3t*>-GGWke;idT(;ZWf{k&4HxKSoi#FS;0o)aC>c_51x9vL;dQo6K0J#S1j z$kO$hL`5ZH|2v&fk-W<;vnoFFzBLywY4=A{VZMl#_3iRdrmceAHrA2BnbsDf%RxE_ z&T8pSs$-#ut;h=xUD%P>(A_fHs;P^M#f6n6i*1q{@})$D_39+IQm*~FoNwtwpVeCw zdG*{7=@Zd2SQ^SkB1x7_yR`K(F@!FaHxph`L!;TmwtmrEk(M`q7zJs|-gN9NxhK%A zd>6*uhLK;%0Ubii@q5VUNlv)q#Hi*ZclPx7lKsD?9_>kVDrCyL^H*RK>na6aPYDe) zUDLEM(Q)-c+XM|Kz}PpahKUlT?9P04RFa|!i>rw`2(=e8y6Hgoe+HJQYkb>+gsv%} zDai_woW)y*Gq8SlvM3_Uw0)lDuQ1EGbE5`onZg{-W4UZ6<|#{X#2xtWwS=PhG5Ek= zapxQ}3`|{jkU@3Wv7Vc zY0OXc3chd7Ff-FDIhDFHX#kJT8i^c)&OdD?&zb{MKigy%#~;b%9G62;AFh3vv%Cg6 zbQ>Fuh3Ta4I>zA_praVRDI?kbDEjxT{}6PbGj@UHp+H9p8MBN#w@dO1veecF^ZGgC zsVHzQY_31T^Ik(ol1CPDhjV0$l17|;Yhm|${cP5Moe|XpGidJx2!Sj5l)T>NxdZ#SUZ3EpU%IGR9 zvhD&8;7C$$Rl$-YN;*t+t~%!|BxXBuvR&dy_Xg*twG9i*0I7F~drkOolXb0{!y+f$ z#)_)jpwePv^}>WLih+(5B)W{rh!P}c(^!mggs4?WqF>@K)_I48c+hZH7oKXNCpXNQ zGx@@3w7p|=w4?plKaIBWMq54B^FHzl8INn$4-0n+k8r$c%uC+NlWMq|vz1qc&2fMS zFDZdW2&esP%yOK~oGe6TBQDNcXZveZ{_x`sTC2QYdO3-5dcal~v9ablogfffNpWQ? zkQQ#8V+KygnE?58i@K93!pyIybtg+?Il3UT=4P!B^k${JZ-%YyNmdPr|Hw5t;`XPL zl0y5xeJJV^sXt z)T|6XzIxpSNH}9CHz#AIYu_m8`D`wQ(8A$AFhUbKyM5!{aTEC&?N|psg3Bc{d6SA! zwwg$obDZ%{gC8VB*%y->)TW@>&uTk=r8 zXi0^U9$O@y;j6yWV)QSxk*6B%3N_ZYdC96(#OR#mJMv=#A9Hdj@4nOV0_#4zgbMEG zyT@xcDQP1mVKY<72DaTQ;;m7m?$%x8Wm1moZfzD03)cy^3cp11Y`oIVp|%sjJTtyL zB{1m3jLk`kJN{iW$9n4weC1@QaMsk(CT!%C4P;FodAPo9Tu$a>0D9n)Qxf|SpJV9_ z&J1l8D~^N|BT}eoR&7tz`Fhc@^3`~K$RR9k0reTxb?h@ytoFn7$`ZQj%S0YPm#A?h z*VAMX`avkct`1Q%w=(wq$=4OdpB7Rs`1 zVs3zE+bp>hVa(k!M=6mk5LTBbi&uk+9T(6D5*bgDln`@wYrtImpNU8UU7k2Z4+72O ziTWPT4y^q&5oZq&UKGRkG+&a;7)RyQe#HeQGDBTY=({fS7^adQ@ifjoim!1GfvPIX zvQeIhpnIZdC)!Ywwo`cBOxqZ1qpw9p_G){lZh{gKa)+`ZE8k(o==V{Hj_Hg&TD$vY zPedw0pnFmyG4i(C_AYrnDsm@|IYM~pr>#0i?J&;c)88HIOrY{es^7=$x_0QpPl6s_ z=j{JU!-w4HJHv01R??VH2WOd2PeA|>PmKd7Vc};ge*H~~-(WZ+jPT}3DJO&FX9dpJ z+bE#)2^s!95r4uv{y@h24_}ii>Dgf-p=tMDk4fxLmGHF>=cDM8r`PmAMWknQ9tN8x{jNYg7o~Vp7!5JCo4 zF=f&JtLtd4uGe0ve=b)P+sX!xzGyGO;;y%*6{3hFEc;dlD;frAi-419PAWflXO86EmH-J2Z8!TJax`GB({XlLie!Y#ls+x zwfy`@<#v{;K#v8>IoFw!H5-fN=!;>C?5Ln3$wK=0yU5d^oAW*}UzmV-@ZWeebCS>Q z#Aqhhn3_R+)3#$%a)2LB3Lq(d!gbPs{~@?JduX#BJQ$MuCl9|6%`$_YoHb9CAiRMQUN9s}eVz1E6kcD|Epg`tNlIo!i7_+62y_P%i^Zsg(mNPpmotX` z4j%ej7~#;sR#9x-2m)UBO(v4AwW565T1Q4okU+SY%xaeSG;#D)P#}sUsRlN+(DC8f_=nuxkrNphiE2I1u(lP9%uT7}&dZDp5IdMR53mMIM0?jBk0|1gpmjVW@j z-!4nTMa6{+QuFX*YrhFgwkC=R2TZyIL88nY=vta3U&*k6l!O<%%j9eaRuf={h`I(_ zLC>r+zrsX`DB4R)(f9dJcm`~Z&A0OKgB;gSBm_(Kx`RA-?nTlnODkqhC%Odg|UP>c?S%JGYcHv&eo{Nk4{TF}#ds)6G$Yg?h^+>77_<>;Xce$jYRNdJ zy9autXL43gO5<|r#)jG_*||KT!jmP>W!d&Di({efyos}51^Fx>7O+eE*Q4=3+!lFxW(lh$x{#pGGO%#7K zT@E8t8BR^*OeXoKr@PX?^d|T@S+4B>_2T}<=TBlc?@#JQUO^yT1*0pdNMcLPq;wrf zkt6Y|@rhoMsitu_25MU_$wT8FJZNNvx(3tam@Ey=*AuE5!4g9|<#nIM#4#+4pp)7< z=UB;Pc)^ft)~Q_reQW~uDWxTeg#@8it`&g=jvuXSI)@n7d)O~Z(aZeuUXDt~Ugku1 zJ?)~{wuF|cEP^(2jhtaDBVSJWoXF#nvdKHd!S%9O2&f~=2@P?ZBHaahrC}G3^9^8| zJf_-2xuahNp~D$xQgNvffe39NcfL$I>(7J`; zTe#!?*i{T)qJ^A`0Mt?mv2=?iISEIUIzarlzo_emk#Y?fl+GJ4$iB_k2Pu6N4!0yO z^aeLN0P$gm_=A*#tZOfR!a>Lc0T6OTX8+-dI%$pZ3_plU=++oY$sa+Czb?ld7b8Niu#kJ2n-PKkQy91h zO{c@u?>72(B%?Xc?dQ}~p&^Pqw7dPudBstEv}O6{F5=isFy10gBeeHR*OVfK&oN3= z!cSqm@sp?Vq#04-?81RI@3BpNz31OQr1-LECYZ`SQcIrrT#T)V38Lb-?YqcR`1jBk zO2WpOIVa%^pzc(+XhM0^LsTbFBXXDdNHa(TJyp}UWNTcy=bOZHJv9rBfGMhs%vy+YR=49-8hcf zex{MllWFUx@;FR+V}}}Wq}jc(u`l)%sh=}{)!_6Ptp6-B@7B%p${~qLB3U@k230$0 za~}H*hpCx8VA~?G!Fp0cu%r@W$JWw!$nrbry|6%QezNFB*-=hs1&@j-HVZU`e_!Y+ zl%lWjn%sKK(%zE-3q4d~I}CK8qo2nZ)JJR>k)%+P3z^Tk?zBLYc>*=TSH#H@yAFGf zh^;ykv4-@y<9BYJAJbxqWX&8KBw^CRoS1OSQEHIj(A&&dGE|#gP@&;8ox}3q-BFY$8f)3 zL`xIH3pSw`(zF~dGM`gK2PJG#@|E@qp(|5HoX0;0#@`b#{x~Qg&hDLoM4OsIPsyKm zA~j*NdFbPQxI-Qoa-sL3jh1WjSW{?U@Hp6Up%s=1e#>pV{!e6r(u_ps@K=^#f@@F4 znJ&NO?|-18mm}x}g0XL+#MNu8FtQC3A#2;)I8EVLjL!O7(1LEV!~! z7|dW@KEeA^#^0c{wiL9AFVsJATn+Ttb1^LKGD=&jpWKXGjdE_=*3{4Ler7I~Fgy|; zlL$;+%ih{TUCtgag$9@>5*FLf!xF1~mScE`&J){fU#0ZVai#6MSPO&K4UE@9XGkqY zzvO3ww_{uB2IyPJQZ-5mi3)Si;QVHNCc+LT3Ewx@-V(!0Jl&F+ZZi4I0vJQTVfn6H zt}D;xQ&2s*eUXNF=?RjGeY~d$w+SDMxgut9O|#>vp7#e}gA{BIZ-k)OT*=1Rn_L zPLx;%!UhD-Z+nVz?dEvyx>}Zxe&r0;h9?{Ql@EWNgWqAJVowoX^y}<34>UbE3AZpl zu!m3OlB9Efa`j9;ZnDQ8Auq*s>Oe$FRmp1~+>be~C#)6mTD<={!_U;3*28Z*!uMZ?jSas>J8G^8Pu-?y^%U`!2?A;Rm>dv9I#| zuITqI7rVV!Ui8VM&uv8xuO5n(_T<0b^5s>OWGa@AIk!GGjkX*S+lyc&@-#=yp$Qv- zQL7<3mtZl_(=eGxeZw$XmvbTTHjEinSkeYtqA~_kA$~7+mD1Z-iqaJO8)&C1X_;H5 zVDT=6KQa_FU7BU7a*`HVx|*RDmrfSVRMV_TljRi4#(vHe%~aBNN+fALa|0FoTM*{r zM3$svu6;zJy%m_nU`QB&XSRY}Hg}W4G}Q&mS8?-M5H~9}Qc=|im0i_SF1{xApkXXa z+&YoZyADfn{hIefe;gLFLO0kESA!)nj^of^o&T#Y7wUzPgX#KBe7YLQA-6~5f53yy zkvtj~>&1>~J(+?B197V%#=x2pmzR7J{YiiTMvMH8fgYqQdoLRhkwkH7bt;RB{^iSZ zeYj9CoR$t-#QDfAtol|*xz%v6EF#?B>0mdV?a1}ab)2?2imFsbH+7w!>h8p|jOwhnqh5&we)BB(pJP}Ms{WLU#Sf3j|`ao*MENxLvtSS1{)SDmZhSPp^U zfmV)Csz+p7dEK?4IQgW9)G61bAcj_mT&n~HV~Are>M1NR$YaH|I?CA$Ic<_XNtlS1 zDpn|&-XC)g58kqsqbkfurkYcV^Qtl-VL4$XoYB$EYdTWdv1om+Fy3yeQZDi{A-W}x zaj~3D1QDZpdyqYZDq*s)#7eQGw<32%e-ANzv(43?;>nRIrw?t+j9l7hRohc--AOyK zy=#}Z@~qP;rk&O#$*Z0{Z~bthz0a#y8@dK|4OcxKRG4J>-AnUfhb-n#A57YLoc;b& zUIyiZPo`TtYst(!g3@hfP6O*NKo6Bew*dDsbNqJlrMUJ_Quyj54=;`hS=}=QSaaIfOoXt13a{OCF8B#f+EcI;`sk}{Kc)K_I>>mQF+7XoLL%X2p;LOlX|n3u7i=#!=Xc8aN^s=DTzQAs8tOpgz8h3zp)pNmQ) zohHTJ5_ijKrbv7yOA4{~PpE#vU@GEnI>g6{8D}lics+NT=4L{g@*=Qs zfQZ|L)#Hzn50E1CgAN!|D}_shtDrX&r)sEMX zv5iH?Q3D@=Mu(aT*-cKvgrf;zJi=MtgXV-;IqTLw4_7GV(1%gA_H?3!by;Z1s`;+u zo-^E5B*^rX#b#}{cJS=^3o_@QySDAtIgVAB?;6_g+k>);NdCGgSwa#c3AaCRQ`Tvl z%hkmp@dizn?RTWqAl{s7%eRHDTa$2Wn>#-_yevHSaIw^qM(Hjmk}&aJK3m(fV026J z>~)^uE=cLtVoN*FqHFDz*S3$~!L+VhG(zhPyK4FQZ8@}OxVzA*sbaAwnQyVVAEW~M z=5wS6q|`$oxBgFXf7ioZq)8!}GP8%8A+b~D_OxreQBGw_@f>U}rxM3%K2Zv5U6hP2 zkYXlr5jmcokZGV0k&}fV-GngtAn#`1Vno+upL=A?P=_(aD_)@wg^a6?A7^2{x`{*2 z9mZLmT@;v}mZ0)W+@gF*_6$*s$}mb^k5ed?@ro;^?%Ddv37O%0d&}~XO){-*ujjac zL1mdLx1wZTVhuC2Kc4L4FHIj3B`OtFc$N&uz-N5gg^nbuP$ zC&TP=oGgjM!A4EuupDct!(45`_-TYnUgxmL#w#n8 zyj0R2D72inqF*kYf7P=2En&*k+1l#FBTBF@eB_bjf%Ms@*>17+&7`B2tkCoXZaSHTqjztLbXCb_mFm1Twe@g89SMDCJ93g$DM`_l2`kfD z8Clp7mW(_?TQcpr4SEJ;^$jW89l}L@>ghltnyuL=qSG z{uYVkIvB^94lJRTWmHy~Z(5|ZT9mr_xSJJWGm>S?>}{8&a;ITQG&D6Z@L)!Sp?XfT z80N}nBHy*aP*ZJ`v^`Bz=np|UBr)1R>0U~`IjD!R9gMwJOdcEU8Zd3qw30X;t2Scl zi;R6}KgZ$dzOF0k_+wXZ;JkUYIb!YO1f$Y?N#1^kh$RW1z7*pnFC#*wwDtH~WvMHt zd6H-u2ze4#3+f2{gg@TN7`E=FAJ6iN(Su)zGThnGg>#Mvv@(_-UH`caIANs zY^d4$&`m$;a`TJkD_Hyqw%55Pkv?*6h*|d?3j(lQf(2r`h9oV2o7=x*@sXh-PDI-e z`}xP`Vl;|g>zlW*Bj4(%YuBtu!}J(3CtXQYE*&koq9O(Bn3ONi>6t*MJ32LgzSvB+ z_FD+o-jQ7@`o3OWTi!PRViEOPR!$d@ys$_0svA$wcBz#fo7v-qj-inTw)bK33dsm_ zge}6ZMy=Z>Xxd~E^%%}LsU6hm#6epZxwg&~^hTZI*{ZL*F=c%Z8G)_PKiC5+ZZ++~ zpYostwfO(NaZoWk&%7l`t@DqjO=gXR4#oh9LQN#f9A{#jH>ZYHFa~TYWumqMcPM816?WYw^4xHLR*hTJZ>W`cq&BsX0#Dg zAp}q_XkUME0RNuSpU!;sQu-`M2RsWpEO$!1$RSuSQhI3|xB77GA9^F}-2m$CmeGVO zyS(h4*VgCQHmv$3EFHX1?f5!Q*pz|?%^gkKhGDE9;vlb!H*8Tic;r-fsCa{sO>CCUbxncQw7aH*L7{<5?Pu%kw~a&VDJ!$?2ZqMWN|w& zma7p@gat`2VcMC2&hvC!A?KZx{)W4WY0S-O6}xT6OQNLHt4Aeq-oq2?-+Bi|4o}3# zv^9Bn=hn67U*9W9qoo*ip(vo+dhJ!2^~F4DuVRsq)$?U}-t&rRs$h&ic&RM*WT-1k z2~CoHCP}4HQS2*miwhIbo@HN2cZ%}n!(f=b`WBxcu)uZh&rF>D{Ju{ni=3P040fsM z5fYgaH{7aiMi3a5*;@NyDf$zW&w^uFnl4dEN)=#=7W+nIX&}psn|l0KghnPSvae9+ z+Pr@(J$@ItpF}ZNTdS~iri5voj%3Gjg2plKI5g?E&K~8C+jxwzM<~4truk|-Kwk^X z7gBsWrN=%)uPG++&-v&`xf%J`lXBXFi5A)PK?<+e;&UjC6Vd+itEiNL zA?;?k1jg*H~DmD$y*vnCz5duP71tNSdah_LU`aVS>yy2@OV95tVNM!4YZ|mahmPJ1TP*W zZ@_rp$4Ec=LNU4zlgi$ChAm1~02+nsae;7J-S4`D7r#pSriV}nN3zTX`&(da+{AnH z3t;z0CH88BYn(U>QD4(lb;%OSj=e3m{$BuV$w(1L(>$MuDff!nY7lb=ZUt%iM=UX( zNPRO}-&+#NMb9m@gUEp^u#zxGp%9LHA-A|Lgv$VH09Dc!vax64P(tl`o|&p+@7GfU>r***r!APIjTw%OqtS+D1x8fp@!BJt zMLmgYq|JQiu$FsSo{QsjqYg?4C{DQ%GgAH-rULh|n)oFoddw)%noR zzsqdl=1ks<4q}+pbhY3;knSz4PQ$~t4R06>!hPEcs7-T5bK&4=_&3QCDkp!F@6Ff7 zQpJ`e`bxGxU&pg?Zl^DjexX}fCF~Xs3(rjU>d>FjtEZd+&Hb7?ztD-!uX1U4$`Uwb zCEl5=%=6Gm92WmOb~67p1%5s+b}NbbHZf+UAV}ra7I{@Zl~}t`(Tq6M8hMP+kqIY6 zNf#sAnv2%zh}gC(Ns&F;4Kt*VO@q=f(fR*SdIP1`(3M;~9Q!4IKaJ9E-p#t}zzFz0 zrn{g^_{t@e2=$&H@MQA|E`RQfRfXrF=j%z))-?yLfRuZ6P30hY>M@#7*DkXW$1M4N zqTfoGqUb9sT+#dmh9%2k0`rMvG0Z2QWAJ*3O(HU2NPLdd3(}Yh@hxzn{PP+ELUCXX|H zmi{KY@kFoCiS6N-bi?kw8C#Na_Z|2Ty+?d(D zv9Uk4BkFWPKABHe=c($5?yl-DDJqM=RxPxw%9w0(z~sybiJ$se!AT{SM#R#vnW!@= zsMFY9a_3hSt2omeY%e$9RsI4-eRX;2kHJ2?+Q-wBCdBHB(YPv_~SuVNf0YAN$ zAe}-~o?Vy_4V7@lI$t54T`SE_t!_Y-jY9w#5+u8O&-{mS3EUE|e(G%re z@&V@2x;NO%tHv&N&DFO-w}DU4R^t;Nerss%Nw0)lL)J!0QVI%bfF09FL7xJrA2X!B zD)St6vl`JNi;VaQoj#cA+IU7~Es+39)ihQ+h=3*nHrkPo*6#s3h^a z_&9G|y&rbcj88o-Nn^zwW1J|Q5h*A8(R{$oTRTLq_BfoSWIQ@jJRE|LD@1@%Z8H!u zLwn?$t~|`uu_bPf9^TO_E@QsJ8aOJ$a?eZ@_9tND3>u$sg9lb37t@5x?08b7RDmPN z=NW7%Sv`*>3UkmRnA~>eq(7{}j1<48;(cdT6qLB6C;BtZVI404 z7~74gKX~vn6*de_cm;@NfL9JWWWobOhLMZl=Ai`_${R?eiiq6uC_P1KA<1K|4Tra7 zc|=)Y)G>e#D(*vCZd!y5Oidlo)U}POE{~|O)!fx zT^{a8D`%8BZpc2!KKFuIr!>1y)k{XlWMrP2_r5XX8mJ9{YzvF$J~2HWW4~v4Zz6(_ zBRr@@HXASk<}v!x4_T@twJt6oAnF{KHX(VdZiwv=B<_EwYOz^vJR4C{a>hVL3t@Ve zveirJI=grmUo=%a5#Qk$iTes`c)Xk#JuG;WSpr2G$4rB6(5>=$!)d^ECK@OUtD9-e z^ns8`R(oxMa=+U$gnY5nR&Mm;U^7rFLp+&*UBV=K-YmT7oaj|kD^ZbS^*Y1<3Teo5 zOZnit$oz^5Vsj%gs*ZF5xgO~m1w%5`R$ZdlyI~XQUIC$adc`TtV<*>52bCrSZCeS( zZ0GbyotY~}u(fPVs0a6e`O)CoJfwab_`U!_1a^oQYif5Ii_ZG$H$8;<#9inssPc_N z*C+yN;=G47M2W9u&7jV4`oS!Q`8T|?RJB1c3;OFlo=CzjyXX9FbdQ`9eruOk<=)Dv z`txNN$4}6GH@6ZrCr~mPW#Oh*?kz)f){k5ZHhMYku5B?#%#s70%1}5d0E5J@UbQ@K z3QavDVaOI{N5tMfPi{5{RLvS?8|3ux)m4O>KlCynzYhx;!8rEj476c7>=jYaV&jD8 zrj6SwICh!>yk;@8ZAEHF;`lM*Iyk|glgVDJXWB9ZFts?^uW*r+WCo>yY6At}Pp+8s z#ph60S0sq(m$i;&7R|)WaI{{L_FyDE+dk6{Z6OE5;_WscUL<-WXP+Hn(2U}bKH7O< z-n$Fb!kM=5O+ty?Mt-+qVe@yMJ8E1t59M_Ttr$V2*<4? zTl-Eyr1KW>7-|qyL5-jljZYFq9C~KK%*?as_u=1Kq{R2rd8&aBtgoBD zOH*n8gbi`AqLN^xR=M8rzS0y!75#jnIXH3bO%QY<97S$Plx5I3F2LhXjU(H(^^Iql zum%u}IoWR&H+3}>&fG%8#yhkcA%~&fsUtW^8hG$FQ-dN`DD1&Gha0u{N4Zh`T37%@ zk5HF|xwFI(9;(^vi*5rof7I)$=NmSyrJPoZj`H#&a7S*gS0qjdId!&OvAlq!@*f}{2u^l6EZaG-3P4r36SO^DUNOg`8u3nqp%BEHApE{Ptw?`ZBJd#(0x z8|tX?{c(N(13aeq@+|4Lmy1~zZoLsn)sUX^DL&NIEBg#DLnJnC1^npY;|D5Z-TF8a z&Kf`Hsp_}25Sn$P0iF|1KVh~Tp9Xb^%vceK+4}YFPYwZ=Id_=H9avU^*s7PN$QJ{oJxqJdA$zSxXYwJ|ykWBSm+fR~_;f2wvch#czEGvV8@;<=?_nbkUz#r07bZ z!l5AVFofX0$*s;~5D;J}hu4`hBf@G6d*^6G^9u3A#PnlmQf}OmF!vV+vZkf6I@*&3 z+a~hkD4yDDYK9L_mr_96g%=fhdS~0 z{L+lDZj+s5nk;6hW|1?C%MvKqnK^Vr>U`=0bLQ%YFqXpGz!yLA0njKLGA4!mY}$6d zED^_sb>yZrBa%1^WjgYta)_c@z;sEe=GycX$Cop7nFwEV$g2n@Fl@psxkC?&M_LOv zAo5JzgO-BRhZRW1SqjJS*sk{?5QzrW=o#yezh^ybfhZ|)kDNK}`WUs@{E-H6T$D^0 z-l*#XCo(qpC*4nbcv~_X;MK%d$u)iz(R zE?x-Quk&6u*I2zQ=MuKfbyVczTnU|cLu^qBnyKL%NzvDnh;%%Uqt6VdS);{$fKEXR zSMy!u?BEeE!ppRdN~G(w%nOT}xX3XUdN=KY5z(Sqgfe_TAw17V7|tpMa-5auuhP*D zihSelBb(9<#9Ne;D+gAcEnv=KSjQsSVUGDg+ag;m6L-rotJENPgSB$z{KN^OGeai| zhupc$f{(*N&$r;0^}zO1O4-B69TVeLXYwPXLaBKM?AP@rXcsg5Zt;UaL30lw(dogK z0%9d4x7Exwns1sSpHc>`PZll8;~vDN4l<8)xEEa)#273n$b`Q)ZcQqBiO!b1&rO6I zti3>nCnwOZPTl` zFDg}Ob2}1aNWwe(Rcc|YmM0InTunQTp`{GD`Af$&oCnoXCvHSX=83QzqNBcc2;{~- zQVrX612DD#Mf;8I4_FBh|GDPdVG~Fw((}wWlZn)RMRK{2v>P-Wi))%MeQXV01O*FeaxB{-4D+q4olowPc5D;mm0Ef97&gz zwGjGR=2-*Ig{p%qJS*o_Bea!+9=7YGOrTeDs#U|6_E4?Du!!50*a)NIH?u9HIl7A! zL@kCc)$7SZ2K)j~?$s^Oi|o2Q=Au*mTsSM;1xUU4vJ^!dbQ&B!yL ztFe%w$VEGGjv`SkHh$lVNQ7p!GB+i{OPrSU?d~0Zx^@Yo6fDg z!grA%=|14yn-fgiv3Z89pNx`I{GAbZSF>i*6(mRmv_o_* z#)ZtdAM9w;Ks?I0OWig6$+>Woy}qjou-N zTnh{@ac@^d+hK~hE#YwPgUZi>bV4%uE<&=v_b>FA{7f67TPIwn=Q#^!D02U0p2(iZ zNM|!Y)E46acAuIeW)c8-O0awI6QX2QEL-OJKxy_!9q(ttJ+jPzT_#FEqlrU%P9~qX zf1eyLfy6U`0{{2XI>Q4|cAUCV#-Ee;gx_oZk>jMO>)~|urnZHo4Vfgs;*W`#bn1z~nD>?9 z^G%g*oi(Qg7ZqY>Ie=1a3#`H-exP&jT!QtP#dL6)Xx2GegBMxw&gDH}eFM6_ljw;U zwKGyXThyfy2p=~*P7moQ94iIQV8sg?elCtp z8~QdNcqIfId zY#)94syi3-NLFz*+Dyp1*@Mi+u_UZ`Dl|35q{`qACI*g$#BYnKJ+c_Mit0Ixib)aD zxq*jdrC8VajN;r(Y2F(VB;$>&uf{S5g=QR#cq{p&>`M;E@1fpgbyUa=&6YlO@WRpK z2B?!VBIXLkuY8CO4N|c)v88(wj?{%$yJ=wCyXhkraJZ}-3ZxyP;vBszVDHHLt)IF( z%15zd&}AqSI&VLQx-RV7Y3eS2o=bE+CPi9BbTU&uy~+%24J~&?)ef>%!DEq9Q<|5w z3OjyltknBGG{3Y;tln^LG@%xZG)g-r#2g!HHIG&Z8$%M|h%oMQ6ft|IpO$XePNqG| zIIZG;^9M>>c-P4?3hh*jSD8DOx+rcSaJf1dua73!?gbws{o?u=<8hB`=_#OkLq?cx z!gbc{P!V@(lJ@Z97UVt+Ar2THe}j;VtOMn4UX~jv6~<(I$HMh@`cb#~n1GC1yGd9) zLRO-Lhk}fR1DS;pNzk8+?`jAOZ@Ky@!%dQ^C+KF zLYyQse*cE8^XQAt!CcV#R z=%xzHkk$dRHz$uEW0+BbE>e|P4nEY3w1LiQb2TXXn8C!L zl7+QhaN`teQz6DOh9|y-3u?*z@fPPP=I6^GlB`sSR9;d0*Tm~;yl!taz~1m26k4In zP)B=}0$5bzqX>ZnA6c=YHQzP?mchm#<9(h_Rj5nUK^Kra4#aKRVtsAaYAn5T;F5S$ z{QC|ywb#xb9o*;RG4zcXefIL-hpx5#qj_mFL-3G9ZV-0w?A2KMZw>Vm<#xHi6fkoj zhJAo}mSK+KBzNi|a&Rp_Yln{NYc4hPp}TZO_6_@1pD6f=V_?PP?Vkv8k+;b!MDwpRj<7$w zZ*)v)5tkD1`kGvNZ<}0S|9IlvgLpog?e?WFz|Ua7UReE~>HOp&=)OQ3*!9Kfi$2wA56D?0Xi~ zR+ZNl=;84Gq@)6k@}8ML7Oj+iH>jEQS;IO?vqWHSI$F0jKXrLq(a+z0V0tklr82Df zjn$pMvVh+H*&hnd^$!Q6?|cB#ivfzg=vb{?Xqd8F$rsU zl-1kB#;|>KTitwP*?gY|D{8tm%BgV3Erq2iW4`5Zl%9hC=Bakb?FDN+3*ynuKL=Dq z8J0@>S0{pBP)2Y!4BZ3*6yywhOSmrKa;OijmteNw<1Fh6Pody*mwV2GNS?Xcp?&$Z z{?ziudIxTI|EK!(yREXLOkM0+eDb_*@aJbTxpDSba-FKtXDX~ca%+BT&QZWy{9E!{ z*PHfp@m)8C66`X1m&yd{BPt%nhp3snndnLG+@nO}E#I>#ti|e_z3%uKYAu6KYs0PO z!J~3lBwjw9pv-e6~n=^9{ll6HkUMt$h?b(m^=(uPv92Xa^%^UaP<<;5N zs=KfKWgVTIa8BI2G%tD9-W?xhJ?y#HJuZ)*-E4AQq^~wRtN(y|ss8C)cs%-Ge~*C+ z1;v7}{^9DhqZ;4<8S`xtXQ-bxsz3xbpBGb;5q;XrbBpvSr(VyKi}|B7NS0Qk@o9*- znL4Zeet6uO+T+pQ?pcuXGS$_4Zo zzoKh$*%G>m%g1>)Q&96Ui}SH#{ZsegtM#lZnJ&q;$?A=+9O%Z zesXKBEA0K{LmTpvZN=d_NwT{2d`M6g2bcHlJdRfn?qMewps$A^t|N9onio5N36NRQ$Dt4xP8_GWGSb;_?- zPDHn}g4(wps~TN6U1-~fJzOriXFaUlrt2TQe|I`;lXhG=Ty>vzokA|WM!j}F^)BN* zIeW?Qfpn=Jqo2w{JqbeXIdNh+2q0XB8Qy>(fs0tDf9+o?knzKc$P`d6zYoQ*HD`(( zTbytv+?!@D2{MSzvc@n1wP32KkNjeqKM59GRnfdVIjn2lfH?9P!@Q;@H_{=J0fmO? z&*)zUVFC9RAc6%;@L`-!4Wnb&33uj%Jzxc61^b)XhSIhqW>|G z-o3h2%pN{6>QtBC*i|7W!$9^@e0^vPhBj`!Yp@F?md3J6kc-0u8QAsYrK`oU!vx@RVJ>2{~^4RP;Tkl9Xrc2iyEN zQ}mrrgB1fjPZ{0*-KXlT>sDl*YG0QwD}+pw1Ug`!3qPv|C=(dUeMaga7jI$CpPlhm zH*qjE!}z9Gz7HR+n_Ev*ko+Dmyl)xFxE=SWf*#Jgo&__`@*euXs;jH9wnW-tBx$#t z^&V#<5Oj1_T8?^prB!v?>TAr7gwgTXTCR33%V8xE9vo4Zuvcdl$*8uPtH0yz+V0Lw z^>ZR<*E)#GP7g^Vb3S6PIvkGm6%__qK{`v}8Lj7L1rdfcU97bFtmk%yz(TsbH=6jL zWxrcz<8Iqo_g|tP_HG;27~@r7`u};q`LRX#62yOuC zP%|p5h z7FQCamNqsrbF!lTvL^1RZ)s-8Z*5{}{Dq~JHgj+=vo=vRGjcQqFtRcLXcZletyBQ? zEX)8}B{$nIeSaDKWo&O|>u6&S!^89M?lRK-CwB$(9gP1<{?F`-nAtlx3YzNM|F!-< zss{Yie+mFvDgA#FVPO7Z@h`7L7%0C0icSWO|BzC$cQXEm-e2F9Y?Q6d3~h{z0Sv7F zbjW{V4xs(VH;1qOqyx~?(fzOgd};pwCI64`|2~L;k>Tq?umPCa*Z?eajQ=EdHf8`T zGYf$6tL@7IBOB{KiJAUiB7dv@LjF0kv;M!ZFVTP3@L!$(f&5GBe->f>iZpsU1||T@ zmsOU(D!)R5m60C6@^y{A)H1WPe-)VktgOsmR$0Hu(gRrO7{2Q10Bo#Z^(-s^)-MPC zGGJr;C(FYAMV9d^eZ@TMS9Gy_S!HMZ($4f3#`KTq*X8@iw=aW#&wm*)v(bHtd>N+u zf-tiKm>K^e@K5#&#rU_G{;T;bQW(F^jPwj&Wp)4~!XjuFZAEU#KZz% zregsxeZ?;e^Otcpb^zNK$-i!Wxx@U0VrF3c7m+Ul|4!uZpW{E`;Y;}63SXV{AJzYT z?ms~Pt6})1{J#YKcZUB<(0^z6|5nidtsU`y?BZ(w=RunOKMm4fvxcLw{nt?VchYe* z7Bc>4(EOTGq>Qaiz9s-BcKW~2f1A}@GlLSwqciAGf*-kpQYy>Hn|jd;pu!~O>QkK; z3J`jH6Zn77*pCp{=zfNnQaH_uNZjjxIK1s*@14rw73mw_MC7#RYp%Mbx?fe@O}a#P zwvE#X3)FcZFAbx2hXlhcD{Gcdw>a0}6{g7Zv^y{9J zh6(ohiSj3;yUKhl<#(EV7eR9%1M?qxh>l{o;X9Zoi^;gS^=HY|#$Q5(-0eUH%N$%M`g%{L|S`bZ zNFPgR3n6d){PVutB+&W6kH?1T?HP~yGbhIRt%C#K5?)>LQr!4aySjmUAg^2gKesYp zgY$pf%KXp5hW_gfUiN#kS8yNunkv(eQz9gclBuim@Ts;Vl!jq>?)7P=;^98xL2}J9k5|)6Mi0vHl`^BHOpU>!* zI=ZWhWs|WV{qlA{|2%9KrY(AyGun5zG$@gG8az6r*<6nDwQts^>0XX1Nia%mU#7vc zUWCb>uY$glzYiUxEd4b76dgO3Y4Nz38mFC}5SxKN`xFz^YIM&He6XdsW~1wWq1o1^vaYaPdA!}b-1B>{q!Hp2+`zQf=2G5pHSg~lE8Q!V@N5r1_Wa4* z5cr6U%2m#;vs_%^J_2hn1R%rz-|VL~}LS@9upgSXCFjpCBi&8V2p z@8O)|kG`hFu1uc2=2%uIt2NUmbZ*Yrq$h}!y^cr=fEi`f*-2bce(3bPnqx&wX?wp$ zD&8U*X?o^6K*=Dt-tHv0W6HdF;U%dQDPOJzyD;)C+r>ZPm^PgoeNJ#9~!u{2=y+2i@0Q4ZG8uR1-}N|=Mm1=$U~75XW8@0fMXC_^@7O#T%SGrC=O3n^7CvL7 ze`mxaJ(Wy9)#IxO4%`U{uw=X0EL%u zV^e#Hi5QpgkfTd}cL*smJW1448LBCD#3E4Uw-rw@O6g*NNrOO%WSV}{>Jr;cOgQI$ z^7AC>`rK&)BTGPEu1B#&o?;o1OBV;e2cprfg%k_(8yAP~?TQdpOlsIpVcRdM@+k6( z$S9RpxwE=mKu8DIw}2Zu>tWN7E&K>AP&RWU0i+apy7lmNcH)1ozbX1x_ByjKX4EZL;W>0p<)#PO zm!CZwQAp9Tvno*8V5&L1CRdk6UdSIO z+O!Ax#mq@GbsHL;hd5iiLg}N|H#Y4PRB)L2X!R2%$>yT^T{tJ-L>m?7)(wph(cP%t zzZgV9d3S_(CM^_H&XpIm`{EfUq0wu;#@WKPfI3>iLGsP={03!xbH?hPnV`P}$lX7|tqB}F9(6z&&cuIB%lZo$N3-;JePxedTX=peAdsH+glKTiv{W_{pYR5X6e zatJ+~?SJbl^@J{d@nk%v+QYeoiHWJWyxfKE%0q`^O-`QVmck`~QCr6vAhRyb1;7nl zTf(3GVlEIq@JyQx$5>e$R6v(g*CLSMyG!k>;PUx4^oe2?Y05i}{vKPz1xcNR^<3_Fkk&wWUtHSc{A5|t%~;(I zHGM{Dav5c=T{wAp*;x1vlR1x%Mt1Ce1rnouA3deLF4~U3V1jAbn%Bwn;!f|F04Ztp z0?x?Q_0sy5=s1xoH4#Nlp(6*d@}ze59`q4lgk^bOeq7(Vbw5*yX{Ooi*}H(#FklZUFN!3} z-jEc5lQ;_Z7>9>Orsa_`O{(J2iY~jjoRIXH0w_r_7yStQNcMXvdtJMA)Y@467B_h* zD9dQa+eFkAMlUn+Dte#o>|W?&`xq$i4~^$IrOZf@1~>$ub9M?^Ee%WLBTLGOl|fi$ zdIKo?!4}A}i%Ka}>N?q7(df|APl06@0HI{kuQ0TAo;JWQ;5d~M7Kd9RJff$+ND25B zC=2ciwC8kAO768||6mkFsu~3Gt>wXQJlate_IBu)LPIiXt`$i_32V}AHud!Fs zK4SO8CA@YqEhcdJZ9K?y4wO&l##?Tyqfd%KY5znS{w^-xKSK*7!A-?DH!GRsN9otD zaV)2f+bNW*>D&Ud*Ck9w5hA>q+)c3V&O)V+D$*5gOZ>(l=^|8kJXj-eeHo0a7F?Fc zr-%}3EU*=U7@$2|k_X4~nN^Fm;|$ru{mPbEDNETcuWu-Em(+U5l5Fuk!+T*ffyx+ zKdQx3s5xr^QG-D-U=#k4zj#y2Q3iBthG{}U#oK5*zA;QyL6|$!hju%bTQmL$Has+( zNS-O$B`##rvn#B1$l8I?1dNd(Kh?>#TdkM&6v` zJX6KoIaReYFVeJTzS70Exkb3OuO*bdJukC<6BgiiD!;Jmr=dv=VgBfD14oyw%YSVnyZ4nxY~ zV2favg`nD)qlq!UBsi@}c3<5mr1hvrAQ2c%03IjKsjZOw7(4aEdFjbdJCF&V=d<@0*^{3SUNrhd$MF` zQQx{N+IXpWdc$JR9AX@i`e|AQuvmQNG9WgtgLHi;y2`Xk#dEBq=r&YG1cI^*xwlku1czws z%eh+ENzNLbl<4r4S6YaUSoGPmXKt1ViOVKl%LdJKg_MpiHu=Tn`z;F4&BU_s)Vj=* zwP(i-Irl?!fGv>$+gj(reUT5())3EtT5Jt&Rg4$2oaGqgBMiVXcf4v zj~4BHG4oOAAX9RK=^c2|`RCXyl;KJ@Pm)q>K1lm_m`Ndn#d}R>>7;(2y|>p=1@a&U zAWcCewCDA-DBAs*N%O6@!4Ni|<|1DfA&|*P&~!KIqiJ9MuV-_+mY?nHyf({$0lo13 z7VI{3_d4shg5w}&LF41I=b{~!B;u`yKN)Dc2q*+E&Oc7ah)NhXk)?cAhZ!$ZWHu+-yGQ~4mavu zwtGk`CQvCIMRx*@Nc7`GKz=o>PCsjnl8e$X#q=biku-yc6hjWjmB zI%D7@=-Y`B9TTC3Kv9(?>G$@;0}mKW$dNuqdG&+TYa#NNZ%}>TRE|ftP2g8nM4VYH zgk<{g#bmi{3I$*}RY>yvUYwA`{TCKg$7dBYbta&j?*sdc*tJn~wr4PuUpNEnY~g%C za?>V9-=eS`DW5+7w0exfsgpb_8b?_T|eMN}1Z~-<+kG@DVkI`zPXcL@sD3J?S3mpC}B>jr6u#r(>$wVg) z#uzR7H%j}S79u@te*&QQZ*+!I8wIoo%N;CzoGp>0DQ0ci*UY~B=afQ+KI3#p*+nGx zC!~<)3= zNk`zayEwCBcOz$BbQM#@?_EaEW9P%d&^93X4`(e#f+raU*q^j2z;{2)GwBAGnWVS5 z!Eule%YkmD@Fb7ha7~5e8}t^_1AAS2dKC?N$6ooZx_W@U9fb~h6g22-B-P!1f%q0- zkLsu8E0uwH4_|LE{?6Cqg)DUXC5(eO2)`NUdc~=Tl1cY-40R24*zSm4E1!mS56BG| zn;k+&+61(~K=nunZC;_&2*NANY{1cERgYyAy(4xiSL?7)_qkBuDY^_@`Y^16Cx0DL z7F~NF-s1W_4dxQsBxa}CSh9rD5~8j1w$7sYAvfEz&EkHO)xG7laWGfGj_Ff_$$obK zEYqHSl%u#4J|)Icox4_=tY_r|rqo{=s*vWy!0ZzfLr=VQ^5+c={b$=$Vg@+A?G%0X zaKfD&3`bA5@%c9U=i?JrC2HO#7dghGY`V>lAH}&O3HHr!OGwE1o%`yvXJzs;8?B3-6E&DsBv?1z!@zy zgZaWl=9Eo2+{Vvu+)I^chnUh*J)r13bBqQYG=>XR1&ML^oIq^ihD{}`BLgt&wm7L7u0sbrCDC#Md9P_Te(9Yl z888(|b+#;<_qFaC)-ua?jmmCD=2$$LZTrDcffP=0Y3*)u3fG|a1mL<9R4P0p#pU2i zIF00Ax%wHMnZMnsWv!$tB#L6u7w5G|7dgtJWTU4{yJD_iXqIWxTX;=i)2l%(Z!r!0 zW!CVuX>bskM5C7pE?f=eq_CSvcqHg& zMtb4z$$9wGL!&;Cq<36fkD3?V{ylLR6w0R`W9`%h6yxk%nycs`{~MmyU_~9zYhg8$ zbHz%6Fxzr&Tm$CMIQiA>eSnN|f{O-K?Zm7ZD~y6)JUOaoU-}g`gS)3=55;Zt>d}1Z zN6$HqVr!@KWH5^Gv}jp{^D6hV)Rwr)`HYiq?J}#Za8Ls=C82(|KTy=td8vUp!zNc4 zZ-@7}XEU1@|A^RH<-#L6?XJDepQ~9?qs&IbSX3k{bP11`$!2lXL`|ivH!rZ&)J*2}#X@hyw1p@dB^- z--mIuhtYgZ`j8+z#B`}x^WE}@_1;i00#}WYLU;xSSDcllRJk-l*W=WK(cdR`=P)Ru z20v*}^kNuSsq_w+-7F?sl18*(Se}jZ+fQ#vL9d-}cTH@6Y6DZ|P!!0M|7qZ=a}c|F zs3W_Y@aE3oM|}haBkS0YP)EHvygFjlQk@?^gTupPIASs@2tegXq^N#hlF)RY4+=UtO|`vA8P-~`un{uC zSb)#%KlbbDh}3=9U=!jBn&UcVIC<@R>4h*vE^9|<1-fCUuYK{MJW_0Bha*hc#q#vD zITWNxFI0|IJwJD2k?F7T-dy1wDmCDmh%CfNpiN}iU7+a!6c-QkVRp(DI$c~|Zav#6 zd+>L#^8w(v-WtsEbbxl_aG1Sd%46cZ;pip|L^a-y_2QZJ|19cK`+4UkHJ?g~F7S?< zy~%@B1eCA}LMAldB671XW;Q9KGSIv=S@>k=<_?p(z)=XBQM|@PMTD&V0C}gg6RfJd zQ13Jp6JAw!c9LHD2ZV`VRfgW37{q$|6q&NZv$8F6hh16}vdS;}ezq5SbSi9$C!jmU zOzQG*xNsuM`-5kQm%TlR>?_Ke&W@Q3^cUCX4X@v{Vi^1W;Y6yCzPVEPgKnr;8args6sfXF+0nEosTkkPdHK|sOPb$VfUG;wL*5dP6Mhro z4j3`plX5Naa-bSQZN|t0LX6mKidets*)`mt3w?=c_g_hPDv@J{c6>zXp;hK$&K@a+ z%0SoUQi_X&5hH-XQPp$AI~V%H6&#hCVG<0_Erj^dlmOM{O#YKN72_0N#taX&c#2?| z1K)9pGN{W@NrT|sl+yUfp%i(JCOF{x*|PHHigCGX5LA!=5$9G`x(%!YC=qS9AlscX z2t)GG(+qlGrTOo&fNL-7OS|hkthxC)R-sEB6HUy_6Vc{HKcD0WQ{sk(wfAju&~4;S zswXqa)ou)6)M>^o>t;G1G~QXvwt`xrl@))NS%3LsgQ=xX=lx(!Szn{!{>;aMbiD3Q zLS(Te%NZiBI9qmKam>}9Nc%GlPz2s+A}{5_$2Vk#?VSR>>ytq5wOIy6S4QWJWnqs6 z^jHrL?08lY*y~DJzmjRdiG$M)0h_h##J^IWjIj@BWP>pZ{bEB4ENzci!%pUo*t&D( zO!i}AN!9MCx>FDln0`S3spgh?8p4iD4)~5k&2!W1zT6&pjrTNNq*-8ORP?AP?$fb7 zvm{@Q*V7=<9*0M)y9)H1K2uX|CpcAH?~Rjmz!3)dQnZ;9P}JW8588pIOMOn;&s>M#Di_Y_Iw&7q>b{8stXw?lp;J^5`>c7aX9_ zurGhh2`33mQYiC%iOw;s=QU^r;D-w4BYk2Gc~gz`ow(DcB0#(%*qhQ&`1G&Td(u3h zeDF{lc}cv3K)tt=Jfpx}5NKU{+$iMuf^u6wa!&E$n|mX?Gx?0PVqke3;S#zaVt$`O zouiM7A&iv-rWS8U3}Zt@d$r=(k>#V^kBZy11146F3|J#)OE9fCYtX`-Q{V%68IX~| z@zYg{!tbJ6F~G(2s#<|Pyq*O_DfH&Mtg=Tk9%{Q(fR>U~!C)npM?)`>H6!PGQjBq5 z7K)R&z9nMCHMpF{kww&%P9IzeZEtd>ZPZn-dg)E{$QlP{w3mT%XY$EX-QD~|*l`~F zWADwNI}WCTwn$Q(pv#o{i#l2V;pL#r*h$XH*`R<>DZ>16dV$bH0` zESO2nq{osNXC36IG^e$KN@)QF7!_G%JTPb9MUC#uF4WYbEJ{n`V^8MOdw_K;N( zPVEMoJ~12U`MdRRQdeRyUd1^27k(uw5#GJNMaUp3QR9!u61U*H;(>{N#lBz1KabhP z(+FR1G2X&k5~M?mqqHOW2o?PuDV0!8Q)za^Rn80sKM1;mQ6VKPm8nuxRog;0R4Y32)n2L2F42s-u@yELJW9(G^Jf9%y5FFMq_t5yvJ=#8DZcb~A)W)Aw z>ZKoM>$nh6Xul#3a_4{`Qa(AM9q(EMgr3SJt=?NrmNn@v5!dH%0=cO*g$lUjh7PPD zhG~Y?npyr3U{<5#yD$bgShkYUn2gO_8TpSPi}CNPPjst9V&JY&Q(`%j8V_J1x2!PG zs+W^##sCK@5@Nl96ts{wk>8r8_#>Hv>@?^6qSC)8Rh+IP2k$CbX%MQ5L`sr7Hc{YV zh+|{|Gi`rP5s05*5>S=a1mZW^6J1@X^btX!-?~DxZ0E#X9mmXaMNisxrydHyEg1J_ zc%RKktE;Sf4mbEg0fl^+zfRs+13Y(WNN@XzgOAuJdb|0YTk&+2lTl&WUB8 z&Mv~#gpNR~kHDkRaE&LpZVA^^fV60>bf|2dj?f|by*O{xY=jaTRRW=Xco4Y=seUd@ z)_2^ESCLV@^qqH&!9+dX*3tspQKauTe4Re z-6%pIxUyWj*sD0NhB{@bsl8D=?N2*u55xO0BB^ZXbFc!6{_p>Xy7!J^qG}htRivmC zQADtkGHH`!(tDlMNlzxd_udN~M8HOqBA_%usUip{z97;RP(->4f(X))st5w2+@SZY z<9W|}%Q@d#cdhS_WYX4?*|YaN``J(V?Qz!LLtgB~8n}7H8BMTuUaXO%vX|DMeD8$N z{ex<}e)`tE*8z6&4$U~+o>X5U?s3lpR(6c_h`S~n?Xl~m z>b19)?moDCi+}gH4riZ*UU(lGF^cmRm_NQ}`{+rGO_Sr?*muv7+hy;)Kb+VncJ)a_ zIB!kg@#0I-`#br0lind@!eq&{3dC^jLz|=Zdc#o{FYs>uRd+`2?;XZosxmWg`?%e10yd5VV z*)aDh-nu?3ryM&pZ^+yA*Uuk(0lPbO&p99V72CZ0;A|cxd_1u{}eHxug4htzyJ#ort$=FZX{x*6Gb(Ke_SJ%;C+spHn(gJ)fLDeQSjm z7uAg(@!)8{xCkW0Cdt~hDP7i#$^dd>UaZ=f%&ar&m*7 ze}()=kB%G?>)uNAz1+p&p$RhTWQAeLbFX~yrs8&B-0x5SMm%`z{YTEuxqRq>E{teF@VAQ?BJ8a=bjk)qU~kz_taiP zui{S}=rGFj$?qD%$%htvb>Wv|i>Kmy@A0RD=+pE2KDYVcOFevj-hHj_t@P2={L8c9 zYtFU;>NN2Pam1Yc`#R3;JjWk&t$O&*)iaH8yRU5hOndm$-u`DRlRm%n$Y*O-j@~rl zdhe%ypH{m*?TO63Iqyi>T?T#AytQw&WNhx8>}!;FX4Ez@+nERKeSx92i!4i3gVlRVkf`+;QRHR z-hW`%(hg(dz*FNMS@`BnN@BvP&#oRBKB+@e<>^u!{xs(ED=$yR5Ef4BO}s5zHDj-| zdOX#!vvx*mK`&rlAX*r=;hgK~)Zu5=bte};v_?Bl)=!-Q{d{fQvNO+~9Lmjp+C#W1 z-6q7mH+RotE@{6pCDIt(q`_U+j{AKAX5oEPhTS*Z>6kan`!(*1L7!B&im(&pq-OBy z?{*(y6!)F^FPQ1Oj~HbgMd$tJrtTxZR(^YB$8HJH7ndzj?is#x>+9d`^6He+O8ZZHf7pJwzi;8f zMNhqz*t+{PdFca}mv4Km>)`IOI(+g?&nqeCHwUAgpPF;u))`kygcGNr z;d&Ph$GS(zLf4&(YsI==@8oN}4(#h``JOeNF~du|J#ka=^|gl=F4?zt$Kr(}UUXvv zxa&WxcApfCd(;Yaoqyla37S9F_C7eSy+!Z+3i`Pvtj97}#@}zg^#4IZs^9a+6eBX56-OsJEts#SwkAEi-8tdr#jgI^ zDDa2#E8w-uKVR_HTffY+#(a}pjuE4NeD0pDuP=CK-1_rqhu6>Dt6zQwUoESr?Eri) z4%jwk=8EK%?4n}M2>~9NKjGXrNGU1&gUz!)_HVr~8VpqaTI(~n@{S>uaU!Q)a-?N+VkV}u=s10BL&Dy=6>kEeNTP|FfHEjX&Z2w+kzN3EWxLTkdW>!1E zlg=+?O*#S0xfV}~dsl`_o;iA^@%?S{75+%S6}xqC6}BG( z!s_K!cH_xoicH-xr-U9CGd`4!HX+K&3;+O0Xth&Fn{VILxc_4G>ht~%_ zQ_JoRy#D6!+t z?i-rlw-yd8%FLuWfbMy45s^-Bt=qG8*4r~i$aX&WvT^6eitC=rA z(Er-#t%d%_&ph&id(HhD<_(|!!>jGQvQHiiimuO;mV5v3!S4$hzfRX~`T5pKig*;_ z4qY5SZK(RvS)PGB33z$WVBAalw_p3+_eASQQ}{sNAC-r8k~p!UkoJCR-?X`Wz3+F; zcYD?LgPwckxo_r+QhrT`e~dhLY15}Kb>_#vJ2>FeQRm%Lr<|j{waSkCwm^UB-Q!!V zi@xhh5rDIQi2rK;_NPgiRTm~)3XFT|p35^YU7TioWyp8SlWT-_n4H-$7#yVOh;O>>EH!t#v;%a_0QOz_+3ubiA?xb*1F;TspBQ%}8O z=+v@?X2JNGNYnwfXrnyUZi(sys}9<-gRJQYPftB5XL_R!@6 z?{v*vERUWnBzF9Q`^z%tf#pwp;%N?8_s99X66}4w%S~`o-v`LFBbZ^@xm}sTKq0ry zfAlK)>K6x}V=f?%F5#~)R%oC2DL?!A@maw8GfrH*`Q`rJ$>!9T6j9CPJ73o)ym0GS z@oVF@p3i}uS8uv}+S>2>t~CSY-kaZEZoEBJhDk$}N4NcP;Ja#MI)m}^lg&v~G9p72g@d&zP+|AAc%eB6UuY0jOX~GLrDj!wv`@Ng)%-C||)>?0$ zF}qIO{wz#5@w+$aT(@@CSUG9K%sZdle5lMjzhTo)XEt}Mlh#jV?l>-4`(y7pm$&~k zau3>Z&iUo?%nF8p%u0!9A+{>+?@fPkgf%`|yQcUEk>8 zyEEX#*Jn)T@RhM0uZ$ZOx3P^2C8OkzJoDhtU)-kT?L%W98}!zL)V(d7nzX|8i@|hf z#=I{Cf~R+Eobqd*C)UjReE*QA`sSP~vD=DQkLP@{J3o$|_m1+D{%S3&kG12*w-(p; zcX=JY=M(m%E9<6>Lb~m^KP1{SCa}~FZ+-FkP4?@bvIcka?mzuxm(7oQC>QpSe;D&R zebvnleQ_&p~* z+*)GF(g%*93>ACj)Q!^;Pj(;v^h>?o?0BO8)yHwF$IsWyQ-0b!d{TC=f9#$ajWYG* z^b0+2q?m7gbyGKOSARPB(aXO~eKtco?0en6MS5Z8tmme1<=bz1)Uz&u@mKq+9-DRJ zUKRPLU!I>i@BQ8T$7QxrUl%J-hJAuPYAX-n{x!pCP0_CM=qjv1(2gAK8=s z@TqnNEbl1c`}M2o9}H>x@VEE>xbFW*Df9jf|IeCzAuW=YPGvbe?8j z;N!U$`;G7V;oI3YE!l?o%r{5$zjfcu{gc-o#){9b{^r>^^zC=7=U2-Q4!(9Owsma% z(LO_v$NR0F<_uMTJr>N(y+668jkG|7pSQ{n7YIYUecW^B`{QizbgH#fSy5*6=%+v(RIu54ZGRAPi~6iwyRZP zzI^TypBf)?Y|=u1@W|$yO9skLN8YZ#KU&uJp;Oy#jX3r24$JeMH#fi5c9llD%)HZY zpWH^fjhXh)>idSa*@EX6ezIxUNc*Xq8>Y?u?uEnGyS?-T?pUijZO{IZ{|M&4JYt@M z-QMx$?ALgP%A`MT|3W2y*qrz49cOk$}_^Fouj?FcdyOq(D9DXu=k_=zw)QPJ=OGXFurp)asN5|p)Z)n zcSg3MonHNn^9N1E5=?$_R`XD9`0KbITyG6rHN@rI*7->D(ClGv%;JoVH@kEhyYb84 zghSo4J}f+wqIaGV*&OWj=CJQFU!IY7zOeL3>XAvu$ya(U@BQmz56wQd0=E;pXUN8f zT|?NjbKf>&XE*RRTs_eDhECdePAfwOFHmiIqp|CuS+YZimRO9eZ|{7y*U^1vV=M8^ z(L?0-cF*6S+Tum zX*hA$L;4QqhTr?a7t205Hl6?J2IZ%(nZd1V779%&>xeV1$4}~x%9bU!F3ED&)aQ1h z7d7IjIx`~Xt){n62(Bs25jkvF0ne6}W*7%WIj{<%ExO005IRni9aNOD3 znlrDzvV70`#Id`jj}P1SwxagRswX0^?EdK3tEWDvFAo3G6+3XZR`bkdc=Ys3vBw!V zB==A4abJhAEw#P$Wa^`51eC3z>7?ej+vbnFXUm~U@66b?@RT!G?A2H^@6^Eu?T@}< z!_(J1cv?(W{yvY2ru`pvdk|%BCX%|1c;kBL$o#L+7%2t}`qbSgdU?Y1&)dAD_|x}~ zjg(iKJ5Kp=^t}Hp0I6Vg5?>lkxc41w_hh-;h}|dU1B$- zdG+2Ep9a1k3AE{qvyP6Nw{^l}ecl`N;11JD?rh3sF*0@VoFQZ4Bj5gk`G#v-uha@k zy~q9ureQ|`eTP|_yI#FSkeprBYk{dXl97vwsV^TqH9fw5<|iB8PW;&O+YkEoxCma_ zY}nvFrqg`>JL&BG3k$syl#RC^F_^!YynIo=@rjXFpY1eA8d?0()ijYs{_)Dh&g0H)Si7;`vpDgBr9Wh2rZ*?0y*(eg-#Yf>2itPzZ~G?oU%4lYfCot8zT~K8~slAV~3`u-rwKxv74P=Twfn_ zWDn)1hrs8T*=7sAoy&6>#iJkoBly%UFR)4DotF)~eEHrhAFiG$bXU(Lh8U0ZdOPm7 zFJ6(w+h;6j{`%t1C$%357Si8-(VUFDKjl=n>7_w~Rwo3#M-7XQzI?)Q`?pc;eZYtQ z1RWi^VD<3V`=A6Mu<&U+4Ume=z(AJZ$`8iYl8%v92zfb;S z-~7SW_Eyc0-=UnHzh~Z_OPbuX#S<4xeT$#2SoZv~e}oQnINbZ-J1bh7+%H|6(SO~2 z#Ya~xD@;dM&|ab)xHJGN0tY+Az)z;VR9ZajW9?w(hC7{>P?t@~@0;tKKH2figzLx= zhw8^k2FJ6KQ|JT(1wZ=x|3kdprYiYrf`i7yEQ`aXv zB;F7R*?%8wnvJ+b2$>)_&gBad3EC|J6J6`+l0% zzi%hv_ebcDE-B0lPn-NuN)sPgS!V+JOuWdN(tlo$)jNX6&z^So-7xg_ss4Qt^6lvt zS<{@XZ|RS2C%j$N;dj^)$1ktm;hp@`o#OP=_QC;lvGrI#I-7KO%h(;1<~8;0lW&ci ze-HQYsjb%+O@HNs(!BB17WK8q2ELeI_vQQ^@O#Tx(~HMGBAx$fnD}`8zAv5-_MCok z%}{f&|M3BX0_(b7yRo;wZ`!_#x8@JD3{|b8o_)@$GS_1kdZv6`@B zYRbD~cL?{s7$kl1v1WJV!yO~%ynk`k+)VJzJ;#TKJ8sy_Jh!H~v_HsC%u)Y&n7^)C;So}SY7rq8ZkYuUc-GAW1x=TNLf{hE?j_>;Pz|)6Y=YJZtHPrdNk4}G- z&`k&pE7Wdz*Kb^N>g4l-SFSnz`K0)FpLW~&Xy=Mx;PHiR^4Yc7>vo9;-Z=TgSl(j; z%#Z&X8W3GMWf-x0Z|j_c1CAZrJB+w|{k(w}_B{8i<;r(w7M}j*_2Vx+-(9zP9m(+M zp8CUi?Y!ZnT~9QGIHIZvN(5lg}I;d}Y%QPrhpDP5g0GXKjz}=KK1-sLhW$ zv3kZr)mLyK2_A0_{8(1|~u zv^*mlbYlCctz&!45e&NV&M@7WCnwAn4F2?!z3|viKU+R(_?%$}2K4^zTlbL5@4r>f z9X*_X@4FB5--PzB{s#T@#KjJOTcFP2M&T{ycpap19kJhfr) z(d|z@FRvqE+N;~&{@F0-4av&+*Lu!9acA7QfyL+FdaK#>9K8?4@q(v&;6~WDouA(yRTNzs`BJ`0z$poVYA}Zd*G^@V)P+%$zrD z`sMH0C!Xitl7BBcw(>t$LbCr>3Hkp5>hNdj<-deF!2d6x4xGO=_n)8+|I7dX-$5PN zcdy^yp$=`5#lJHhnEz*{Lz_DAr+|N_QT+ds>F~ct1N`~zf1v>XKa_ZL|JG%;SSDq@ zi^70hjg+NQZojzuQKJor`1@s4#o8Q@O6Ko{;=I2}QMQ`dO1&Q`NQ#v!SD)k?i-ipBfc)Y^WgT)ZBu59&wjH(+^}mmK}>US&tWzxv`YddppCjHAtv`0Mc3U~f|_?tXZ8K>Q_w`IijlUqYCF zNn!parcD9)Q^H?@Sbqs({UxZ4!T6to+DMDLui7W~=ix6wZOq5rcWnZ|Uw7A^L*?(S zyDR$NTKDf|;7U}5AOi0H5)Aoe zihPJG3COTKIg8DaX7NEY8xfkT{CKR6ttd)P8vztig;_I|6-7esDAgoR;d3&?B98hk zaTZr^0(EYxGw2s_+ZCctu%c2(XmMwip08vSa1@IQV|9tz?2L)j4S*Ds`4PYLb$~%p|!%&!|G)mJ?Ar8FY7@XYfl*QawIX%PS;Ys>hYYd#W4)K_fQ` zI4o0Kq0$2=YRDQPT$8KFI-O~D5UZi2+-`+CXs@~PJWUZBXVc`on5@Ys`&5zRTl|##uUvqeh{7L=|kp22<<-G7vB1a~`6I z;v!O%Hfx2@z@tbF;L?@FNIolIknxpT%dT?RU|ln>a_P;GIfO6KiUxv(riKhQS504c z@Qfmx$!!U%3FIn~K_v$j1tyAP5gQa(nU=AGVuhet@{3Xi0!L7XIhi8H7V{}7dXItP z)c^`rIj162q#C!W>gSZmvY-Pex8Re-q_yS27Q*2?B56kLR4^zFCB&mp!6%Ff54l>(HVCf=6OgM0 zrc)LqmD36h*aG5dYE%U4D;|=C!onI{X>+JZ6gS;sD^Nv>0%8SGlmwMjOh;?)!jMO_ z1sB;5>S0d86AR!nT&dKph#&-yOWq8G&~Sjr3bqQ)Hq90F3uCN;7H4dtWi;%SNz-); z29jenYPrj1pp)D#2QFQAbK(Y0Kou%ibcGx{-(ayZY;}!ljI&&z(2B>iEtZxcUMZAn ziL}5d;nm#LRM}L>K_--7!^e@ZJx~BjNW@aqLtdeyU^VH3RFo(Uf@wC!hm)`kQ3pS6 zj$tH54hctQGHe=_o`VTCAtRNV(U`?bt2)R`5ex3HvcSuU6-^7&h@sQOmS>-cTz+jm!P%w89+F#=`B(QS%A4{;UH+8WoD2DM5JPXXn-zj`1qnMeF}7YD*V+PEjt{S_Ie2xe z6AWqq8r0&D(uhhKdMr+6+Ro4qQXZ@1X0#Xl1mG9pTvR9Rop%mP3}Z2xfqcdW*Y+t9>qASQKPk><2VvJ zl|2wOMEx$Egiy)?g^Wz=D!?+Sf}c&%Gw~!ZUo1wnCIi1lG?f#SXod=M>ISdLQCAe| z)x1*JM67hSTdAU&q~0dpDkhcL#jJ{+amtN>ghPwbS^cO*5mGzx9KE=ql4#N*yv3t} zs0ArqV^O3Hw3OFO)K^6k0YZ%!0tr1WsSuXvj5i7p2Y|THEcOGMi8PBh|UmEF)6o^o~C-@Mpl>%w8&Z|gmsxg zr9`LJ`&7A%hifU8xPBv>>x>bUY?A?P;4JKjJkWBxRje#3$_Eu@BL;Qw(#fQgC}X-S ze5MenV^}xF?~m((D4EO`=^-_giRe_QmYByhse&YfqTz}|Fr6+9X6m2< zZ#Qc=MTDuNaAGl*&EU@j83?^<;wubpk5JA^${I~HWOS<1d`(uB;Cc1b28rEJ34`er zUQtTh0x~+4=c`%lR2n8^;KynNx=Eq(S~PrEOhPMzTi9l~E-nAuBWa z1q6f%u`GvKbeWCRvcN)11yHS1>H z${x#vVOP0`n&QDatE@|<1(~={lyk&eelOJ{&8I64EJ2uu=|*y$kC9P*Rx^R8soA;p zX4XMVgIO23>DD*`brXfCcjmL@x-C)2sZ~WeyPo1vr&LjOfutwN zGA0|roioBgtc6a1^Yp42PVf?VVnSwQSXp}=bAkb_|@}h*tFQ+CMbw1>e zdH@-b;;M!~E0X|VlDH%_A>=u7dXF~c)6!`o9tQ~M{Y+B(9&gbGg}-K2xm6q zm3eB+r>`jEjYQrB^AnLq)QzJ$>@F27q%q~Wiq6HBlGB8LF)Oqod;cE{cfRoNvqBsr zPRW$DW?SF78;}DVPD`bJRjwf1lr6Al+ z^Gkb_Y=D`E=n5@QLXgDK2q}ex*o*>`7zO->utn}|AN5M5m?;u4U@`=jwWN}p&t>P`5Bu?bbV~eST#|E%aVw^2Y7s@33B5%GB#VMnF&(!$say(bB-KSuc|yfx!yKP0tSW)DCRvwfM}q>OqO%zS zK6?T}0)AehAjfLM>RgPhap|zSctgM|YIWg~A`@bBTa+q6oXJRoyqMRJ(>Lf;rYylV ziI|CiR)(wV;*bNMO(|ieht>va_~`&CWn!`t%DTX8a1oqnDUxIh!zE>mp4C^fWv_)~ z)v%Zdo90y{Yz(eJCR1f>_$WeSNL?(XY-D2{4j<2@*GX00TB@m0Tbem6Tgb*I4Eli3 zXpXxx%ACll5MyqwxL_(UC4AA9nLL>mY%S5L> zELHKOLIA1c6<}K4^pHx5CbL#^>>MSOHh(lQYW_eA+OIVgK z@Z;5du_f_Doi>h+;=w}8kLQ(ntVA536qpHkxjLjbxL`PJX>S}{Fsduw z2tDc3^C%U6+)UwvX{agk>&;O`Lsd;;E!;FNk2ZMxwx7nUF-Ryr2h#%vi$*-%k7mgJ zMlmX}XpK}?qzq=LxP-4#kg8A@FQXNEwOM+5>dhtXDMmrgh2(OzGT_xoVn~`_Fc2{@ zYa3=OV}=tIeik3Hiz0fajmo7Pa6Umz&5npv6dT)aqQP2TDAH(mlP#{4utipGR+Dp= z@=XrPW{QAZKqPSc{5cF(97$y>6>>abmHCqX3{iz63Y_dj#2FUlXduQ613F!pu$ZzplpU>htv+Oho}v? zGOa8L)z?FTqSqYfTWPVTsK_bhZLMaS3s+lGA0;fas>S9M(Or`A8bt*4Mf}vN0oJjT zW;xZ;%8E1#}jsd9K2)v^^Ag;hC91||BPYzL}f`6&`-&=E}hEA@TXd-LD* zyKq?l*{C=B;(|Yo`eIECq5&nWjfX0cT2e;mRRLPu1B4K^kYr*RyjjGRbX9B26rlFN zylkW3iZ&xwhNS{(vZ5fXUCZUDy9jwBHlwci*f1OGNiYQxDIyBPmLi$N#W?B}r6J_Q zGb9Zoh~#PxZduDC81xm9I`3^&;?a<*Ky{<46vEQ8su+(wl2KW4ITd1(n+34IS>^i6 z1)<($sx=IRqP4xes5AgSBIRSO$+C@=vha+Bu*={y%jhwohf0v>Shf_8QNuHnAzmry zD?{RNFjZHYa&lk8*Iu&)Bzb$=`U!cxwz3ID^!SR;;c>*J%%%(VFl9xXiDNLUBLF3& z)_Ca|20>b6=YkHVJepE*1vaKDf!0MYc-OEb!|-*6xhK`OA?o>nl66@ z!wi!VQjAWOQBp|+%fj-}CM;;u5n2nWl>uBeW`J1@t-_O%HEH=o%Z(E`x!Jr-5LCOM zOxVO%yK@XSB?*xU?nDG+pkxC^kMLVIq0vpSheBKyH>##bcmhBG$@SqB(nOMXt$mf> zhe@#TCV^0f)N2I_lh2DW(@BpvVx`+0Br0kQ@*ukxN7SW=flMu?pqB+XyEG4gMgg1Y zlM5ZHMij0X0B*())+EXjr>WAV1aKu3!g@LFUh}zAX3#4ZWT-K{M33h%JXA_9Pbbj) z22|@qjB!JRg-u79N;ZzJlmc0T7h+;K$|$cr0|&wdewstp!NRl@!{vKZ;sO$u;8QtO zCCA9cs8tQ(L6o5uH4=hNK@p$HgW^K3lG%hcN|zzbM%4*5qGKyjKBZ0RlVBJovqWK| z1VM;U3^{F0b-af1t*w%t4)RP^hs7kLVd`Z#8x2A=ez5?i{H++1Tt^fYRU%MEk(@)C zP#48XfmIMdO4W2dDX;5I5*}huSkm?qOb*!M6(S&Z#9SH*C+V?iS==0o_hvrT3$%T$(FN7|bPC)13}FqCsIac#!c zzym^GAPX?lBnM;)(|A-aNR5f99oG9j8!I9G2~VOa?uJcLjm@r1F(kS zgat8Xqf(4}n(8Pv>nb43R#6wTH1cAIs6y*`I?SMDT~HC>fe}Ws8mAY_SO-0e8ZlmT zjez(8g%qr|eG+w&Md{1qvk|XT%OPR(5CR32{JIX%mHiD4k%Q9&t4dHSCCEzUc)(Hi zSu{0)zoqbUI2r?xhUE^Og;7&7r2$se;(@cO0#U+^NR7m#sO6)@ND8ezPnT+pK3@}8 zj~Bygu13{xiVOxW6)c+*B@3w1@WbtGpF+iZ8~;k%|7+Ol|DBhe!)E;lV;u_- zg*-t{M^GXN+i9@SYMCNL^5%$ISfS%e(_U{OmDV#;!J1qWs{~6KXOc-vQX};QkDv}X za8(gvsR}@=fG(pNayl-l=pi8xRE1l^3V;yVj%nZe>1H8O$~0uLmOGS4vFL5>$2SGpppJPn%DlWO(DB(yTQ08lwxnr^UtO0a>?w*TOXY+RXWJj^uI8l- zQKczQ8Zbd)$YYGRSU!3{%a(#0vrAu61h}xpb z%f=>|FO-So>`XC34tT4gWZvQ>=e3z+)#{;DTgkZBWv%lOz)cP~h;9Iz4`hnPLcm1J z(78+!24Qe)sT88MfiM_Qsz8d38DV%V`dY^5&|oOkqO&M(d2|vMhwc(+E#W#U=2kOi zCMdNL4e;{aGq)^k)& zCEg;hp_+QF#0bMezu81E)(NmE&v#2Bgrvfmp+;ExR)vYGJemgAjsXmLMXYJt(M497A<0@eIBKjWtLMcGol`5wkib)t9BDrc|gFqHa3hD z7*i1KtUv%GFZ+eC0pZmtEvG5&Fox4%6VD*5gw%z+Af+Y|a*3oeN(0L{l1dRXrpk<# z!|6oG0iF9qk3>DaeBiB6AX>^neDaR1+47xiU83_KPxHlgmg}TR0LL zBVOc7N^wCz<-=)n*-W$?*U+L2y+8^?^HRH3D)x|=bU3L?ikWmsrZCWqjI6U(Qd)T# zUQl1CVD0{x3UT|KGEPt&q!?2l%41gFztZ`4!?FKe3!lm4 z{FBZnWz0SUg&;B)K`&BA7%WT*$*18~9x|}~HfOZJ)hQ$jix==nBsEGc1S;_?VLn$P zvek5i&uR$GWg>|VqpX}yOlGCU^-_)7CZb7m!k|p7rK)SGR1;7MvkC>xB=XdfdP9ik zXzLrVARLGk8P+I0lntUfkDJAZA{1g%NzZfm0s~&0D{B1-$mx_5mG+3L3TjMbUL*-b z2~aH|h1l-4`6@_+0ZQH$h3R;0O^vg{YX?fQ!9bX=)K%)da1}3aKqa!574Z?8Do38I^aP7E0NX@Fb!)mxNE(BJ zJmiuT6Z%9=nW6w6*6}6qc2Ob+Wkv6uCC3 z!ei8tCGlpWfEN^72pz2ILb+m881fQjM!lQL_GkzMO2V&}rjZae!DDjT%S^MoPK_9| zm8?%qGMPcJ!6|~KaJeF^WPB-G6V#Py)kxbw2OPGN#$gslj3s88A@!yK2Bi{krsMVm zKVqZt#PML7SBSTZ#r$DSKx5E{)zJVsX-c8oxJ>3r)&y=CFW`xDp=>Hk$7%vJG~XbY z;~^iLT82mlv>p5jDG-;i>J54-h_tTP2J!NoRiJXy)DaQE(h68)c)Q(FDS2Y*2o6H! zlp5em3khL3X-ETQE{Lgc@D6z-mS=E{7(>vjDwfD;36+ykv16RNB7;j;VY7>-kqW%D zgjJZsqc~YbCNyy(DFM|gBU`FqL>R5ZSVN>lGtt`CAHmJHCio~+$g?TDSP9Q}Y7Blx z3aL6XIj+!@7nA)6mK`q^-4=||s}iMn#uSHI$qMXNUWFoe#=|mFy(KJbSpco5Ez=2v z62=z@s0ALQC8==+0_~k@R3-x@t|EsUG(I_8l!mzur;bX{!f_kP8q_-}^@buWX$Tk^ zV-4fa>T}X0F<@w~8)7*dgupc-(OPebEN+cIRZB!gkV0Q-#wai>NxK+IiVO~lD2Rzu zYhj|G6%RJ)OfXaO1Tscmqv8)r<=$olFbE6es59;nvT1^5Ig`bUO;$9(V2f2{h@J~Y zz1)VO?XpAz@gfW)tZa5JA%tvVB9C8|V|2xqMu=^4c}_{$+#b%=w4BatrlNUY-W)CA zh%8&u=`8Er=>q7|QK}I8SQfG`Qwmpz4tG{y z&Qkcga?)#6<}e5-7S*|YB$bY6&{7=Z2BkHx+OINa1({q$Ny>=}DqGPm%n(}@Qc8*o zxnmM3-A}+%GZ-Sf8Y-0NmZC{T^F%D6a<%Bn*tA4TzGBqId|@M_R*BL`Su9G422dGn z^3`!EmdImdSfXj7TnBQ{c-RPg3oa;HlKF%2IDsYyDvcslEu+Jppi6EpXU(CEpa9yL zxeB7GLp6aQT+^ANEnco%R$(=&Fk5TEm$ktLk1lamt&l7R7?~y)(Gf6N6C9aU5)5KA zBxWqFa%vMHC4tut_Hd+m9*0oJwek_CB4#7zNM4sWN(0PtA=ZxJR>eL%#>J-b)717)?8zNWdGAo9G!+z>WeU3{DZPs&klzB}z(LWz|L`nxV_u zn_($Ye5_+KO2OtcuPu?0z-Qev^JA{8FNBoi(tF5zY1 zJi;Q|BPx5OB05D7ud)@YbX(6qy z45STO8ckcMH)-njhQ>apxM9x|rAd;D8g@uCjE1xADQjX76AqtXYAj?|P79I{fg-N; zQkixLV{?kgPLiJ3HXdqn2VLfYf{=!ywnCOFCht)&L5Ynks7OM=oNQl>%5xj(wbLm({NlO#KAqtf&l~Uv|Vigg} zHFqQDj)0Xc5D636aSNM-Ms=iku$9p3h-S9JQG=a)dqFIWgaUC{9@GP(nyMzU$QZu% zB%h^t${q?;&*qTZ7K1eksv1ZRuaB^lFf1!u!aOw@q?YoqrAZ=6SXi7BD8mJuOqHgS zm=-FM6Q&V*yk2KUBH9XEB_ZJ$zzA2P*cjNb_?r|f(W_u-2q2!FLtJTBEn$;Y$~Afc z$7l(-MS4{MDT2y|%+y{15#1zu6fD_ziK;^ifg~oDQAyGqiJ)86f-q(+wc@cmGzi+{ zE0|@MN*v{CTv$%r6<~%@k5B0_=_EAJB+g}Ng+?LK2>IiHz?Yy{o4&Y6+e!+wZfw|6 zaC>CI63;+FVt#)ypYW5yh?`q03R59K&<+@ZjG9&}l4ITG6e2HcVJld$wZ~)?Z;FY7 z#Ud!QXzNWw&W9-cu4bxMz_W1GLfs)Xa9~_MO)y3L*{mcU)f%Y801-oD8Zr!8Lk`CY zDA!z0R%PM#0umNt$#>paTw!EO@nWW?pi$OKjia4cL zt`zGH1U<=8wMcCeY}6jbb4rf9BNs;^K!z_RiFDpqEq(;FOB++A{a1>)RDcvk~5~c|dd%NYn3f=(Xq$(y{)6uZhf>jB%!#m+p z!^q4CI6=@|D=W36aUVUD(wN2q1_3Itxbk4b3Vz z+rrW?fG}Mp#mOuGEUF1ecz$pt8Li$(&58pEiT6@f!1RHz3B% z74EW&Gx;5QD*WrnomYrncYQo#gF2W&zHZyzfg={{3KjJ_BQmopZPSmb=`hQ8nq0Cr zEjk?7I2%Ki*4jgn5nLQ@2Z2J(MCEwsjbi->PZp|P!8KfKRPOjyZs4Ez^(rs|PYr+6 zZCq;-{0)8>_@Sv5?r*Mln2SjhatGDwSE+((Z@BVNct%(`N;`-DrN>6#e zFcS<5&G40yZu73oYX}~7)cNpxMF*Grb5t(2YH8K_WYv{al6L#+-da|c>})ff+I6vB zu%KeIiS4)56iInhzmA+6zCE>Sl}+>5(%6;;vFlB-kg&jmA4kvIl*}e?4VNA?6WQdk zt;IxWC70KVkGi$cf+jOj zQoSdH`{Q*@`Q`u zYG7b#+)+V{PWozoTaV{$WKs$$Hkn8rJ0l9W8hAd_K$?ti%z8NShEr%Ko7J?pZ=FG9 zkTn#5P?R#lBW9Hl}c*r0D4pl8h2brm_Q?XSZ=sx_jt z?Jf##^E?_OC#FLiKGV5x4`K|@GTtv5#;R0S=_)mflv2n;Em-^>FQLgFTFvjC3Jw$3 zsGQr!0gWK@v!^!`C|pSQF>dEXsjDFMWK6%{_D(AZm(go06`z9_tJ+rt+W9qzmvAnbIK1w<%510E==W>}VDmm?)yl$~`+F^tE-c+s!w){Q& zI~&FAAiAwRhp}Sr9`AIuJo1l+6_duZgJ6uBR5}fogQMC0AOXLiy=S*8B%p{AgSRm1 zkfzR4-Mx1p_lR`wE@^bv*3)SBa<)pDp|hDEyta#@w#&y*+U^ccv4!9zayS4yUL|X2 zm5I(&w(jd{(Q~4xWy09XpHino4PUEHzoPfT`?}bhbq!{A>&JYj0BvhM6HzkjTl2!m9)WeceF~?alW;LtQZA~t7C^Dx54+B4cD*2ZGZov)E|vHM zx;$xVpM(w6HFXCx->v)-f`t8KI&)?e_OR^G;ztcN(x-o@b7|s1g0&;W#(MX*K5b z&g#W*=V}%fW1S~zX^D4zE?)rcp+W=?nGQY`AiCRdn=XP zZ+|zdUha=?!(q8~wNU2m_Lm3hsdGPgpu9@Z>J>ZIe(yXk*L!J2m0ZB|z|8{3;}I|~ zt<`kU5WOF^@9xf*SE;wT)V?KY6;86tuu~#@47d!^@8>hC(zC(Lv2(f^7vGZqmf=UO z)Sn$D{o%*!ewNx!TT+#s5l;D7_TbneOmTBKcGv^uu*I6-wZ8jaxr||er|A^Dah#rbM6Vtc^a8D)rQEXp?58YC*$}RBitZe_JmP#~X+--)X?dalw06 zvw)kPZ?HZZD?jWsm^@(WgSn61^%w4>=(kd&=&rB_6vH71VRosw_a|=w@(pVXM_=v$ ze=nmll*Q78b#zu;>P(g!Z3lUk=RR}9zQ)YHz}q!mc#@^lb_9X2n&0-YSid%AOIAAD zndhAaXqU2%om*s=HEL>>)l`mw(L-sEclagcEBj$v zP`xWTAFyX2^(-P_g;}OcXWwj+n_!e2>ew?VK-F~@^2sBA+Fby7bIDNjK7lsTXQ^IB zg}YIAXwOd7$8%6=on|jEHp>zmDHlkY1;5#=U%1&JvOAjl2*C6Gu#C_w^xyNN`#^gi zgsX~?+&)g$IIvKEfSz zB#<<1-!i~t_~qbtu!~MsdQGG8*}T2h=WJF8XrWr!Ja-KY@x|F`et~P$=9G_jIB|lM zhB*u!rj8;|=f;WHtPfYe^5L9mb+r9jv*e<5A%9af#^Fw>if4QbVcp6y?|kS(;;}&( zFSiNW#ll4(K4)n0B);*ATuz*z0~h7qzD9JJYvspb2x3+$PIO(iu9IniAmCa)Uq{Ks z6t~F?fa*LA$o61`KoeydG|BnX-g*c(XxYnJHNIw$%&U#CyE!Ez;qFg$uTU8NtxEql z#ygt&2fzELN>_l8a4Ks;6%9-HnvwHtPRx!N(8@&_S!5Pgl5vF*eogYjgsbV$3e0|b zsh?UMOSgO`XiUl3s(R6ApQdB7eJo#QR_8ECZ?9&5hCKiPHfDH>q>;&omRelCW9}XL zQZ3aQ*e)oQ>0WlHWH8a=I*c2=4^J} z(}j^ZJ{h?{cK56NlDpgKZUDFV=AzP9lBOTpA=$9&X5`AY-*eWK-d#=#>vgV89I{`0 z09`qXgo07N3 zYktdfKvvHrc72W6Gn52fDA8Jwo%k$!x8ZCws5(QPkRKDNEf%(GtxBYgLA}77J^@$V zjR#j2l7Hx4B*ys>PriT|9dNezjRR6gPsFNnt;Ut=+8JiGVz1%5^sJ;KJ)?GTx<9)` zeFTCWlGz9ajUruK^y?`qc?(Sc&afZ~#IY2#FAva-*uP7sG14H|g0^T)dmG)-!by4P zIJB(6&;L{(V=%tbgAy)Ei`6V-7cWw47F+rau?hu!!IMZEd=l*FlC13OBP>}@4Lc0n ze2z^FO9g1usLEIHhtw*`&D*8ZURKW2Q6G8~rpJkk{C36u=*#)x=L;>wH4Gb*(2Akc z6Was6K433m{6(kl=gzqqtYVZ-WDDHvkq=c@MLyb7u{+E0&+&RgIj+E;|G2d*ji!Hw4aCTgr5?w`iTgf{I-|Efteoy~{D<+ObgFKu-#zmHz>8-?_x z3GiJUZ?K+E@HI_7ly+xy)zpD^a$r^H7H}mrL~egZOVBn?;VxKXDZ6{Ao!5!YMc5eL z_|ziz-P{!pmOyB5|G>dAhXMy54IcFMJM%Wb`6`bY z_}1!K=jxOgFw!dx0qVGECJzcrp7lEE%sbd21_#3DBh}`9`@TUYgwT@YQo}y)&pgr= zC~LBKev|D%Uv(gbI$e)L=mI=+?;{lvyH&Zp85||vmOXRlx4vU^;~rSx{HYw$>$6!s zMr-(-M^3B2U)K3h5{OkwRH^&?WkC$k2?`=}RORG|mmf}b3&4Qgt_GAtIjA3GFP|S? zJvLD`EX}T+8`XHTrNIe`4X<{#ior%B)Ypr0N+zR|(nHsrDr)dreGB)eT*nQm^^aN% z4mz-Ql}#HM|4!(e_a$8ajxe|>tczEMI`pvjx;~I;3d7wLpRJ!)4O&5nu02zIj3?a% zmMA@bo6!+D>m#e}5%1A*?P}kcb9pf;6GbE10{r`LNB_Sv^ws~va~(PVee|;|06+^V zq0Ano_)-&oT1sD{W&PIJou=<3F5E*b_{@I(1%A8ZctFl1k7OS^uO2Snr{NaYP6B26 zO{5Rc!Tq*+PUp2oL-5zw>KCKi1l$IC&{7(*cg-YWqOSO)P{``P1){q<`5Q z4gqpPk1x6y*WhY`DCS6%ByD!6KP72Aw<>%4jp_8=-cG8`;Z>Q>(CHnXgUP|RapXU( zM=!)GN#0)1&L*b5h=pH?V2PjI#J%R0@y!lD^ax4osM>u{RT6H8-qIiPD=Y+U+1-qQ zuV)+8YEs0#dRc5>@Cej?>Z5mjV_=GRnHpT7Gz>ey5bCJ15{}>tS=FQt)U9(bUyoSI zN+_VmT10=xh`GOD=PtEu&GXpq?*@I>*|b#r2$Y-hdX|awI%r2)YjIz;#cjOfW?!p4 z11iyA_qZDb!cXUJBOSid=I?|*!0fLGZzp@^wI#xhb6_K){lOr>n--?&?O=Kwc<)wi}znu07*7h(yTJMLoDEL7DTCGm{yBx z%I(z^5LDmV5HD3`SeIp%&!$#5o!K$cO2LfS{5=c#lEo+eKrvOkEU-zj3AeeIYIIvc z@ML~G5=pxI_VQkj{mjJV#3jXk#z@~19>GW(RNB1xuENbRnRM9fH!~3;q0iSf(?x+w ziJw#8Dp3c=r=S(P3?a0m6xo(`fhS|$&r!Wozhw09@V7<7KVoSXyz;aDQXCC9WSdDm zcfpnTtrUviGmhZ14lm!m@otjLTh_qu8DhYd7}0!*4n)7#Dm66-8}e!e8} zo{pM}P>W&0_Ke77!_wUQx})M{zxX8jpyS2oQW>q!q*`k+W$WAB zg({zcvF)zC3%i3J2C)J8=OA0y#>_V&2A0%m@6qdlr@u%UHsZI6Zy{@5>Nn>Az)f(| zw>fhz3`>*hbyORTIL|CHV>1k%+^VFw;pC$7XARqx6#4wfJI>x3u{*a>KA;GWeP7cv=bFYlqc$64t3_=`0;4!AGlZi)7ugZ?ar0u z0ktZ5y0=oU%W(SQJvF`S+@^STI~zR~!KdG|SrEj4tUta5{YuFBQW3;4r4JY3%_2_6 zDgCL~ZCpcZPA{vxuk;bWZ-PgrUl!V8Du7x?1E~X}2rZBcH%KyCRZoN4Eld1cR`_u_ zIahj*+qw`f&O1C>4-;p%d5&Tbqk@JX|@By@W#eKTA1C!W#@HWztq$-*+z62dEbwH*qKz6UfU7neP)F2EGwf= zu`*X>fl-rIdA>>QCXoGydZAWxUPfCr)+46cRnIfBdHnFwVD!tPfVYiyx6yys?(QTB z2kYW=UQa3Vj}Jp^T8liDc6D(aMJp)eu`oMNte|7JThq)PdT>Tl!&#q{3t)bFl_A4Od;`D zIso~yR)E<1KzBh+`UbFp;-A*_>iPJClu6~?<(g!Z)~v%?rZ+u+`+8}TN^Ki~CsSF~ zw-|}{DTVn)83{p}uXYE!%{xHP#T0VXw`u@EqF-ItP{eqlfbu_79hk-90K4_c6%_`| zaMHA67;Ap0(l?9n`;R6F5cDt~@WT~s0jPJ;FvZ+aK4PgP&F^FRj_{1t{`3_4GSCob zduWQIqj@1W#LhmNAYo#2WnV3K-&^~bAki=5J>HEW*qMyub^bl!V<|TRVEuVr>4UUv zG@ldsS|)Y@`H^EeKTr*6zR&&l2`&qr`CTP}g1s3*8*ZkLh-qjKUF2Z5t>Snsl4EeB zRFe6Ei0C=}%CV+B!fNRWWp~w>Dj1jg{8oOC2CL^aptY=G5beJeo3h=#EZLiu#@PWF&I1 z#$N|`VLxQCPquEJivXvcL!%@Lj-8*J+WF=3yhnCQUDJjuIGacqUzv_Lb@d5-EiQOR z56ZZg7W}5T)Cw68e!dfN8o_9LI}&v;QqyYV^<80V(;ydi?X#PV$U^BE5Ns1PaIZn9 zuAKJ~pcg0gR=8yO%O?z18=CUYpmSa{*Ax4sFM{spaLPF`)1rM$sdfoHg6IdhjT^&( zjm|2a8uyxR-i!J1XcGMEr^~7~Yn|~|Vf#8;)NJkl{FGa-U>i)=?VZms0Q+fi>LqGS zS3h(3iG|(hfL-dIaVBh67~_-HsZ!b4!fhbPyYpSv z&cRRh3oAp?{p@e2{=c&E(f`EdfX1FqA*x*Fr@Py=-a0X@0KeSl+xODm*M+%1d;Ydp z!qm8qBI~c5LPZ5-hBdTm4vMHkbDq$Dn+&JNJ|YCae=z!X&}bYIm^IgxKhxU@2rU00>t{;x_(iMLep$ zM+&jqL{PA9>J!b1t_LMKUeS`dhCp2nvIyJ{8>`j{0J`rLr-$OiMc?yk{q%Wa{aw44 z;d?VcwV$IaZVr<;U!QG>!ktU19q7?9&oDmFPp5>hpPRqeDm-J`?ZqyVeetpww%6fc z(At2w9UxEBc3*}+lc#ttoZ%C&d30<3`@K9$PW?OFR_8_p+&w~e?B^$j#`xwvd##rvYcm3JLe#C@4ymv_0VBaV4=P2rY1C)sD+4Xq z;t^fO=Y@B2#!vXA9I}xfK;8Qij4gwZY}S}Hi+8H(cQglX@e0s(W)6ESy-U@Na90n_ z^@UKTY?Z(&uzEW}sQ#w9T}|HKCZ)sm{JYdKs{K98Y-`uj`0ua+_Dej);{bZPnuByg zeD?_UOYC%==li-=0_LnC3e0>x{ZsD57j#Rnkaj*FLiV^_+OE^Ff`U-BeIVyGQ2atD zrMO4?yDH55#;x+e$FP=x5U@52kAhppsDe;|JAFI#^c~|k-g0VMMt}5#HOVh2ptH8Z zOY}V&jZO3r*T2`J$>!)@ulJgkyvq$)cCEezuLIdKd;Lde3G4{Nssti^Ox{F9<6@c} z26GqT1TP70shykeVpdsQpvjBPv>M#Y>TpQEO9dM%yvmn8lZ#9`&EHA&WG#E^db3OQ z%x>s7jR>}j+VED2i5IM0WMc!-TrmMQlc+1c)zJ^f>GI(T7^5Y|KFH4j*$s=SsT_uS zJ$W?is$|#z;mfGew|zK4nx)+4fz%tpGFCHFMI;NOYQhxPz2CsP zLs;txp?>I|S~e5Q-P{0qTEl6vTP2M9Uft?duNR2tY5lq&?#tz8%>}I2`EIU_b&JnC zLuq7J&cXNh?UXhoiZw99I06*FwhG^?Hh%T2T9dl%#tMBFJHMs+ddIp_e;!jR6QA>SZ5B1h^=-D&pDS^;yep7S>b2PY@s(gtBE!*^?BbMRK^c1dgov%IZ z&P>va$39K9A!%8!kv$!mRHy9y-nks&A-yD1u1b%Oiq&ZNrAfKb@i4@yh=s?ynn3O~ zqBQGo7r?)A_SOFvYy(^#|Lx3#px6x8m0ftx?~(@%MFLYF35VPr#&e_f`tP-tlbD zb)s!)k#y@v2ezm1%x*WF01gZo;K#l{En*#W;50-)t~}=BP3{3q1*JBq^4ly1;eeel zF|T4E)oZ#yNxD2o9`O&mh2`Set?7%I@fb9sZ?)2EU+>9~RPMlR4U&N_0kEVN;5Wb; zh4HyLs&Z3o;Y9DKbQP*t>oj#Km}=M-Jdx)ew9>K5yG!S&6w2$Efb{#iLi7}}e$N>V z$P(kteb#yGO^#)&-TwX5)J?OAphzrw(u`w`#hA2fe~fJrK!8nT(>(Sc}ta{q9-bkZ5dJ zWlNu08yDSU2)6-~y}?kMl~-jn3?ZyftTy5VT+zp-Hr{nf_Exyf1TEur5=V;f+ji|! z?dAS~n;y0vE^lhaz6_?O zF5oIeewKu_%biLtTc!SC^~Y0Q1OqEkyC3hJkO6|@nxaxxhLJ?_kQ#z z^MM73p=VV7cB=my?;i6{zxJQutQbY2Q|7(?YIjtkbu+(rhTWJ>NuFCauPNg>hRLR{ z$&{*PAJFs%mJ59hkBMsEe5OsPjx*bDhiO`8of)ckrr9oPU%VPIuu5&Czo`^AtiiXq z9$C*vB81XD(sGJt=U!%X4Qb)e3O3e4oC;x(PsUto*y=TLEpYC&zjXiH$=Ae7nLanE z0eaSCo3QU`^FXz-nEnEc;WX&;-^)oTY51!U20X7Wtka4+=Z~5e42IWKK#U~ zn|!P^7Tb$s_lNg(mLnjLbOVwwZ$I@}-fhXCz+(1op^l%Y(PBJoUC=Y1Jz z9)wojf9^pA%V=-0vszwb79`gCFU@B;Ogg2EjFp;@2GMG(?qc~QtWH-4>!2>m8u$Ofe zNYf?`0w5Pzv44s7cO)qQUL|@wCUpaf#+}x!Ag)g0ebLlP7tdF$(FD1~@%IDILHN_# zD|g*ty$3GmyDzvBSA?j=PCu5JZK>@YDj}ASW}Bo#gNWlNK~zp_352{{ z9^vKKynlT%N+J=LNioW5_y&qbqlY!Uu6}9ZWRIWi;q9engPcv=6BrN>D~g+e%we<- z13gq$mOUKeO95prl;_OhYghU0rNCBPzfIBcRQW)!a3bUYwW3KSHd%c50|uWyYFCH9 zUsoOWe6M-Bx?<&eg+_zygE|igDm52IT_99Y=%wYI_&xth_}foDsVTi>9KYPe$#UjM zDM%?D7uk0gBnB7i!8jDUDduVDlzT9+GjO*}#0tw!R`l#MOfk}L`Oc2mS zrBEj7)~y$fj$EfBrc=bKRt_7kD47Eq-Cy+>?qlM%QLPD8*K-<7gRMsq8k<~~&ad!j zWXg8FIfFL>wO5K&j;19y?{yjNP#S;sIpvx2D=BMF%LEIQKH};P7XUretw+C(2GMVx zsH*^z*e6q?@F;$UAbZ7VTz3RhNuCY4z!esBr~KB}$wGV_IaJx=h6RiQyaVhnQhU7P z9^+uEz$0OHA;M=gFU^Hfn=wz=)WE*Wj_h)kYao7J0E3~NXT=$=+D;-j!L;d=Y}`S~ z^#FW2^%^Z_3mpE%O{vpwINq$P1@fc3R93$m%z5)o!DA{2m#rJz>c^AEDVXbNJh%N( z_?VjD@jgY(oXEPba!;lIcCY*!cV(m9{tw#|qL9HYE!7L(@z7chBEJ|2eVi=r*99WE z;__x03{iJGIqVBBwDW>ybFGfRZLLxUN3W?GiI;@f|l;b9Fb6P*WgvY}9=RCxuVfPf zcGOC8Hy*#fKciMOszAaym5YNiT6;sNz+>wR*5GzhX~A8<2UvK03aWwOH}Q*dQ)&!` zVb8nFPpHk4SyCzK&0g+N(E+QOJD0S7*J`P9StZ5b8nz5Lg>F1G6Tl-&o@^ly{=MeBFx>iyLw))39TXyk_N&JPgvJj*a;=|0`p9%Hm;5;JhHBQTt(M@;6;6P z>TQ$gQQ2w1wt*{)KkmNou#|f4OSvrEk$+FKU+WC}pxXf*<4<)4_4m9*{!sGsaec8( zLp?8w@ICJp2duYyiPT=pJUzUNBG2)4v^h|HA9Z zasR~7Au{8ds(_aVD$7>DK;h$&rL6L}Noi%gWDn)d-o`&nF;>u&u$%RmG6cid2b#pD zlf{qim8$aNfho{ocFYBu_$_{osd5I0*o7<>XQi@H@+2CR(|%t$>O^oo&~VkLwm@&& zSe#FGQ;M&jB-EM{k=lvmJ(~CL=JC@{-92CSUfW-Xy1V23J7a=b?>?Ni?W`uEqbPuN|nV;U{4^#cnt_8V_f4Wt>&j1JfB%aDpf z6bUA>dDvz#An!)@93}M(pMOE1&h(qr;!2lEA35+_c_KbaQTlR6x=`$;RBxYP~|Q~I3~ z_Xrxtv3H$`!}}4ju@b1d{ZNqMDTr%1-ByRLxJ5V+(ARXF<8d|e2GpC6t>N|F=X-r< zsVVW*ef5xcb=rNl-Pti?KwfrjVdn9+&A3aIvESX(*J};tF;d{OGH0@=UXR1_+=T2b`s%{S zVg~Q|sC6fB<9T_}htC_>KWkO1KHS|e_zuwl`k&(b?fbkJrg;rncZvd8MEI>A)tl4V z^=1r`C`Av)i-vA~R5)7jYv|NI9@$=x>Ug1MJd|;r+V|Jka3R90n^o);yAbwhJ1#&ZHdx_bw!3_c?rly%&&^~^0%nuvNUc`+7KYWE{Fq}qe2W~!M!5&i zdIv9uAr@eW4Ly>}CwgjLT%g4j!qMqB;*<@jh(SU{ijtN5u*;| zm-*F6xjn&<--MG_E_>T%dPAj4B{F0Pg$Y`Tg`J~NGhvX6{?kv#-z(snTfn`O}Upps!p z7uj{cFS_6i1?i1QZtZ)(HY8IKZ(fal9v63Utbz3prQH^12+`OdMk`D>Q0HpFJBWqn zOltKKUQusfr>#z@!n}R~Q`Q>SJU|Fc6mw)a7Xq!dn~?O0tOLQ5B0a|>wG3Jg9ZHTPyG;VD=94D zMi#z*Ew}R0lZJPOp6#k1Hg#3BY&sNO60FW3;JQceuTMVxo$5#I%2k{|*&UqCTc31` zJVDmw>6%c7jZik?j8OLV?qfqPwhR2lK~6Z`ctT(nKm9T%e=fWlgOr=jXqfoj)Jk7= zvtglP^$T1%*B9|KYeSi&>DgS}_xyUNGM^8#i~IW%^_Lgv!CI_=#IF6!A1oewmGDP< zR;BN3clPDS_x2iQUjcE&j(Lm~*0t84e# z15yLY?hFg)pj3hQL7*kq%)U1!uWBN2^}}7oKa_Ac|4=L=SKUq)#k#9}947p;0zNKB`wPxDfpu_ZFxVLRQt5x_& z0~bhVU|ktqUAvolr&(*nHb}rhZ<(41W4bGN^4&K?zr6*_`(wxsF7Ir+y&=NoHc+Zq zfcd>!ma{>!?6{VKiX>wIN}Dgo56iBdSX6ke2hI&+h_Y;`vw16T`rFD+UQG{226`TE z>1xJ+eG|#!LC)-6UR!i-U(` z+G%uN2Wq3sZ9!`M+5Y-7qMroxX8nAR^MF3qR}Gox!ZpbHqTu4YF@@jtNhRLOPqgo3 z7+uy1{qV5|ElNO6Gz>O{y3+@(a=2_tOz*Vyx&!_J9)!VN$=S4;y!XjQ|2bgpx(-+A zrfDf@u1a@U^9Uz0q}K6`Mppm~cc{>MEUCYpV*kdBN3;Lv{Qhf+$N!%bO-btZ)FjpO zvZR_rW3VEHAD5v{W)`Fp3J#|Vn9(eTCqCHiHXQd2sK6Ls12x4h3hx#MQeJHMAT>y} zZez7ryh{WE{ufbH(fUASeE4B*FSQZ4kxywbqs|VHcXjPjn zO;1YuSgkJP#L=$Pt-KcDBhiQbRunXn8~O=mZuYY)I9lIoqt;tL=W>*7t?lPVDxIMZzP?`bJYIIJt-tHYd(s~VM?)AFev@v2=n(YV8>i$+}UY+4-aZi(x zeCU7W=F7%*v+{WW77%4m`=>oOhk=h9VD(6?!I*wSoFAsYhJD&R3M)ZrWgX}Xv~;lr zl8N^0*RM`o?ZzkzxXrWu+T@sTUcvP?8)m@BUfD%YLxpSdSq6<($>0Pz?I73K3Wj1MO&Y?8?!;VA6HVKi<%n++z6C6Ej_kKVENm8 zvb?SRLOdW!#pOm_Gi$0Cmx8$B%pVnR2P%jma?|O?YWhf9pO+AP@iEcU(f6cC@d-8Z zl~EZ0gt@*NB?0rmD^w#TdrPp5>#}5U<+_B12VizALDL!s{$?;zf6Rp?*phXu08m`* zwOPLW+ji_uyuY=8D1 z!y_K1T)MmIv=U;UjXtgUy)~k8rg3;NAl>q~x)dkRA~0u7qBc9dOiQg*7Q&Sr1=ZF+_FWPJRgA=Ht%m%b#2BD%d_s7 zY^;`5(7)8H#nQ2p>Sj59&QG&jon<~%#`u^U{d(g_75L?k(W!fAzM>_f(}&@%v0f0T z0d-3Rsnm4VWwXL|Ts0qWE*OXgERW?hwqor0Y?eBs>ouu%GvfO8!^^bME%b7uYN6S^ zNZa9D+ZUxI?Tpq5`V1L;YJzS~MiMZ;d57Dbmdt=jbI8(1G;InX<$ty>zo>dJZ!iOa zhC{D=|GYO~g4JJZx7t)r*3i*X-0`kG$c2l$yW%J8^_+lf0W5C;=KHcc0943_?)~Pv zpQM9g4S$uC76^vFRG-HmRhUU!Pk+xH-qG~^Azxejf(|xRoGk zhV!MmJDXy=bZ5oA+izO4zQ=IjaU2RiFVEL{4@+!+ajAmfy*?++)2}!XN&clDu7|;~ z2)pF;F|YLgc2)ctZj|h?T zOYc=R*GzNq^w0@vaP~!9y-t#B>S}-ZJ4i7Soi^Na+90tvPnAS>hd9DH0ITxco^&{d zJM%p2E>Ixc`x7tU-m4(8jPRc8zBE_^BERqmCvGXG;m?-YS04Pfx5%O=rdo`O82SX6 zya-+%9U3Os^kIT@bXy0RieS+|xo{3U7_TLp7LXdB7XN%0vR}Wh@maAqykCY@td6H- z`@zpFyUu4%I!W16pq>kjgkKk#byI?l<9;pe@4BrlRkj0=D43&QX_Ks;*&Y;Tch_R3 z1G(PW?=JUA=>>uz#LP+b5$S?gY{CA0kqq0HwOI|tpjfIqkL0^uOx|@8#EP8XY9(5B z*Pw@)yg2x~pM}T8@UjO;n#2ytQv2T5^i#9nw6EC=Y9pT(v|F!Kgmr2xt+{}b-=e<* zq*;%fz1@O{d=POn7N;QU$!9hpdOFC(iLhJ;Pc|l^C>pm07F^ZV=dOLCK<5kC-fzcX zzxxsZIUdS{bt0tBs@n{qhej2 zOTeVPfT4UwPQDv+`>QJ1uwAn@88w?@!PDe!qt=TGB4J2M(L74qM^3;}1Do7}~j(Z zJ_W$uDF~@iJYNwmO}VNbD=L_@^`~R|DFiV;v;?39g9>%qomY#u45hYbxL@9aQjhxD z)AFFY20J%n;7{r`Tf?Ti5yW#FUhMXJu$-&3-5l*MI;oU~kMnsbm(RBIF$r!QbkaNF z+~x=8cSDAE3fz+tdNn4;pRk%Zx7?H&(mSZ>7+9c+V-S=ri;j|t?nM!l_vv{GkS57a ze#Vngh#2ksztXO3Syg4(zR$0iiXtjX-zwPSR8hnhY*0`TTWn*WxL<#B?S~y_>54cH z+czr;v$8A-Dl^9z2ZmW#Xt`D#6me!u-yh5w#f&j4bS{Su(|atLJ0TDaehtK|6}z>P zO(&Hp3O|M0{4OIyeRP2skeghA4vx!KM6|8fk@b9pa`wY$m*sk5x|zSKyC#VVJJ}C5 zMY))4jBH!@(-Yv|00imZ(?q`x3)@0#@kk8X4maU!n^&w;yPOZ`cbB<}H`uu-$L#ph zMAx&k(Y?%)O!#wdCMR}_G;%E*#e7tIX8fW3l3t!`XCBMSLDA~TMz!!D4%3lW%XoIL z-*I`)CPdq`3!Yo8I18*7luH4UyW4Ug0p6*@T$-Ft+4)r^3W7xaqGS;(1|^7x+dZ=8 zOsp2+o<>fs-FR;v+pNAyZE?ivnxN{sQ}he#vC1G7O_%{DYZa67Pr@)^0ky)oTdTKl zAuYMx+vyI1doH&-t>y_Ty_BkPDaUP zv|hEO3!}$XQIp*D9Y^ggbG9&wRlUo2_gq{JTzSxL>(TDc&tf>^`VEZE#AE$StX#p` z+s5WRJoqTxZKA_KL^pSRjLwYN2+^GL6djTE>fY)+GkM@mSCmw@Gp`LtNV2#oOb1Cz zw25BjUfW0{a=lu&OK#Y@*Itg4sR4QBgv_=}lncKi1_S?ZGue3#D}D=b{wJ*k~8^ITZ$ zk?oa+qo&$aHHXZ~0<96d>`B)Am&t;d>$c;RxbB|AvKu8|zKuF@ZNHm289LKI#?tZH zPYo@A+|x@LgVQw&SwS{8+5wMFO9;YfhqMk(zC7nBa$(dDOZLhuwVoLt)Gb?f_K=Ao zY1vFjT0RkbbU3DYn#Y4J=W_A>AZ>=7YYeJ=wAPR1mt-s%iEd+29(yzChZuy}BoYmH zdk^G%ELFXv2L4$kMyuQ1s>oMp6|6!p!4(t8n8B%3tLv#B^H$LD_S z=qtt%<0BdmZWWKN)Wy?=8sKUuRAnr*)0HMA4i%jt+D)V}yJ9Ki`ojnpInk}=yxBMk zWe%%_8KgMsQ94NNu7pe`zoeF2zO??s#>)R2kRHeVmWy&<>rtJ|Hup&qnJ0mfSl!RL zHh}Gl)PxK;oE@uWeyweUC2R6I4!%j%lPH6@eQIbQ&gp3(uA-r>m9Ewoiu=RQ6Nt6k497 zF+&-Ng*)Ykd^a4akBSR*{^M3^M@|wT9#Bcox`*`Z0%E!IYBS_-D>#)##{A?5%Gfvc z#F6(S9K__j8$lda`v=R6<@&r`?#7f%<95lNP7!&mWlGYL^!vTd?K!jNDK?3&;|_u6 z4xQ#MzS!_rBk+PN5M52r9j>~cuS+2mjWVg2QJ5g-8F%l%8-BA`b!GQ;=UY&8ax};^ zXj}E4;!wYEiQK$zi_a~mU4K@Am&&~gsnW}U7n_@j94v9wj0=iY*K&!~rpm1=S_pI_ zkW*?lZVzBZ>#5X=61&yf6O@NqWNWIAvm?YcCSHryv(uNlc+uA?3s)tUMNIR}up z>yliMF_-v$o)9A|>>+H;4TT;Mby2ZO%T7!(ht+KDX5!Tw<#fVn?_7D*!xep-_17uu zdMQO)@g5~JBcT!KfiT;}_%?ZqJrt?+#FG1}vZm%2&k2x#f4=B!buonV)@ucl*(bL@ zY6hg|d|TPh^S>vRJS^pMA-azv9&Q8?D{Z>L`Ka;Py^T6QU>{Y-R*0nx13 zE~YKcU3({j>~xewF($KG5(#3kxaMTG#?#Z1Uf3DLwi)H0-G(0w8l^iDSBa$&YlutV z1E}Im2z8nDi?<+k^f! zr3z?>0NX|8CsBo-5m1>Zxv$3fFg&bInwd;Wzb zx=WQfnkr=M=`4le+2#6yBLLv_*X0e*wET(1@}T^Sgt)?@+8`f2xnRsCFFCstUmhBr zRO@)gf6SJuz{3Z?Li?)|>#4#coPbUcN?u($e#Q_*8J_aFc5@0pY0oz6dsH88i^)B_oDLJ|+f~!^9P8?n z)5wjdmxqo>kFWFWld^;HPp(PTys3Anu&vSmj)OXGMU_S=#r{#GmH!v;K%ROJ`nS|dcjf)9(TYW{xSz`%CwInNyxeKxuphe4 z!qV3*Z*1UP?MnAkICtCLC(oEFB&`g&TIwmj8rOzlw7sOed!trG{S`_iCS@t6oi9d4 z5redCm%EjF=W#p*a}Yg`vuYQ#F@Q)9PHy>_J;8HhGz}@>_{@1Evs-(aZd`i>$5GD{ zD%;+!Rp}QmX-G4E6V#>5f`fBsbX1M)9K1R%AgI*8;Zxx1L>}mR;NwJdEkjBQMb>Vh zm?KEa!)`KRiqEu~&J_o>>;p0igfGI$_eS^h({lv`*E5PM359alu;#EkG!!0`YBY<& z?m!IA)H{5dp-iI=1(cdCb~re045odWXcz1KG&6EUJZSH5|Q) z`RW|32zoJY z(%r3tcNvf-$gTp#IcM7ibd3X{&;A_5wPw1WXV6yE>4FXe$fyo3n7ecsk3lC<52(vk zb3;>dYhwK2o#{V!KlmcQdHRd|=kv{T9K(GF-~Y4;P%;1O^L_cJ4RY@vZ8QUUu(y6J z3mB@mHlF?LCvqSCD3bf=N74LeKbHUO#|xkRL;-@YzmJ6`MX1_*YonzP-)L5XN`<$6 z0{LMBF8#2A<`-?n?_*}+J@=zc_?%O4 z_rnH92_H6ifrMS~Hyb=D2_J0~O}&qWr(vDFU(3++yT5`U((iT!k>uakq#&}=`m{{1yC zx-RWXybCyV(RW!2GTDs8(p!-R3*45X)c@UM`IY=0_}A$E)Lrj;=U@E0`}DWp{krzO zjR4r;U!LE&-1m0B^B>P|EPOt%GC}JmiX49wK`;ENbU n(eoQN-@m^M_y6br+L~4M>+y8&&%ZZo@K2(JuVk`eXkY&iErVM} literal 0 HcmV?d00001 diff --git a/test_reports/2025-07-11_18-57-44/summary.json b/test_reports/2025-07-11_18-57-44/summary.json new file mode 100644 index 0000000..e2389cd --- /dev/null +++ b/test_reports/2025-07-11_18-57-44/summary.json @@ -0,0 +1,4475 @@ +{ + "start_time": "2025-07-11T18:57:44.878856", + "end_time": "2025-07-11T18:57:45.058583", + "duration_seconds": "0.18", + "overall_summary": { + "total_endpoints_defined": 10, + "endpoints_tested": 10, + "endpoints_passed": 8, + "endpoints_failed": 2, + "endpoints_error": 0, + "endpoints_skipped": 0, + "endpoints_partial_success": 0, + "endpoint_success_rate": "80.00%", + "total_test_cases_applicable": 200, + "total_test_cases_executed": 200, + "test_cases_passed": 112, + "test_cases_failed": 50, + "test_cases_error": 0, + "test_cases_skipped_in_endpoint": 38, + "test_case_success_rate": "56.00%", + "total_stages_defined": 1, + "total_stages_executed": 2, + "stages_passed": 0, + "stages_failed": 2, + "stages_error": 0, + "stages_skipped": 0, + "stage_success_rate": "0.00%" + }, + "errors": [], + "endpoint_results": [ + { + "endpoint_id": "POST /api/dms/wb_ml/v1/lujing_test", + "endpoint_name": "Create lujing_test", + "overall_status": "通过", + "duration_seconds": 0.024396, + "start_time": "2025-07-11T18:57:44.892251", + "end_time": "2025-07-11T18:57:44.916647", + "executed_test_cases": [ + { + "test_case_id": "TC-STATUS-001", + "test_case_name": "基本状态码 200 检查", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "响应状态码为 200,符合预期 200。", + "duration_seconds": 0.0012566250079544261, + "timestamp": "2025-07-11T18:57:44.893669", + "validation_points": [ + { + "passed": true, + "message": "响应状态码为 200,符合预期 200。" + } + ] + }, + { + "test_case_id": "TC-HEADER-001", + "test_case_name": "必需请求头Schema验证", + "test_case_severity": "HIGH", + "status": "失败", + "message": "缺少必需的请求头 X-Tenant-ID;缺少必需的请求头 X-Data-Domain;缺少必需的请求头 Authorization", + "duration_seconds": 0.0011614999966695905, + "timestamp": "2025-07-11T18:57:44.894875", + "validation_points": [ + { + "header": "X-Tenant-ID", + "possible_names": [ + "X-Tenant-ID" + ], + "endpoint": "POST /api/dms/wb_ml/v1/lujing_test" + }, + { + "header": "X-Data-Domain", + "possible_names": [ + "X-Data-Domain" + ], + "endpoint": "POST /api/dms/wb_ml/v1/lujing_test" + }, + { + "header": "Authorization", + "possible_names": [ + "Authorization" + ], + "endpoint": "POST /api/dms/wb_ml/v1/lujing_test" + } + ] + }, + { + "test_case_id": "TC-SECURITY-002", + "test_case_name": "敏感字段加密检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "未在响应中找到需要检查的敏感字段。", + "duration_seconds": 0.0011051670007873327, + "timestamp": "2025-07-11T18:57:44.896014", + "validation_points": [ + { + "passed": true, + "message": "未在响应中找到需要检查的敏感字段。" + } + ] + }, + { + "test_case_id": "TC-LLM-COMPLIANCE-001", + "test_case_name": "LLM合规性综合检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "合规性标准列表为空,跳过LLM合规性检查。", + "duration_seconds": 0.0013287079927977175, + "timestamp": "2025-07-11T18:57:44.897380", + "validation_points": [ + { + "reason": "compliance_criteria.json is empty or contains an empty list." + } + ] + }, + { + "test_case_id": "TC-RESTful-001", + "test_case_name": "核心命名与结构规范检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。", + "duration_seconds": 0.0011127920006401837, + "timestamp": "2025-07-11T18:57:44.898534", + "validation_points": [ + { + "passed": true, + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。" + } + ] + }, + { + "test_case_id": "TC-DMS-PAGINATION-001", + "test_case_name": "分页参数检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount", + "duration_seconds": 0.0009296670032199472, + "timestamp": "2025-07-11T18:57:44.899497", + "validation_points": [ + { + "path": "/api/dms/wb_ml/v1/lujing_test", + "method": "POST", + "missing_params": [ + "pageNo", + "pageSize", + "isSearchCount" + ], + "found_params": { + "pageNo": false, + "pageSize": false, + "isSearchCount": false + } + } + ] + }, + { + "test_case_id": "TC-RESTful-004", + "test_case_name": "资源集合复数命名检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "路径 '/api/dms/wb_ml/v1/lujing_test' 的最后一个路径分段 'lujing_test' 可能不是复数形式,建议对资源集合使用复数命名。", + "duration_seconds": 0.000998208997771144, + "timestamp": "2025-07-11T18:57:44.900535", + "validation_points": [ + { + "path": "/api/dms/wb_ml/v1/lujing_test", + "segment": "lujing_test" + } + ] + }, + { + "test_case_id": "TC-RESTful-002", + "test_case_name": "资源路径名词检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "路径 '/api/dms/wb_ml/v1/lujing_test' 符合资源名词命名规范。", + "duration_seconds": 0.0009581670019542798, + "timestamp": "2025-07-11T18:57:44.901533", + "validation_points": [ + { + "passed": true, + "message": "路径 '/api/dms/wb_ml/v1/lujing_test' 符合资源名词命名规范。" + } + ] + }, + { + "test_case_id": "TC-DMS-CORE-SCHEMA-001", + "test_case_name": "DMS核心存储服务API响应格式检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}", + "duration_seconds": 0.0009748750017024577, + "timestamp": "2025-07-11T18:57:44.902554", + "validation_points": [ + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-001", + "test_case_name": "返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "针对 POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test (状态码 200) 的响应体 conforms to the JSON schema.", + "duration_seconds": 0.0020924580021528527, + "timestamp": "2025-07-11T18:57:44.904688", + "validation_points": [ + { + "passed": true, + "message": "针对 POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test (状态码 200) 的响应体 conforms to the JSON schema." + } + ] + }, + { + "test_case_id": "TC-RESTful-003", + "test_case_name": "时间字段ISO 8601格式检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。", + "duration_seconds": 0.0009897080017253757, + "timestamp": "2025-07-11T18:57:44.905715", + "validation_points": [ + { + "passed": true, + "message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。" + } + ] + }, + { + "test_case_id": "TC-DMS-URL-VERSION-001", + "test_case_name": "DMS API URL版本号检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "API路径 '/api/dms/wb_ml/v1/lujing_test' 正确以'/api/'开头;API路径 '/api/dms/wb_ml/v1/lujing_test' 包含版本标识: 'v1'", + "duration_seconds": 0.0011015420022886246, + "timestamp": "2025-07-11T18:57:44.906875", + "validation_points": [ + { + "full_path": "/api/dms/wb_ml/v1/lujing_test" + }, + { + "pattern_matched": "/v\\d+/", + "version_string": "v1", + "full_path": "/api/dms/wb_ml/v1/lujing_test" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-002", + "test_case_name": "灵活的返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "", + "duration_seconds": 0.0009206669928971678, + "timestamp": "2025-07-11T18:57:44.907837", + "validation_points": [] + }, + { + "test_case_id": "TC-SECURITY-001", + "test_case_name": "HTTPS 协议强制性检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "API通过HTTP (http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test) 响应了成功的状态码 200,这违反了HTTPS强制策略。", + "duration_seconds": 0.000993541005300358, + "timestamp": "2025-07-11T18:57:44.908870", + "validation_points": [ + { + "status_code": 200 + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-QUERY", + "test_case_name": "查询参数类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。", + "duration_seconds": 0.001166707996162586, + "timestamp": "2025-07-11T18:57:44.910075", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-BODY", + "test_case_name": "请求体字段类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "当请求体字段 'version' 类型不匹配时, 业务错误码应为 -1,但实际为 0。", + "duration_seconds": 0.0012812500062864274, + "timestamp": "2025-07-11T18:57:44.911390", + "validation_points": [ + { + "expected_code": -1, + "actual_code": 0, + "response_body": { + "code": 0, + "data": true, + "message": "创建成功" + } + } + ] + }, + { + "test_case_id": "TC-ERROR-4002", + "test_case_name": "数值参数越界检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "当 body 字段 'record_count' 值为 10001 (超出范围: min=0, max=10000) 时, 业务错误码应为 -1,但实际为 0。", + "duration_seconds": 0.0014582500007236376, + "timestamp": "2025-07-11T18:57:44.912889", + "validation_points": [ + { + "expected_code": -1, + "actual_code": 0, + "response_body": { + "code": 0, + "data": true, + "message": "创建成功" + } + } + ] + }, + { + "test_case_id": "TC-ERROR-4006", + "test_case_name": "非法枚举值检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:未找到具有明确枚举值限制的字段。", + "duration_seconds": 0.0014327079989016056, + "timestamp": "2025-07-11T18:57:44.914360", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:未找到具有明确枚举值限制的字段。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-BODY", + "test_case_name": "缺失必填请求体字段检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "当移除必填请求体字段 'data' 时, API应返回状态码 200,但实际为 400。", + "duration_seconds": 0.001076708998880349, + "timestamp": "2025-07-11T18:57:44.915478", + "validation_points": [ + { + "expected_status": 200, + "actual_status": 400 + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-QUERY", + "test_case_name": "缺失必填查询参数检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。", + "duration_seconds": 0.0010988750000251457, + "timestamp": "2025-07-11T18:57:44.916618", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。" + } + ] + } + ] + }, + { + "endpoint_id": "POST /api/dms/wb_ml/v1/lujing_test/1.0.0", + "endpoint_name": "List lujing_test", + "overall_status": "通过", + "duration_seconds": 0.018525, + "start_time": "2025-07-11T18:57:44.916723", + "end_time": "2025-07-11T18:57:44.935248", + "executed_test_cases": [ + { + "test_case_id": "TC-STATUS-001", + "test_case_name": "基本状态码 200 检查", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "响应状态码为 200,符合预期 200。", + "duration_seconds": 0.0009192500001518056, + "timestamp": "2025-07-11T18:57:44.917836", + "validation_points": [ + { + "passed": true, + "message": "响应状态码为 200,符合预期 200。" + } + ] + }, + { + "test_case_id": "TC-HEADER-001", + "test_case_name": "必需请求头Schema验证", + "test_case_severity": "HIGH", + "status": "失败", + "message": "缺少必需的请求头 X-Tenant-ID;缺少必需的请求头 X-Data-Domain;缺少必需的请求头 Authorization", + "duration_seconds": 0.001042749994667247, + "timestamp": "2025-07-11T18:57:44.918913", + "validation_points": [ + { + "header": "X-Tenant-ID", + "possible_names": [ + "X-Tenant-ID" + ], + "endpoint": "POST /api/dms/wb_ml/v1/lujing_test/1.0.0" + }, + { + "header": "X-Data-Domain", + "possible_names": [ + "X-Data-Domain" + ], + "endpoint": "POST /api/dms/wb_ml/v1/lujing_test/1.0.0" + }, + { + "header": "Authorization", + "possible_names": [ + "Authorization" + ], + "endpoint": "POST /api/dms/wb_ml/v1/lujing_test/1.0.0" + } + ] + }, + { + "test_case_id": "TC-SECURITY-002", + "test_case_name": "敏感字段加密检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "未在响应中找到需要检查的敏感字段。", + "duration_seconds": 0.0008760420023463666, + "timestamp": "2025-07-11T18:57:44.919821", + "validation_points": [ + { + "passed": true, + "message": "未在响应中找到需要检查的敏感字段。" + } + ] + }, + { + "test_case_id": "TC-LLM-COMPLIANCE-001", + "test_case_name": "LLM合规性综合检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "合规性标准列表为空,跳过LLM合规性检查。", + "duration_seconds": 0.00094449998869095, + "timestamp": "2025-07-11T18:57:44.920796", + "validation_points": [ + { + "reason": "compliance_criteria.json is empty or contains an empty list." + } + ] + }, + { + "test_case_id": "TC-RESTful-001", + "test_case_name": "核心命名与结构规范检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。;响应中包含一个主列表,但其键名 'data' 不是 'list'。", + "duration_seconds": 0.0009832920040935278, + "timestamp": "2025-07-11T18:57:44.921827", + "validation_points": [ + { + "passed": true, + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。" + }, + { + "keys": [ + "code", + "data", + "message" + ] + } + ] + }, + { + "test_case_id": "TC-DMS-PAGINATION-001", + "test_case_name": "分页参数检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount", + "duration_seconds": 0.0008101249986793846, + "timestamp": "2025-07-11T18:57:44.922673", + "validation_points": [ + { + "path": "/api/dms/wb_ml/v1/lujing_test/1.0.0", + "method": "POST", + "missing_params": [ + "pageNo", + "pageSize", + "isSearchCount" + ], + "found_params": { + "pageNo": false, + "pageSize": false, + "isSearchCount": false + } + } + ] + }, + { + "test_case_id": "TC-RESTful-004", + "test_case_name": "资源集合复数命名检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "路径 '/api/dms/wb_ml/v1/lujing_test/1.0.0' 的最后一个路径分段 '1.0.0' 可能不是复数形式,建议对资源集合使用复数命名。", + "duration_seconds": 0.0008099169936031103, + "timestamp": "2025-07-11T18:57:44.923523", + "validation_points": [ + { + "path": "/api/dms/wb_ml/v1/lujing_test/1.0.0", + "segment": "1.0.0" + } + ] + }, + { + "test_case_id": "TC-RESTful-002", + "test_case_name": "资源路径名词检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "路径 '/api/dms/wb_ml/v1/lujing_test/1.0.0' 符合资源名词命名规范。", + "duration_seconds": 0.0008066659938776866, + "timestamp": "2025-07-11T18:57:44.924369", + "validation_points": [ + { + "passed": true, + "message": "路径 '/api/dms/wb_ml/v1/lujing_test/1.0.0' 符合资源名词命名规范。" + } + ] + }, + { + "test_case_id": "TC-DMS-CORE-SCHEMA-001", + "test_case_name": "DMS核心存储服务API响应格式检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}", + "duration_seconds": 0.0007651250052731484, + "timestamp": "2025-07-11T18:57:44.925175", + "validation_points": [ + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-001", + "test_case_name": "返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "针对 POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 (状态码 200) 的响应体 conforms to the JSON schema.", + "duration_seconds": 0.0009727500000735745, + "timestamp": "2025-07-11T18:57:44.926186", + "validation_points": [ + { + "passed": true, + "message": "针对 POST http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0 (状态码 200) 的响应体 conforms to the JSON schema." + } + ] + }, + { + "test_case_id": "TC-RESTful-003", + "test_case_name": "时间字段ISO 8601格式检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "时间字段 'data[].update_date' (format: date-time) 缺少建议的 `pattern` (^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}([+-]\\d{2}:\\d{2}|Z)$) 来强制执行ISO 8601格式。", + "duration_seconds": 0.0009119160094996914, + "timestamp": "2025-07-11T18:57:44.927137", + "validation_points": [ + { + "field": "data[].update_date" + } + ] + }, + { + "test_case_id": "TC-DMS-URL-VERSION-001", + "test_case_name": "DMS API URL版本号检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "API路径 '/api/dms/wb_ml/v1/lujing_test/1.0.0' 正确以'/api/'开头;API路径 '/api/dms/wb_ml/v1/lujing_test/1.0.0' 包含版本标识: 'v1'", + "duration_seconds": 0.000884416003827937, + "timestamp": "2025-07-11T18:57:44.928063", + "validation_points": [ + { + "full_path": "/api/dms/wb_ml/v1/lujing_test/1.0.0" + }, + { + "pattern_matched": "/v\\d+/", + "version_string": "v1", + "full_path": "/api/dms/wb_ml/v1/lujing_test/1.0.0" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-002", + "test_case_name": "灵活的返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "", + "duration_seconds": 0.0008037920051719993, + "timestamp": "2025-07-11T18:57:44.928907", + "validation_points": [] + }, + { + "test_case_id": "TC-SECURITY-001", + "test_case_name": "HTTPS 协议强制性检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "API通过HTTP (http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0) 响应了成功的状态码 200,这违反了HTTPS强制策略。", + "duration_seconds": 0.000828709002234973, + "timestamp": "2025-07-11T18:57:44.929778", + "validation_points": [ + { + "status_code": 200 + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-QUERY", + "test_case_name": "查询参数类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。", + "duration_seconds": 0.0009267499990528449, + "timestamp": "2025-07-11T18:57:44.930738", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-BODY", + "test_case_name": "请求体字段类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:在请求体中未找到合适的字段来测试类型不匹配。", + "duration_seconds": 0.00095795800734777, + "timestamp": "2025-07-11T18:57:44.931725", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在请求体中未找到合适的字段来测试类型不匹配。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4002", + "test_case_name": "数值参数越界检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:未找到具有明确范围限制的数值字段。", + "duration_seconds": 0.0009083750046556816, + "timestamp": "2025-07-11T18:57:44.932666", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:未找到具有明确范围限制的数值字段。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4006", + "test_case_name": "非法枚举值检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:未找到具有明确枚举值限制的字段。", + "duration_seconds": 0.0008869170123944059, + "timestamp": "2025-07-11T18:57:44.933585", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:未找到具有明确枚举值限制的字段。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-BODY", + "test_case_name": "缺失必填请求体字段检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "跳过测试:在API规范中未找到合适的必填请求体字段用于移除测试。", + "duration_seconds": 0.0008115410018945113, + "timestamp": "2025-07-11T18:57:44.934433", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在API规范中未找到合适的必填请求体字段用于移除测试。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-QUERY", + "test_case_name": "缺失必填查询参数检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。", + "duration_seconds": 0.0007599999953527004, + "timestamp": "2025-07-11T18:57:44.935224", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。" + } + ] + } + ] + }, + { + "endpoint_id": "GET /api/dms/wb_ml/v1/lujing_test/1.0.0/{id}", + "endpoint_name": "Read lujing_test", + "overall_status": "失败", + "duration_seconds": 0.001521, + "start_time": "2025-07-11T18:57:44.935306", + "end_time": "2025-07-11T18:57:44.936827", + "executed_test_cases": [ + { + "test_case_id": "TC-STATUS-001", + "test_case_name": "基本状态码 200 检查", + "test_case_severity": "CRITICAL", + "status": "失败", + "message": "期望状态码 200,但收到 404。", + "duration_seconds": 0.0008493750065099448, + "timestamp": "2025-07-11T18:57:44.936315", + "validation_points": [ + { + "expected_status": 200, + "actual_status": 404, + "request_url": "http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test/1.0.0/param_id", + "response_body_sample": "{\"code\": 404, \"message\": \"资源 'lujing_test' with ID 'param_id' 未找到.\"}" + } + ] + }, + { + "test_case_id": "TC-HEADER-001", + "test_case_name": "必需请求头Schema验证", + "test_case_severity": "HIGH", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 9.333991329185665e-06, + "timestamp": "2025-07-11T18:57:44.936366", + "validation_points": [] + }, + { + "test_case_id": "TC-SECURITY-002", + "test_case_name": "敏感字段加密检查", + "test_case_severity": "HIGH", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.957991329021752e-06, + "timestamp": "2025-07-11T18:57:44.936392", + "validation_points": [] + }, + { + "test_case_id": "TC-LLM-COMPLIANCE-001", + "test_case_name": "LLM合规性综合检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 9.16598946787417e-06, + "timestamp": "2025-07-11T18:57:44.936419", + "validation_points": [] + }, + { + "test_case_id": "TC-RESTful-001", + "test_case_name": "核心命名与结构规范检查", + "test_case_severity": "HIGH", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 8.25000461190939e-06, + "timestamp": "2025-07-11T18:57:44.936448", + "validation_points": [] + }, + { + "test_case_id": "TC-DMS-PAGINATION-001", + "test_case_name": "分页参数检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 8.12498910818249e-06, + "timestamp": "2025-07-11T18:57:44.936475", + "validation_points": [] + }, + { + "test_case_id": "TC-RESTful-004", + "test_case_name": "资源集合复数命名检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.916998583823442e-06, + "timestamp": "2025-07-11T18:57:44.936501", + "validation_points": [] + }, + { + "test_case_id": "TC-RESTful-002", + "test_case_name": "资源路径名词检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 8.458999218419194e-06, + "timestamp": "2025-07-11T18:57:44.936530", + "validation_points": [] + }, + { + "test_case_id": "TC-DMS-CORE-SCHEMA-001", + "test_case_name": "DMS核心存储服务API响应格式检查", + "test_case_severity": "HIGH", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.1250105975195765e-06, + "timestamp": "2025-07-11T18:57:44.936553", + "validation_points": [] + }, + { + "test_case_id": "TC-CORE-FUNC-001", + "test_case_name": "返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.0829992182552814e-06, + "timestamp": "2025-07-11T18:57:44.936576", + "validation_points": [] + }, + { + "test_case_id": "TC-RESTful-003", + "test_case_name": "时间字段ISO 8601格式检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.1250105975195765e-06, + "timestamp": "2025-07-11T18:57:44.936599", + "validation_points": [] + }, + { + "test_case_id": "TC-DMS-URL-VERSION-001", + "test_case_name": "DMS API URL版本号检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 6.95799826644361e-06, + "timestamp": "2025-07-11T18:57:44.936622", + "validation_points": [] + }, + { + "test_case_id": "TC-CORE-FUNC-002", + "test_case_name": "灵活的返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.041002390906215e-06, + "timestamp": "2025-07-11T18:57:44.936644", + "validation_points": [] + }, + { + "test_case_id": "TC-SECURITY-001", + "test_case_name": "HTTPS 协议强制性检查", + "test_case_severity": "HIGH", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 6.95799826644361e-06, + "timestamp": "2025-07-11T18:57:44.936667", + "validation_points": [] + }, + { + "test_case_id": "TC-ERROR-4001-QUERY", + "test_case_name": "查询参数类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.084003300406039e-06, + "timestamp": "2025-07-11T18:57:44.936691", + "validation_points": [] + }, + { + "test_case_id": "TC-ERROR-4001-BODY", + "test_case_name": "请求体字段类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 6.95799826644361e-06, + "timestamp": "2025-07-11T18:57:44.936713", + "validation_points": [] + }, + { + "test_case_id": "TC-ERROR-4002", + "test_case_name": "数值参数越界检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.084003300406039e-06, + "timestamp": "2025-07-11T18:57:44.936736", + "validation_points": [] + }, + { + "test_case_id": "TC-ERROR-4006", + "test_case_name": "非法枚举值检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.50001345295459e-06, + "timestamp": "2025-07-11T18:57:44.936760", + "validation_points": [] + }, + { + "test_case_id": "TC-ERROR-4003-BODY", + "test_case_name": "缺失必填请求体字段检查", + "test_case_severity": "HIGH", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.374997949227691e-06, + "timestamp": "2025-07-11T18:57:44.936784", + "validation_points": [] + }, + { + "test_case_id": "TC-ERROR-4003-QUERY", + "test_case_name": "缺失必填查询参数检查", + "test_case_severity": "HIGH", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.20900425221771e-06, + "timestamp": "2025-07-11T18:57:44.936807", + "validation_points": [] + } + ] + }, + { + "endpoint_id": "PUT /api/dms/wb_ml/v1/lujing_test", + "endpoint_name": "Update lujing_test", + "overall_status": "通过", + "duration_seconds": 0.020745, + "start_time": "2025-07-11T18:57:44.936892", + "end_time": "2025-07-11T18:57:44.957637", + "executed_test_cases": [ + { + "test_case_id": "TC-STATUS-001", + "test_case_name": "基本状态码 200 检查", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "响应状态码为 200,符合预期 200。", + "duration_seconds": 0.001000333999400027, + "timestamp": "2025-07-11T18:57:44.938050", + "validation_points": [ + { + "passed": true, + "message": "响应状态码为 200,符合预期 200。" + } + ] + }, + { + "test_case_id": "TC-HEADER-001", + "test_case_name": "必需请求头Schema验证", + "test_case_severity": "HIGH", + "status": "失败", + "message": "缺少必需的请求头 X-Tenant-ID;缺少必需的请求头 X-Data-Domain;缺少必需的请求头 Authorization", + "duration_seconds": 0.0009679579961812124, + "timestamp": "2025-07-11T18:57:44.939049", + "validation_points": [ + { + "header": "X-Tenant-ID", + "possible_names": [ + "X-Tenant-ID" + ], + "endpoint": "PUT /api/dms/wb_ml/v1/lujing_test" + }, + { + "header": "X-Data-Domain", + "possible_names": [ + "X-Data-Domain" + ], + "endpoint": "PUT /api/dms/wb_ml/v1/lujing_test" + }, + { + "header": "Authorization", + "possible_names": [ + "Authorization" + ], + "endpoint": "PUT /api/dms/wb_ml/v1/lujing_test" + } + ] + }, + { + "test_case_id": "TC-SECURITY-002", + "test_case_name": "敏感字段加密检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "未在响应中找到需要检查的敏感字段。", + "duration_seconds": 0.0009808750037336722, + "timestamp": "2025-07-11T18:57:44.940059", + "validation_points": [ + { + "passed": true, + "message": "未在响应中找到需要检查的敏感字段。" + } + ] + }, + { + "test_case_id": "TC-LLM-COMPLIANCE-001", + "test_case_name": "LLM合规性综合检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "合规性标准列表为空,跳过LLM合规性检查。", + "duration_seconds": 0.000977624993538484, + "timestamp": "2025-07-11T18:57:44.941066", + "validation_points": [ + { + "reason": "compliance_criteria.json is empty or contains an empty list." + } + ] + }, + { + "test_case_id": "TC-RESTful-001", + "test_case_name": "核心命名与结构规范检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。", + "duration_seconds": 0.000912499992409721, + "timestamp": "2025-07-11T18:57:44.942016", + "validation_points": [ + { + "passed": true, + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。" + } + ] + }, + { + "test_case_id": "TC-DMS-PAGINATION-001", + "test_case_name": "分页参数检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount", + "duration_seconds": 0.0009370420011691749, + "timestamp": "2025-07-11T18:57:44.942982", + "validation_points": [ + { + "path": "/api/dms/wb_ml/v1/lujing_test", + "method": "PUT", + "missing_params": [ + "pageNo", + "pageSize", + "isSearchCount" + ], + "found_params": { + "pageNo": false, + "pageSize": false, + "isSearchCount": false + } + } + ] + }, + { + "test_case_id": "TC-RESTful-004", + "test_case_name": "资源集合复数命名检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过检查:PUT 方法,不适用于资源集合复数检查。", + "duration_seconds": 0.0009986670047510415, + "timestamp": "2025-07-11T18:57:44.944026", + "validation_points": [ + { + "passed": true, + "message": "跳过检查:PUT 方法,不适用于资源集合复数检查。" + } + ] + }, + { + "test_case_id": "TC-RESTful-002", + "test_case_name": "资源路径名词检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "路径 '/api/dms/wb_ml/v1/lujing_test' 符合资源名词命名规范。", + "duration_seconds": 0.0010697079997044057, + "timestamp": "2025-07-11T18:57:44.945135", + "validation_points": [ + { + "passed": true, + "message": "路径 '/api/dms/wb_ml/v1/lujing_test' 符合资源名词命名规范。" + } + ] + }, + { + "test_case_id": "TC-DMS-CORE-SCHEMA-001", + "test_case_name": "DMS核心存储服务API响应格式检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}", + "duration_seconds": 0.0009021669975481927, + "timestamp": "2025-07-11T18:57:44.946076", + "validation_points": [ + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-001", + "test_case_name": "返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "针对 PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test (状态码 200) 的响应体 conforms to the JSON schema.", + "duration_seconds": 0.0009648749983171001, + "timestamp": "2025-07-11T18:57:44.947084", + "validation_points": [ + { + "passed": true, + "message": "针对 PUT http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test (状态码 200) 的响应体 conforms to the JSON schema." + } + ] + }, + { + "test_case_id": "TC-RESTful-003", + "test_case_name": "时间字段ISO 8601格式检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。", + "duration_seconds": 0.0010605830029817298, + "timestamp": "2025-07-11T18:57:44.948175", + "validation_points": [ + { + "passed": true, + "message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。" + } + ] + }, + { + "test_case_id": "TC-DMS-URL-VERSION-001", + "test_case_name": "DMS API URL版本号检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "API路径 '/api/dms/wb_ml/v1/lujing_test' 正确以'/api/'开头;API路径 '/api/dms/wb_ml/v1/lujing_test' 包含版本标识: 'v1'", + "duration_seconds": 0.0010904579976340756, + "timestamp": "2025-07-11T18:57:44.949313", + "validation_points": [ + { + "full_path": "/api/dms/wb_ml/v1/lujing_test" + }, + { + "pattern_matched": "/v\\d+/", + "version_string": "v1", + "full_path": "/api/dms/wb_ml/v1/lujing_test" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-002", + "test_case_name": "灵活的返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "", + "duration_seconds": 0.0010073750017909333, + "timestamp": "2025-07-11T18:57:44.950364", + "validation_points": [] + }, + { + "test_case_id": "TC-SECURITY-001", + "test_case_name": "HTTPS 协议强制性检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "API通过HTTP (http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test) 响应了成功的状态码 200,这违反了HTTPS强制策略。", + "duration_seconds": 0.0009176250023301691, + "timestamp": "2025-07-11T18:57:44.951321", + "validation_points": [ + { + "status_code": 200 + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-QUERY", + "test_case_name": "查询参数类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。", + "duration_seconds": 0.0010636670049279928, + "timestamp": "2025-07-11T18:57:44.952417", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-BODY", + "test_case_name": "请求体字段类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "当请求体字段 'version' 类型不匹配时, 业务错误码应为 -1,但实际为 0。", + "duration_seconds": 0.0010901250061579049, + "timestamp": "2025-07-11T18:57:44.953540", + "validation_points": [ + { + "expected_code": -1, + "actual_code": 0, + "response_body": { + "code": 0, + "data": true, + "message": "创建成功" + } + } + ] + }, + { + "test_case_id": "TC-ERROR-4002", + "test_case_name": "数值参数越界检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "当 body 字段 'record_count' 值为 10001 (超出范围: min=0, max=10000) 时, 业务错误码应为 -1,但实际为 0。", + "duration_seconds": 0.0010466249950695783, + "timestamp": "2025-07-11T18:57:44.954619", + "validation_points": [ + { + "expected_code": -1, + "actual_code": 0, + "response_body": { + "code": 0, + "data": true, + "message": "创建成功" + } + } + ] + }, + { + "test_case_id": "TC-ERROR-4006", + "test_case_name": "非法枚举值检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:未找到具有明确枚举值限制的字段。", + "duration_seconds": 0.0009400419949088246, + "timestamp": "2025-07-11T18:57:44.955592", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:未找到具有明确枚举值限制的字段。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-BODY", + "test_case_name": "缺失必填请求体字段检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "当移除必填请求体字段 'data' 时, API应返回状态码 200,但实际为 400。", + "duration_seconds": 0.0009332500048913062, + "timestamp": "2025-07-11T18:57:44.956563", + "validation_points": [ + { + "expected_status": 200, + "actual_status": 400 + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-QUERY", + "test_case_name": "缺失必填查询参数检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。", + "duration_seconds": 0.0010077920014737174, + "timestamp": "2025-07-11T18:57:44.957613", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。" + } + ] + } + ] + }, + { + "endpoint_id": "DELETE /api/dms/wb_ml/v1/lujing_test", + "endpoint_name": "Delete lujing_test", + "overall_status": "通过", + "duration_seconds": 0.019397, + "start_time": "2025-07-11T18:57:44.957692", + "end_time": "2025-07-11T18:57:44.977089", + "executed_test_cases": [ + { + "test_case_id": "TC-STATUS-001", + "test_case_name": "基本状态码 200 检查", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "响应状态码为 200,符合预期 200。", + "duration_seconds": 0.0008742919890210032, + "timestamp": "2025-07-11T18:57:44.958732", + "validation_points": [ + { + "passed": true, + "message": "响应状态码为 200,符合预期 200。" + } + ] + }, + { + "test_case_id": "TC-HEADER-001", + "test_case_name": "必需请求头Schema验证", + "test_case_severity": "HIGH", + "status": "失败", + "message": "缺少必需的请求头 X-Tenant-ID;缺少必需的请求头 X-Data-Domain;缺少必需的请求头 Authorization", + "duration_seconds": 0.000913208001293242, + "timestamp": "2025-07-11T18:57:44.959677", + "validation_points": [ + { + "header": "X-Tenant-ID", + "possible_names": [ + "X-Tenant-ID" + ], + "endpoint": "DELETE /api/dms/wb_ml/v1/lujing_test" + }, + { + "header": "X-Data-Domain", + "possible_names": [ + "X-Data-Domain" + ], + "endpoint": "DELETE /api/dms/wb_ml/v1/lujing_test" + }, + { + "header": "Authorization", + "possible_names": [ + "Authorization" + ], + "endpoint": "DELETE /api/dms/wb_ml/v1/lujing_test" + } + ] + }, + { + "test_case_id": "TC-SECURITY-002", + "test_case_name": "敏感字段加密检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "未在响应中找到需要检查的敏感字段。", + "duration_seconds": 0.0008582910086261109, + "timestamp": "2025-07-11T18:57:44.960563", + "validation_points": [ + { + "passed": true, + "message": "未在响应中找到需要检查的敏感字段。" + } + ] + }, + { + "test_case_id": "TC-LLM-COMPLIANCE-001", + "test_case_name": "LLM合规性综合检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "合规性标准列表为空,跳过LLM合规性检查。", + "duration_seconds": 0.0009342910052509978, + "timestamp": "2025-07-11T18:57:44.961531", + "validation_points": [ + { + "reason": "compliance_criteria.json is empty or contains an empty list." + } + ] + }, + { + "test_case_id": "TC-RESTful-001", + "test_case_name": "核心命名与结构规范检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。", + "duration_seconds": 0.0008924590074457228, + "timestamp": "2025-07-11T18:57:44.962461", + "validation_points": [ + { + "passed": true, + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。" + } + ] + }, + { + "test_case_id": "TC-DMS-PAGINATION-001", + "test_case_name": "分页参数检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount", + "duration_seconds": 0.000843875008285977, + "timestamp": "2025-07-11T18:57:44.963333", + "validation_points": [ + { + "path": "/api/dms/wb_ml/v1/lujing_test", + "method": "DELETE", + "missing_params": [ + "pageNo", + "pageSize", + "isSearchCount" + ], + "found_params": { + "pageNo": false, + "pageSize": false, + "isSearchCount": false + } + } + ] + }, + { + "test_case_id": "TC-RESTful-004", + "test_case_name": "资源集合复数命名检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过检查:DELETE 方法,不适用于资源集合复数检查。", + "duration_seconds": 0.000860916989040561, + "timestamp": "2025-07-11T18:57:44.964232", + "validation_points": [ + { + "passed": true, + "message": "跳过检查:DELETE 方法,不适用于资源集合复数检查。" + } + ] + }, + { + "test_case_id": "TC-RESTful-002", + "test_case_name": "资源路径名词检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "路径 '/api/dms/wb_ml/v1/lujing_test' 符合资源名词命名规范。", + "duration_seconds": 0.0010030830017058179, + "timestamp": "2025-07-11T18:57:44.965278", + "validation_points": [ + { + "passed": true, + "message": "路径 '/api/dms/wb_ml/v1/lujing_test' 符合资源名词命名规范。" + } + ] + }, + { + "test_case_id": "TC-DMS-CORE-SCHEMA-001", + "test_case_name": "DMS核心存储服务API响应格式检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}", + "duration_seconds": 0.0009108340018428862, + "timestamp": "2025-07-11T18:57:44.966235", + "validation_points": [ + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-001", + "test_case_name": "返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "针对 DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test (状态码 200) 的响应体 conforms to the JSON schema.", + "duration_seconds": 0.0010819159942911938, + "timestamp": "2025-07-11T18:57:44.967362", + "validation_points": [ + { + "passed": true, + "message": "针对 DELETE http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test (状态码 200) 的响应体 conforms to the JSON schema." + } + ] + }, + { + "test_case_id": "TC-RESTful-003", + "test_case_name": "时间字段ISO 8601格式检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。", + "duration_seconds": 0.0010299159912392497, + "timestamp": "2025-07-11T18:57:44.968428", + "validation_points": [ + { + "passed": true, + "message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。" + } + ] + }, + { + "test_case_id": "TC-DMS-URL-VERSION-001", + "test_case_name": "DMS API URL版本号检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "API路径 '/api/dms/wb_ml/v1/lujing_test' 正确以'/api/'开头;API路径 '/api/dms/wb_ml/v1/lujing_test' 包含版本标识: 'v1'", + "duration_seconds": 0.0008674999990034848, + "timestamp": "2025-07-11T18:57:44.969341", + "validation_points": [ + { + "full_path": "/api/dms/wb_ml/v1/lujing_test" + }, + { + "pattern_matched": "/v\\d+/", + "version_string": "v1", + "full_path": "/api/dms/wb_ml/v1/lujing_test" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-002", + "test_case_name": "灵活的返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "", + "duration_seconds": 0.0009243749955203384, + "timestamp": "2025-07-11T18:57:44.970302", + "validation_points": [] + }, + { + "test_case_id": "TC-SECURITY-001", + "test_case_name": "HTTPS 协议强制性检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "API通过HTTP (http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test) 响应了成功的状态码 200,这违反了HTTPS强制策略。", + "duration_seconds": 0.0008695839933352545, + "timestamp": "2025-07-11T18:57:44.971208", + "validation_points": [ + { + "status_code": 200 + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-QUERY", + "test_case_name": "查询参数类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。", + "duration_seconds": 0.000946375002968125, + "timestamp": "2025-07-11T18:57:44.972186", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-BODY", + "test_case_name": "请求体字段类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "当请求体字段 'version' 类型不匹配时, 业务错误码应为 -1,但实际为 404。", + "duration_seconds": 0.0009848750050878152, + "timestamp": "2025-07-11T18:57:44.973208", + "validation_points": [ + { + "expected_code": -1, + "actual_code": 404, + "response_body": { + "code": 404, + "data": false, + "message": "未找到要删除的资源" + } + } + ] + }, + { + "test_case_id": "TC-ERROR-4002", + "test_case_name": "数值参数越界检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:未找到具有明确范围限制的数值字段。", + "duration_seconds": 0.0009810829942580312, + "timestamp": "2025-07-11T18:57:44.974222", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:未找到具有明确范围限制的数值字段。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4006", + "test_case_name": "非法枚举值检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:未找到具有明确枚举值限制的字段。", + "duration_seconds": 0.0009192080033244565, + "timestamp": "2025-07-11T18:57:44.975181", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:未找到具有明确枚举值限制的字段。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-BODY", + "test_case_name": "缺失必填请求体字段检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "当移除必填请求体字段 'data' 时, API应返回状态码 200,但实际为 400。", + "duration_seconds": 0.0009034169925143942, + "timestamp": "2025-07-11T18:57:44.976130", + "validation_points": [ + { + "expected_status": 200, + "actual_status": 400 + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-QUERY", + "test_case_name": "缺失必填查询参数检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。", + "duration_seconds": 0.0008984579908428714, + "timestamp": "2025-07-11T18:57:44.977066", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。" + } + ] + } + ] + }, + { + "endpoint_id": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report", + "endpoint_name": "Create wb_dr_pro_daily_report", + "overall_status": "通过", + "duration_seconds": 0.020481, + "start_time": "2025-07-11T18:57:44.977146", + "end_time": "2025-07-11T18:57:44.997627", + "executed_test_cases": [ + { + "test_case_id": "TC-STATUS-001", + "test_case_name": "基本状态码 200 检查", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "响应状态码为 200,符合预期 200。", + "duration_seconds": 0.001053999993018806, + "timestamp": "2025-07-11T18:57:44.978369", + "validation_points": [ + { + "passed": true, + "message": "响应状态码为 200,符合预期 200。" + } + ] + }, + { + "test_case_id": "TC-HEADER-001", + "test_case_name": "必需请求头Schema验证", + "test_case_severity": "HIGH", + "status": "失败", + "message": "缺少必需的请求头 X-Tenant-ID;缺少必需的请求头 X-Data-Domain;缺少必需的请求头 Authorization", + "duration_seconds": 0.0010827079968294129, + "timestamp": "2025-07-11T18:57:44.979493", + "validation_points": [ + { + "header": "X-Tenant-ID", + "possible_names": [ + "X-Tenant-ID" + ], + "endpoint": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report" + }, + { + "header": "X-Data-Domain", + "possible_names": [ + "X-Data-Domain" + ], + "endpoint": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report" + }, + { + "header": "Authorization", + "possible_names": [ + "Authorization" + ], + "endpoint": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report" + } + ] + }, + { + "test_case_id": "TC-SECURITY-002", + "test_case_name": "敏感字段加密检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "未在响应中找到需要检查的敏感字段。", + "duration_seconds": 0.000985834005405195, + "timestamp": "2025-07-11T18:57:44.980508", + "validation_points": [ + { + "passed": true, + "message": "未在响应中找到需要检查的敏感字段。" + } + ] + }, + { + "test_case_id": "TC-LLM-COMPLIANCE-001", + "test_case_name": "LLM合规性综合检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "合规性标准列表为空,跳过LLM合规性检查。", + "duration_seconds": 0.0010168750013690442, + "timestamp": "2025-07-11T18:57:44.981553", + "validation_points": [ + { + "reason": "compliance_criteria.json is empty or contains an empty list." + } + ] + }, + { + "test_case_id": "TC-RESTful-001", + "test_case_name": "核心命名与结构规范检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。", + "duration_seconds": 0.0009342919947812334, + "timestamp": "2025-07-11T18:57:44.982525", + "validation_points": [ + { + "passed": true, + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。" + } + ] + }, + { + "test_case_id": "TC-DMS-PAGINATION-001", + "test_case_name": "分页参数检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount", + "duration_seconds": 0.0009629999985918403, + "timestamp": "2025-07-11T18:57:44.983517", + "validation_points": [ + { + "path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report", + "method": "POST", + "missing_params": [ + "pageNo", + "pageSize", + "isSearchCount" + ], + "found_params": { + "pageNo": false, + "pageSize": false, + "isSearchCount": false + } + } + ] + }, + { + "test_case_id": "TC-RESTful-004", + "test_case_name": "资源集合复数命名检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 的最后一个路径分段 'wb_dr_pro_daily_report' 可能不是复数形式,建议对资源集合使用复数命名。", + "duration_seconds": 0.0009224999957950786, + "timestamp": "2025-07-11T18:57:44.984478", + "validation_points": [ + { + "path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report", + "segment": "wb_dr_pro_daily_report" + } + ] + }, + { + "test_case_id": "TC-RESTful-002", + "test_case_name": "资源路径名词检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 符合资源名词命名规范。", + "duration_seconds": 0.0010158329969272017, + "timestamp": "2025-07-11T18:57:44.985540", + "validation_points": [ + { + "passed": true, + "message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 符合资源名词命名规范。" + } + ] + }, + { + "test_case_id": "TC-DMS-CORE-SCHEMA-001", + "test_case_name": "DMS核心存储服务API响应格式检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}", + "duration_seconds": 0.0009250000002793968, + "timestamp": "2025-07-11T18:57:44.986504", + "validation_points": [ + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-001", + "test_case_name": "返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "针对 POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report (状态码 200) 的响应体 conforms to the JSON schema.", + "duration_seconds": 0.0009760419925441965, + "timestamp": "2025-07-11T18:57:44.987518", + "validation_points": [ + { + "passed": true, + "message": "针对 POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report (状态码 200) 的响应体 conforms to the JSON schema." + } + ] + }, + { + "test_case_id": "TC-RESTful-003", + "test_case_name": "时间字段ISO 8601格式检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。", + "duration_seconds": 0.0008733330032555386, + "timestamp": "2025-07-11T18:57:44.988423", + "validation_points": [ + { + "passed": true, + "message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。" + } + ] + }, + { + "test_case_id": "TC-DMS-URL-VERSION-001", + "test_case_name": "DMS API URL版本号检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 正确以'/api/'开头;API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 包含版本标识: 'v1'", + "duration_seconds": 0.0008797080081421882, + "timestamp": "2025-07-11T18:57:44.989341", + "validation_points": [ + { + "full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report" + }, + { + "pattern_matched": "/v\\d+/", + "version_string": "v1", + "full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-002", + "test_case_name": "灵活的返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "", + "duration_seconds": 0.0009472499950788915, + "timestamp": "2025-07-11T18:57:44.990332", + "validation_points": [] + }, + { + "test_case_id": "TC-SECURITY-001", + "test_case_name": "HTTPS 协议强制性检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "API通过HTTP (http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report) 响应了成功的状态码 200,这违反了HTTPS强制策略。", + "duration_seconds": 0.0010222080018138513, + "timestamp": "2025-07-11T18:57:44.991393", + "validation_points": [ + { + "status_code": 200 + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-QUERY", + "test_case_name": "查询参数类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。", + "duration_seconds": 0.0010270000057062134, + "timestamp": "2025-07-11T18:57:44.992453", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-BODY", + "test_case_name": "请求体字段类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "当请求体字段 'version' 类型不匹配时, 业务错误码应为 -1,但实际为 0。", + "duration_seconds": 0.0010416669974802062, + "timestamp": "2025-07-11T18:57:44.993524", + "validation_points": [ + { + "expected_code": -1, + "actual_code": 0, + "response_body": { + "code": 0, + "data": true, + "message": "创建成功" + } + } + ] + }, + { + "test_case_id": "TC-ERROR-4002", + "test_case_name": "数值参数越界检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "当 body 字段 'record_count' 值为 10001 (超出范围: min=0, max=10000) 时, 业务错误码应为 -1,但实际为 0。", + "duration_seconds": 0.0010707499895943329, + "timestamp": "2025-07-11T18:57:44.994632", + "validation_points": [ + { + "expected_code": -1, + "actual_code": 0, + "response_body": { + "code": 0, + "data": true, + "message": "创建成功" + } + } + ] + }, + { + "test_case_id": "TC-ERROR-4006", + "test_case_name": "非法枚举值检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:未找到具有明确枚举值限制的字段。", + "duration_seconds": 0.0009773749916348606, + "timestamp": "2025-07-11T18:57:44.995641", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:未找到具有明确枚举值限制的字段。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-BODY", + "test_case_name": "缺失必填请求体字段检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "当移除必填请求体字段 'data' 时, API应返回状态码 200,但实际为 400。", + "duration_seconds": 0.0009569579997332767, + "timestamp": "2025-07-11T18:57:44.996642", + "validation_points": [ + { + "expected_status": 200, + "actual_status": 400 + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-QUERY", + "test_case_name": "缺失必填查询参数检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。", + "duration_seconds": 0.000916457996936515, + "timestamp": "2025-07-11T18:57:44.997604", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。" + } + ] + } + ] + }, + { + "endpoint_id": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0", + "endpoint_name": "List wb_dr_pro_daily_report", + "overall_status": "通过", + "duration_seconds": 0.017931, + "start_time": "2025-07-11T18:57:44.997689", + "end_time": "2025-07-11T18:57:45.015620", + "executed_test_cases": [ + { + "test_case_id": "TC-STATUS-001", + "test_case_name": "基本状态码 200 检查", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "响应状态码为 200,符合预期 200。", + "duration_seconds": 0.0007948749989736825, + "timestamp": "2025-07-11T18:57:44.998641", + "validation_points": [ + { + "passed": true, + "message": "响应状态码为 200,符合预期 200。" + } + ] + }, + { + "test_case_id": "TC-HEADER-001", + "test_case_name": "必需请求头Schema验证", + "test_case_severity": "HIGH", + "status": "失败", + "message": "缺少必需的请求头 X-Tenant-ID;缺少必需的请求头 X-Data-Domain;缺少必需的请求头 Authorization", + "duration_seconds": 0.0008827499987091869, + "timestamp": "2025-07-11T18:57:44.999556", + "validation_points": [ + { + "header": "X-Tenant-ID", + "possible_names": [ + "X-Tenant-ID" + ], + "endpoint": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0" + }, + { + "header": "X-Data-Domain", + "possible_names": [ + "X-Data-Domain" + ], + "endpoint": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0" + }, + { + "header": "Authorization", + "possible_names": [ + "Authorization" + ], + "endpoint": "POST /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0" + } + ] + }, + { + "test_case_id": "TC-SECURITY-002", + "test_case_name": "敏感字段加密检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "未在响应中找到需要检查的敏感字段。", + "duration_seconds": 0.0010054159938590601, + "timestamp": "2025-07-11T18:57:45.000596", + "validation_points": [ + { + "passed": true, + "message": "未在响应中找到需要检查的敏感字段。" + } + ] + }, + { + "test_case_id": "TC-LLM-COMPLIANCE-001", + "test_case_name": "LLM合规性综合检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "合规性标准列表为空,跳过LLM合规性检查。", + "duration_seconds": 0.0008809999999357387, + "timestamp": "2025-07-11T18:57:45.001506", + "validation_points": [ + { + "reason": "compliance_criteria.json is empty or contains an empty list." + } + ] + }, + { + "test_case_id": "TC-RESTful-001", + "test_case_name": "核心命名与结构规范检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。;响应中包含一个主列表,但其键名 'data' 不是 'list'。", + "duration_seconds": 0.0008612910023657605, + "timestamp": "2025-07-11T18:57:45.002403", + "validation_points": [ + { + "passed": true, + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。" + }, + { + "keys": [ + "code", + "data", + "message" + ] + } + ] + }, + { + "test_case_id": "TC-DMS-PAGINATION-001", + "test_case_name": "分页参数检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount", + "duration_seconds": 0.0008901249966584146, + "timestamp": "2025-07-11T18:57:45.003322", + "validation_points": [ + { + "path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0", + "method": "POST", + "missing_params": [ + "pageNo", + "pageSize", + "isSearchCount" + ], + "found_params": { + "pageNo": false, + "pageSize": false, + "isSearchCount": false + } + } + ] + }, + { + "test_case_id": "TC-RESTful-004", + "test_case_name": "资源集合复数命名检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 的最后一个路径分段 '1.0.0' 可能不是复数形式,建议对资源集合使用复数命名。", + "duration_seconds": 0.0008342079963767901, + "timestamp": "2025-07-11T18:57:45.004197", + "validation_points": [ + { + "path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0", + "segment": "1.0.0" + } + ] + }, + { + "test_case_id": "TC-RESTful-002", + "test_case_name": "资源路径名词检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 符合资源名词命名规范。", + "duration_seconds": 0.0008134579984471202, + "timestamp": "2025-07-11T18:57:45.005049", + "validation_points": [ + { + "passed": true, + "message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 符合资源名词命名规范。" + } + ] + }, + { + "test_case_id": "TC-DMS-CORE-SCHEMA-001", + "test_case_name": "DMS核心存储服务API响应格式检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}", + "duration_seconds": 0.0007592910114908591, + "timestamp": "2025-07-11T18:57:45.005849", + "validation_points": [ + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-001", + "test_case_name": "返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "针对 POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 (状态码 200) 的响应体 conforms to the JSON schema.", + "duration_seconds": 0.0009497919963905588, + "timestamp": "2025-07-11T18:57:45.006837", + "validation_points": [ + { + "passed": true, + "message": "针对 POST http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0 (状态码 200) 的响应体 conforms to the JSON schema." + } + ] + }, + { + "test_case_id": "TC-RESTful-003", + "test_case_name": "时间字段ISO 8601格式检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "时间字段 'data[].update_date' (format: date-time) 缺少建议的 `pattern` (^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}([+-]\\d{2}:\\d{2}|Z)$) 来强制执行ISO 8601格式。", + "duration_seconds": 0.0007714160019531846, + "timestamp": "2025-07-11T18:57:45.007651", + "validation_points": [ + { + "field": "data[].update_date" + } + ] + }, + { + "test_case_id": "TC-DMS-URL-VERSION-001", + "test_case_name": "DMS API URL版本号检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 正确以'/api/'开头;API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0' 包含版本标识: 'v1'", + "duration_seconds": 0.0008008339937077835, + "timestamp": "2025-07-11T18:57:45.008488", + "validation_points": [ + { + "full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0" + }, + { + "pattern_matched": "/v\\d+/", + "version_string": "v1", + "full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-002", + "test_case_name": "灵活的返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "", + "duration_seconds": 0.0008351249998668209, + "timestamp": "2025-07-11T18:57:45.009359", + "validation_points": [] + }, + { + "test_case_id": "TC-SECURITY-001", + "test_case_name": "HTTPS 协议强制性检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "API通过HTTP (http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0) 响应了成功的状态码 200,这违反了HTTPS强制策略。", + "duration_seconds": 0.0008065419970080256, + "timestamp": "2025-07-11T18:57:45.010205", + "validation_points": [ + { + "status_code": 200 + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-QUERY", + "test_case_name": "查询参数类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。", + "duration_seconds": 0.0010220840049441904, + "timestamp": "2025-07-11T18:57:45.011260", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-BODY", + "test_case_name": "请求体字段类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:在请求体中未找到合适的字段来测试类型不匹配。", + "duration_seconds": 0.0008989170019049197, + "timestamp": "2025-07-11T18:57:45.012191", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在请求体中未找到合适的字段来测试类型不匹配。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4002", + "test_case_name": "数值参数越界检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:未找到具有明确范围限制的数值字段。", + "duration_seconds": 0.0008531249914085492, + "timestamp": "2025-07-11T18:57:45.013083", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:未找到具有明确范围限制的数值字段。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4006", + "test_case_name": "非法枚举值检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:未找到具有明确枚举值限制的字段。", + "duration_seconds": 0.0008066250011324883, + "timestamp": "2025-07-11T18:57:45.013921", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:未找到具有明确枚举值限制的字段。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-BODY", + "test_case_name": "缺失必填请求体字段检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "跳过测试:在API规范中未找到合适的必填请求体字段用于移除测试。", + "duration_seconds": 0.000810041994554922, + "timestamp": "2025-07-11T18:57:45.014768", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在API规范中未找到合适的必填请求体字段用于移除测试。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-QUERY", + "test_case_name": "缺失必填查询参数检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。", + "duration_seconds": 0.0007917909970274195, + "timestamp": "2025-07-11T18:57:45.015596", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。" + } + ] + } + ] + }, + { + "endpoint_id": "GET /api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/{id}", + "endpoint_name": "Read wb_dr_pro_daily_report", + "overall_status": "失败", + "duration_seconds": 0.00148, + "start_time": "2025-07-11T18:57:45.015678", + "end_time": "2025-07-11T18:57:45.017158", + "executed_test_cases": [ + { + "test_case_id": "TC-STATUS-001", + "test_case_name": "基本状态码 200 检查", + "test_case_severity": "CRITICAL", + "status": "失败", + "message": "期望状态码 200,但收到 404。", + "duration_seconds": 0.0008529159968020394, + "timestamp": "2025-07-11T18:57:45.016690", + "validation_points": [ + { + "expected_status": 200, + "actual_status": 404, + "request_url": "http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report/1.0.0/param_id", + "response_body_sample": "{\"code\": 404, \"message\": \"资源 'wb_dr_pro_daily_report' with ID 'param_id' 未找到.\"}" + } + ] + }, + { + "test_case_id": "TC-HEADER-001", + "test_case_name": "必需请求头Schema验证", + "test_case_severity": "HIGH", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 8.709001122042537e-06, + "timestamp": "2025-07-11T18:57:45.016734", + "validation_points": [] + }, + { + "test_case_id": "TC-SECURITY-002", + "test_case_name": "敏感字段加密检查", + "test_case_severity": "HIGH", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.374997949227691e-06, + "timestamp": "2025-07-11T18:57:45.016759", + "validation_points": [] + }, + { + "test_case_id": "TC-LLM-COMPLIANCE-001", + "test_case_name": "LLM合规性综合检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.000009645707905e-06, + "timestamp": "2025-07-11T18:57:45.016782", + "validation_points": [] + }, + { + "test_case_id": "TC-RESTful-001", + "test_case_name": "核心命名与结构规范检查", + "test_case_severity": "HIGH", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 6.95799826644361e-06, + "timestamp": "2025-07-11T18:57:45.016805", + "validation_points": [] + }, + { + "test_case_id": "TC-DMS-PAGINATION-001", + "test_case_name": "分页参数检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.000009645707905e-06, + "timestamp": "2025-07-11T18:57:45.016828", + "validation_points": [] + }, + { + "test_case_id": "TC-RESTful-004", + "test_case_name": "资源集合复数命名检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 6.750007742084563e-06, + "timestamp": "2025-07-11T18:57:45.016851", + "validation_points": [] + }, + { + "test_case_id": "TC-RESTful-002", + "test_case_name": "资源路径名词检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 6.832997314631939e-06, + "timestamp": "2025-07-11T18:57:45.016873", + "validation_points": [] + }, + { + "test_case_id": "TC-DMS-CORE-SCHEMA-001", + "test_case_name": "DMS核心存储服务API响应格式检查", + "test_case_severity": "HIGH", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 7.124996045604348e-06, + "timestamp": "2025-07-11T18:57:45.016896", + "validation_points": [] + }, + { + "test_case_id": "TC-CORE-FUNC-001", + "test_case_name": "返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 6.917005521245301e-06, + "timestamp": "2025-07-11T18:57:45.016919", + "validation_points": [] + }, + { + "test_case_id": "TC-RESTful-003", + "test_case_name": "时间字段ISO 8601格式检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 6.791000487282872e-06, + "timestamp": "2025-07-11T18:57:45.016941", + "validation_points": [] + }, + { + "test_case_id": "TC-DMS-URL-VERSION-001", + "test_case_name": "DMS API URL版本号检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 6.791000487282872e-06, + "timestamp": "2025-07-11T18:57:45.016963", + "validation_points": [] + }, + { + "test_case_id": "TC-CORE-FUNC-002", + "test_case_name": "灵活的返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 6.791000487282872e-06, + "timestamp": "2025-07-11T18:57:45.016985", + "validation_points": [] + }, + { + "test_case_id": "TC-SECURITY-001", + "test_case_name": "HTTPS 协议强制性检查", + "test_case_severity": "HIGH", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 6.917005521245301e-06, + "timestamp": "2025-07-11T18:57:45.017008", + "validation_points": [] + }, + { + "test_case_id": "TC-ERROR-4001-QUERY", + "test_case_name": "查询参数类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 6.874994141981006e-06, + "timestamp": "2025-07-11T18:57:45.017030", + "validation_points": [] + }, + { + "test_case_id": "TC-ERROR-4001-BODY", + "test_case_name": "请求体字段类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 6.667003617621958e-06, + "timestamp": "2025-07-11T18:57:45.017052", + "validation_points": [] + }, + { + "test_case_id": "TC-ERROR-4002", + "test_case_name": "数值参数越界检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 8.332994184456766e-06, + "timestamp": "2025-07-11T18:57:45.017076", + "validation_points": [] + }, + { + "test_case_id": "TC-ERROR-4006", + "test_case_name": "非法枚举值检查", + "test_case_severity": "MEDIUM", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 6.791000487282872e-06, + "timestamp": "2025-07-11T18:57:45.017099", + "validation_points": [] + }, + { + "test_case_id": "TC-ERROR-4003-BODY", + "test_case_name": "缺失必填请求体字段检查", + "test_case_severity": "HIGH", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 6.791000487282872e-06, + "timestamp": "2025-07-11T18:57:45.017121", + "validation_points": [] + }, + { + "test_case_id": "TC-ERROR-4003-QUERY", + "test_case_name": "缺失必填查询参数检查", + "test_case_severity": "HIGH", + "status": "跳过", + "message": "由于关键的前置测试失败而被跳过: 关键测试 'TC-STATUS-001' 失败 (状态: 失败)。消息: ", + "duration_seconds": 6.750007742084563e-06, + "timestamp": "2025-07-11T18:57:45.017143", + "validation_points": [] + } + ] + }, + { + "endpoint_id": "PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report", + "endpoint_name": "Update wb_dr_pro_daily_report", + "overall_status": "通过", + "duration_seconds": 0.020972, + "start_time": "2025-07-11T18:57:45.017206", + "end_time": "2025-07-11T18:57:45.038178", + "executed_test_cases": [ + { + "test_case_id": "TC-STATUS-001", + "test_case_name": "基本状态码 200 检查", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "响应状态码为 200,符合预期 200。", + "duration_seconds": 0.000985999999102205, + "timestamp": "2025-07-11T18:57:45.018357", + "validation_points": [ + { + "passed": true, + "message": "响应状态码为 200,符合预期 200。" + } + ] + }, + { + "test_case_id": "TC-HEADER-001", + "test_case_name": "必需请求头Schema验证", + "test_case_severity": "HIGH", + "status": "失败", + "message": "缺少必需的请求头 X-Tenant-ID;缺少必需的请求头 X-Data-Domain;缺少必需的请求头 Authorization", + "duration_seconds": 0.0011382920056348667, + "timestamp": "2025-07-11T18:57:45.019535", + "validation_points": [ + { + "header": "X-Tenant-ID", + "possible_names": [ + "X-Tenant-ID" + ], + "endpoint": "PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report" + }, + { + "header": "X-Data-Domain", + "possible_names": [ + "X-Data-Domain" + ], + "endpoint": "PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report" + }, + { + "header": "Authorization", + "possible_names": [ + "Authorization" + ], + "endpoint": "PUT /api/dms/wb_dr/v1/wb_dr_pro_daily_report" + } + ] + }, + { + "test_case_id": "TC-SECURITY-002", + "test_case_name": "敏感字段加密检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "未在响应中找到需要检查的敏感字段。", + "duration_seconds": 0.0009992919949581847, + "timestamp": "2025-07-11T18:57:45.020562", + "validation_points": [ + { + "passed": true, + "message": "未在响应中找到需要检查的敏感字段。" + } + ] + }, + { + "test_case_id": "TC-LLM-COMPLIANCE-001", + "test_case_name": "LLM合规性综合检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "合规性标准列表为空,跳过LLM合规性检查。", + "duration_seconds": 0.001051917002769187, + "timestamp": "2025-07-11T18:57:45.021654", + "validation_points": [ + { + "reason": "compliance_criteria.json is empty or contains an empty list." + } + ] + }, + { + "test_case_id": "TC-RESTful-001", + "test_case_name": "核心命名与结构规范检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。", + "duration_seconds": 0.0010076250036945567, + "timestamp": "2025-07-11T18:57:45.022700", + "validation_points": [ + { + "passed": true, + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。" + } + ] + }, + { + "test_case_id": "TC-DMS-PAGINATION-001", + "test_case_name": "分页参数检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount", + "duration_seconds": 0.00087554199853912, + "timestamp": "2025-07-11T18:57:45.023608", + "validation_points": [ + { + "path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report", + "method": "PUT", + "missing_params": [ + "pageNo", + "pageSize", + "isSearchCount" + ], + "found_params": { + "pageNo": false, + "pageSize": false, + "isSearchCount": false + } + } + ] + }, + { + "test_case_id": "TC-RESTful-004", + "test_case_name": "资源集合复数命名检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过检查:PUT 方法,不适用于资源集合复数检查。", + "duration_seconds": 0.00137945800088346, + "timestamp": "2025-07-11T18:57:45.025032", + "validation_points": [ + { + "passed": true, + "message": "跳过检查:PUT 方法,不适用于资源集合复数检查。" + } + ] + }, + { + "test_case_id": "TC-RESTful-002", + "test_case_name": "资源路径名词检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 符合资源名词命名规范。", + "duration_seconds": 0.0010381249885540456, + "timestamp": "2025-07-11T18:57:45.026112", + "validation_points": [ + { + "passed": true, + "message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 符合资源名词命名规范。" + } + ] + }, + { + "test_case_id": "TC-DMS-CORE-SCHEMA-001", + "test_case_name": "DMS核心存储服务API响应格式检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}", + "duration_seconds": 0.0009269159927498549, + "timestamp": "2025-07-11T18:57:45.027076", + "validation_points": [ + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-001", + "test_case_name": "返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "针对 PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report (状态码 200) 的响应体 conforms to the JSON schema.", + "duration_seconds": 0.0010271670034853742, + "timestamp": "2025-07-11T18:57:45.028140", + "validation_points": [ + { + "passed": true, + "message": "针对 PUT http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report (状态码 200) 的响应体 conforms to the JSON schema." + } + ] + }, + { + "test_case_id": "TC-RESTful-003", + "test_case_name": "时间字段ISO 8601格式检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。", + "duration_seconds": 0.0009042919991770759, + "timestamp": "2025-07-11T18:57:45.029075", + "validation_points": [ + { + "passed": true, + "message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。" + } + ] + }, + { + "test_case_id": "TC-DMS-URL-VERSION-001", + "test_case_name": "DMS API URL版本号检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 正确以'/api/'开头;API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 包含版本标识: 'v1'", + "duration_seconds": 0.000913790994673036, + "timestamp": "2025-07-11T18:57:45.030026", + "validation_points": [ + { + "full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report" + }, + { + "pattern_matched": "/v\\d+/", + "version_string": "v1", + "full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-002", + "test_case_name": "灵活的返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "", + "duration_seconds": 0.0008957499958341941, + "timestamp": "2025-07-11T18:57:45.030965", + "validation_points": [] + }, + { + "test_case_id": "TC-SECURITY-001", + "test_case_name": "HTTPS 协议强制性检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "API通过HTTP (http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report) 响应了成功的状态码 200,这违反了HTTPS强制策略。", + "duration_seconds": 0.0009657499904278666, + "timestamp": "2025-07-11T18:57:45.031970", + "validation_points": [ + { + "status_code": 200 + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-QUERY", + "test_case_name": "查询参数类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。", + "duration_seconds": 0.0010442919883644208, + "timestamp": "2025-07-11T18:57:45.033045", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-BODY", + "test_case_name": "请求体字段类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "当请求体字段 'version' 类型不匹配时, 业务错误码应为 -1,但实际为 0。", + "duration_seconds": 0.001040457995259203, + "timestamp": "2025-07-11T18:57:45.034115", + "validation_points": [ + { + "expected_code": -1, + "actual_code": 0, + "response_body": { + "code": 0, + "data": true, + "message": "创建成功" + } + } + ] + }, + { + "test_case_id": "TC-ERROR-4002", + "test_case_name": "数值参数越界检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "当 body 字段 'record_count' 值为 10001 (超出范围: min=0, max=10000) 时, 业务错误码应为 -1,但实际为 0。", + "duration_seconds": 0.001064041003701277, + "timestamp": "2025-07-11T18:57:45.035211", + "validation_points": [ + { + "expected_code": -1, + "actual_code": 0, + "response_body": { + "code": 0, + "data": true, + "message": "创建成功" + } + } + ] + }, + { + "test_case_id": "TC-ERROR-4006", + "test_case_name": "非法枚举值检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:未找到具有明确枚举值限制的字段。", + "duration_seconds": 0.0009317500080214813, + "timestamp": "2025-07-11T18:57:45.036176", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:未找到具有明确枚举值限制的字段。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-BODY", + "test_case_name": "缺失必填请求体字段检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "当移除必填请求体字段 'data' 时, API应返回状态码 200,但实际为 400。", + "duration_seconds": 0.0009794579964363948, + "timestamp": "2025-07-11T18:57:45.037192", + "validation_points": [ + { + "expected_status": 200, + "actual_status": 400 + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-QUERY", + "test_case_name": "缺失必填查询参数检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。", + "duration_seconds": 0.0009248749993275851, + "timestamp": "2025-07-11T18:57:45.038155", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。" + } + ] + } + ] + }, + { + "endpoint_id": "DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report", + "endpoint_name": "Delete wb_dr_pro_daily_report", + "overall_status": "通过", + "duration_seconds": 0.018922, + "start_time": "2025-07-11T18:57:45.038235", + "end_time": "2025-07-11T18:57:45.057157", + "executed_test_cases": [ + { + "test_case_id": "TC-STATUS-001", + "test_case_name": "基本状态码 200 检查", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "响应状态码为 200,符合预期 200。", + "duration_seconds": 0.0009182499925373122, + "timestamp": "2025-07-11T18:57:45.039319", + "validation_points": [ + { + "passed": true, + "message": "响应状态码为 200,符合预期 200。" + } + ] + }, + { + "test_case_id": "TC-HEADER-001", + "test_case_name": "必需请求头Schema验证", + "test_case_severity": "HIGH", + "status": "失败", + "message": "缺少必需的请求头 X-Tenant-ID;缺少必需的请求头 X-Data-Domain;缺少必需的请求头 Authorization", + "duration_seconds": 0.0010118339996552095, + "timestamp": "2025-07-11T18:57:45.040372", + "validation_points": [ + { + "header": "X-Tenant-ID", + "possible_names": [ + "X-Tenant-ID" + ], + "endpoint": "DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report" + }, + { + "header": "X-Data-Domain", + "possible_names": [ + "X-Data-Domain" + ], + "endpoint": "DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report" + }, + { + "header": "Authorization", + "possible_names": [ + "Authorization" + ], + "endpoint": "DELETE /api/dms/wb_dr/v1/wb_dr_pro_daily_report" + } + ] + }, + { + "test_case_id": "TC-SECURITY-002", + "test_case_name": "敏感字段加密检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "未在响应中找到需要检查的敏感字段。", + "duration_seconds": 0.0009284579864470288, + "timestamp": "2025-07-11T18:57:45.041330", + "validation_points": [ + { + "passed": true, + "message": "未在响应中找到需要检查的敏感字段。" + } + ] + }, + { + "test_case_id": "TC-LLM-COMPLIANCE-001", + "test_case_name": "LLM合规性综合检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "合规性标准列表为空,跳过LLM合规性检查。", + "duration_seconds": 0.0009248339920304716, + "timestamp": "2025-07-11T18:57:45.042293", + "validation_points": [ + { + "reason": "compliance_criteria.json is empty or contains an empty list." + } + ] + }, + { + "test_case_id": "TC-RESTful-001", + "test_case_name": "核心命名与结构规范检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。", + "duration_seconds": 0.0009065829945029691, + "timestamp": "2025-07-11T18:57:45.043238", + "validation_points": [ + { + "passed": true, + "message": "模块名 'dms' 格式正确 (全小写/数字/中划线)。" + } + ] + }, + { + "test_case_id": "TC-DMS-PAGINATION-001", + "test_case_name": "分页参数检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "API请求缺少标准分页参数:pageNo, pageSize, isSearchCount", + "duration_seconds": 0.0008258750021923333, + "timestamp": "2025-07-11T18:57:45.044094", + "validation_points": [ + { + "path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report", + "method": "DELETE", + "missing_params": [ + "pageNo", + "pageSize", + "isSearchCount" + ], + "found_params": { + "pageNo": false, + "pageSize": false, + "isSearchCount": false + } + } + ] + }, + { + "test_case_id": "TC-RESTful-004", + "test_case_name": "资源集合复数命名检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过检查:DELETE 方法,不适用于资源集合复数检查。", + "duration_seconds": 0.0008165839972207323, + "timestamp": "2025-07-11T18:57:45.044948", + "validation_points": [ + { + "passed": true, + "message": "跳过检查:DELETE 方法,不适用于资源集合复数检查。" + } + ] + }, + { + "test_case_id": "TC-RESTful-002", + "test_case_name": "资源路径名词检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 符合资源名词命名规范。", + "duration_seconds": 0.0008638330036774278, + "timestamp": "2025-07-11T18:57:45.045854", + "validation_points": [ + { + "passed": true, + "message": "路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 符合资源名词命名规范。" + } + ] + }, + { + "test_case_id": "TC-DMS-CORE-SCHEMA-001", + "test_case_name": "DMS核心存储服务API响应格式检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "字段'code'在schema中未标记为必填(required);字段'message'在schema中未标记为必填(required);字段'data'在schema中未标记为必填(required);响应schema符合标准格式: {'code':int or number or string, 'message':string, 'data': any}", + "duration_seconds": 0.0008437080105068162, + "timestamp": "2025-07-11T18:57:45.046735", + "validation_points": [ + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200", + "required_fields": [] + }, + { + "status_code": "200" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-001", + "test_case_name": "返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "针对 DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report (状态码 200) 的响应体 conforms to the JSON schema.", + "duration_seconds": 0.0009139579924521968, + "timestamp": "2025-07-11T18:57:45.047687", + "validation_points": [ + { + "passed": true, + "message": "针对 DELETE http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report (状态码 200) 的响应体 conforms to the JSON schema." + } + ] + }, + { + "test_case_id": "TC-RESTful-003", + "test_case_name": "时间字段ISO 8601格式检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。", + "duration_seconds": 0.0008617499988758937, + "timestamp": "2025-07-11T18:57:45.048582", + "validation_points": [ + { + "passed": true, + "message": "在API规范中未找到可供静态检查的时间相关字段(如 format: date-time 或 常见时间字段名)。" + } + ] + }, + { + "test_case_id": "TC-DMS-URL-VERSION-001", + "test_case_name": "DMS API URL版本号检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 正确以'/api/'开头;API路径 '/api/dms/wb_dr/v1/wb_dr_pro_daily_report' 包含版本标识: 'v1'", + "duration_seconds": 0.0009531249961582944, + "timestamp": "2025-07-11T18:57:45.049572", + "validation_points": [ + { + "full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report" + }, + { + "pattern_matched": "/v\\d+/", + "version_string": "v1", + "full_path": "/api/dms/wb_dr/v1/wb_dr_pro_daily_report" + } + ] + }, + { + "test_case_id": "TC-CORE-FUNC-002", + "test_case_name": "灵活的返回体JSON Schema验证", + "test_case_severity": "CRITICAL", + "status": "通过", + "message": "", + "duration_seconds": 0.0008376250043511391, + "timestamp": "2025-07-11T18:57:45.050449", + "validation_points": [] + }, + { + "test_case_id": "TC-SECURITY-001", + "test_case_name": "HTTPS 协议强制性检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "API通过HTTP (http://127.0.0.1:5001/api/dms/wb_dr/v1/wb_dr_pro_daily_report) 响应了成功的状态码 200,这违反了HTTPS强制策略。", + "duration_seconds": 0.0008717500022612512, + "timestamp": "2025-07-11T18:57:45.051364", + "validation_points": [ + { + "status_code": 200 + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-QUERY", + "test_case_name": "查询参数类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。", + "duration_seconds": 0.0010064160014735535, + "timestamp": "2025-07-11T18:57:45.052404", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在查询参数中未找到合适的字段来测试类型不匹配。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4001-BODY", + "test_case_name": "请求体字段类型不匹配检查", + "test_case_severity": "MEDIUM", + "status": "失败", + "message": "当请求体字段 'version' 类型不匹配时, 业务错误码应为 -1,但实际为 404。", + "duration_seconds": 0.0009657080081524327, + "timestamp": "2025-07-11T18:57:45.053401", + "validation_points": [ + { + "expected_code": -1, + "actual_code": 404, + "response_body": { + "code": 404, + "data": false, + "message": "未找到要删除的资源" + } + } + ] + }, + { + "test_case_id": "TC-ERROR-4002", + "test_case_name": "数值参数越界检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:未找到具有明确范围限制的数值字段。", + "duration_seconds": 0.0009448329947190359, + "timestamp": "2025-07-11T18:57:45.054377", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:未找到具有明确范围限制的数值字段。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4006", + "test_case_name": "非法枚举值检查", + "test_case_severity": "MEDIUM", + "status": "通过", + "message": "跳过测试:未找到具有明确枚举值限制的字段。", + "duration_seconds": 0.0008181669982150197, + "timestamp": "2025-07-11T18:57:45.055225", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:未找到具有明确枚举值限制的字段。" + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-BODY", + "test_case_name": "缺失必填请求体字段检查", + "test_case_severity": "HIGH", + "status": "失败", + "message": "当移除必填请求体字段 'data' 时, API应返回状态码 200,但实际为 400。", + "duration_seconds": 0.0009573749994160607, + "timestamp": "2025-07-11T18:57:45.056223", + "validation_points": [ + { + "expected_status": 200, + "actual_status": 400 + } + ] + }, + { + "test_case_id": "TC-ERROR-4003-QUERY", + "test_case_name": "缺失必填查询参数检查", + "test_case_severity": "HIGH", + "status": "通过", + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。", + "duration_seconds": 0.0008685000066179782, + "timestamp": "2025-07-11T18:57:45.057129", + "validation_points": [ + { + "passed": true, + "message": "跳过测试:在API规范中未找到合适的必填查询参数用于移除测试。" + } + ] + } + ] + } + ], + "stage_results": [ + { + "stage_id": "dms_crud_scenario_stage", + "stage_name": "DMS Full CRUD Scenario", + "description": "Performs a full Create -> Read -> Update -> Read -> Delete -> List workflow for a single DMS business object. (Scenario for: lujing_test)", + "api_group_name": "Global (所有API)", + "tags": [ + "dms", + "crud", + "scenario" + ], + "overall_status": "失败", + "duration_seconds": "0.00", + "start_time": "2025-07-11T18:57:44", + "end_time": "2025-07-11T18:57:44", + "message": "测试阶段因步骤 'Step 1: Create Resource' 的状态 (失败) 而中止.", + "executed_steps_count": 1, + "executed_steps": [ + { + "step_name": "Step 1: Create Resource", + "description": null, + "lookup_key": "CREATE", + "resolved_endpoint": "POST /api/dms/wb_ml/v1/lujing_test", + "status": "失败", + "message": "预期状态码为 [200, 201], 实际为 400.; Expected response data to be true, but it was 'None'.", + "duration_seconds": "0.0000", + "timestamp": "2025-07-11T18:57:44+0800", + "validation_points": [ + { + "passed": false, + "message": "预期状态码为 [200, 201], 实际为 400." + }, + { + "passed": false, + "message": "Expected response data to be true, but it was 'None'." + } + ], + "api_call_curl": "N/A", + "api_operation_spec": null, + "request_details": { + "method": "POST", + "url": "http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test", + "headers": { + "Content-Type": "application/json", + "Accept": "application/json" + }, + "params": {}, + "json_data": { + "data": [ + { + "description": "test-entry-from-scenario" + } + ] + }, + "body": { + "data": [ + { + "description": "test-entry-from-scenario" + } + ] + }, + "data": null, + "timeout": 30 + }, + "extracted_outputs": {}, + "context_after_step_summary": { + "pk_name": "description", + "pk_value": "c3782722-693c-41e0-8f7a-6121c09ab40e", + "current_payload": { + "description": "test-entry-from-scenario" + }, + "update_payload": { + "description": "updated-test-entry-from-scenario" + }, + "scenario_endpoints": { + "create": { + "method": "POST", + "path": "/api/dms/wb_ml/v1/lujing_test", + "title": "Create lujing_test", + "summary": "Create lujing_test", + "description": "Create lujing_test", + "operationId": "create_lujing_test", + "tags": [ + "wb_ml" + ], + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "version": { + "type": "string", + "example": "1.0.0" + }, + "act": { + "type": "integer", + "example": 0 + }, + "data": { + "type": "array", + "items": { + "properties": { + "description": { + "description": "一个简单的描述字段", + "title": "描述", + "type": "string" + }, + "lujing_test_id": { + "description": "主键 for lujing_test", + "title": "主键", + "type": "string" + }, + "record_count": { + "maximum": 10000, + "minimum": 0, + "title": "记录数", + "type": "integer" + }, + "status": { + "enum": [ + "active", + "inactive", + "archived" + ], + "title": "状态", + "type": "string" + }, + "update_date": { + "format": "date-time", + "title": "更新日期", + "type": "string" + } + }, + "required": [ + "lujing_test_id", + "status" + ], + "title": "测试", + "type": "object" + } + } + }, + "required": [ + "data" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "data": { + "type": "boolean" + } + } + } + } + } + } + }, + "_source_format": "dms", + "_dms_raw_record": { + "add_tree": "Y", + "create_user": "admin", + "domain": "wb_ml", + "flow_state": "7", + "id": "lujing_test.1.0.0", + "name": "lujing_test", + "title": "测试", + "type": "business-data", + "update_date": "2025-07-01 14:34:58", + "version": "1.0.0" + }, + "_test_mode": "standalone" + }, + "list": { + "method": "POST", + "path": "/api/dms/wb_ml/v1/lujing_test/1.0.0", + "title": "List lujing_test", + "summary": "List lujing_test", + "description": "List lujing_test", + "operationId": "list_lujing_test", + "tags": [ + "wb_ml" + ], + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": {} + } + } + }, + "responses": { + "200": { + "description": "Successful Operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "data": { + "type": "array", + "items": { + "properties": { + "description": { + "description": "一个简单的描述字段", + "title": "描述", + "type": "string" + }, + "lujing_test_id": { + "description": "主键 for lujing_test", + "title": "主键", + "type": "string" + }, + "record_count": { + "maximum": 10000, + "minimum": 0, + "title": "记录数", + "type": "integer" + }, + "status": { + "enum": [ + "active", + "inactive", + "archived" + ], + "title": "状态", + "type": "string" + }, + "update_date": { + "format": "date-time", + "title": "更新日期", + "type": "string" + } + }, + "required": [ + "lujing_test_id", + "status" + ], + "title": "测试", + "type": "object" + } + } + } + } + } + } + } + }, + "_source_format": "dms", + "_dms_raw_record": { + "add_tree": "Y", + "create_user": "admin", + "domain": "wb_ml", + "flow_state": "7", + "id": "lujing_test.1.0.0", + "name": "lujing_test", + "title": "测试", + "type": "business-data", + "update_date": "2025-07-01 14:34:58", + "version": "1.0.0" + }, + "_test_mode": "scenario_only" + }, + "read": { + "method": "GET", + "path": "/api/dms/wb_ml/v1/lujing_test/1.0.0/{id}", + "title": "Read lujing_test", + "summary": "Read lujing_test", + "description": "Read lujing_test", + "operationId": "read_lujing_test", + "tags": [ + "wb_ml" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "description": "The ID of the lujing_test, maps to description", + "schema": { + "description": "一个简单的描述字段", + "title": "描述", + "type": "string" + } + } + ], + "requestBody": null, + "responses": { + "200": { + "description": "Successful Operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "data": { + "properties": { + "description": { + "description": "一个简单的描述字段", + "title": "描述", + "type": "string" + }, + "lujing_test_id": { + "description": "主键 for lujing_test", + "title": "主键", + "type": "string" + }, + "record_count": { + "maximum": 10000, + "minimum": 0, + "title": "记录数", + "type": "integer" + }, + "status": { + "enum": [ + "active", + "inactive", + "archived" + ], + "title": "状态", + "type": "string" + }, + "update_date": { + "format": "date-time", + "title": "更新日期", + "type": "string" + } + }, + "required": [ + "lujing_test_id", + "status" + ], + "title": "测试", + "type": "object" + } + } + } + } + } + } + }, + "_source_format": "dms", + "_dms_raw_record": { + "add_tree": "Y", + "create_user": "admin", + "domain": "wb_ml", + "flow_state": "7", + "id": "lujing_test.1.0.0", + "name": "lujing_test", + "title": "测试", + "type": "business-data", + "update_date": "2025-07-01 14:34:58", + "version": "1.0.0" + }, + "_test_mode": "scenario_only" + }, + "update": { + "method": "PUT", + "path": "/api/dms/wb_ml/v1/lujing_test", + "title": "Update lujing_test", + "summary": "Update lujing_test", + "description": "Update lujing_test", + "operationId": "update_lujing_test", + "tags": [ + "wb_ml" + ], + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "version": { + "type": "string", + "example": "1.0.0" + }, + "act": { + "type": "integer", + "example": 0 + }, + "data": { + "type": "array", + "items": { + "properties": { + "description": { + "description": "一个简单的描述字段", + "title": "描述", + "type": "string" + }, + "lujing_test_id": { + "description": "主键 for lujing_test", + "title": "主键", + "type": "string" + }, + "record_count": { + "maximum": 10000, + "minimum": 0, + "title": "记录数", + "type": "integer" + }, + "status": { + "enum": [ + "active", + "inactive", + "archived" + ], + "title": "状态", + "type": "string" + }, + "update_date": { + "format": "date-time", + "title": "更新日期", + "type": "string" + } + }, + "required": [ + "lujing_test_id", + "status" + ], + "title": "测试", + "type": "object" + } + } + }, + "required": [ + "data" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "data": { + "type": "boolean" + } + } + } + } + } + } + }, + "_source_format": "dms", + "_dms_raw_record": { + "add_tree": "Y", + "create_user": "admin", + "domain": "wb_ml", + "flow_state": "7", + "id": "lujing_test.1.0.0", + "name": "lujing_test", + "title": "测试", + "type": "business-data", + "update_date": "2025-07-01 14:34:58", + "version": "1.0.0" + }, + "_test_mode": "scenario_only" + }, + "delete": { + "method": "DELETE", + "path": "/api/dms/wb_ml/v1/lujing_test", + "title": "Delete lujing_test", + "summary": "Delete lujing_test", + "description": "Delete lujing_test", + "operationId": "delete_lujing_test", + "tags": [ + "wb_ml" + ], + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "version": { + "type": "string", + "example": "1.0.0" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "description": { + "description": "一个简单的描述字段", + "title": "描述", + "type": "string" + } + }, + "required": [ + "description" + ] + } + } + }, + "required": [ + "data" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "data": { + "type": "boolean" + } + } + } + } + } + } + }, + "_source_format": "dms", + "_dms_raw_record": { + "add_tree": "Y", + "create_user": "admin", + "domain": "wb_ml", + "flow_state": "7", + "id": "lujing_test.1.0.0", + "name": "lujing_test", + "title": "测试", + "type": "business-data", + "update_date": "2025-07-01 14:34:58", + "version": "1.0.0" + }, + "_test_mode": "scenario_only" + } + } + } + } + ], + "final_stage_context_summary": { + "pk_name": "description", + "pk_value": "c3782722-693c-41e0-8f7a-6121c09ab40e", + "current_payload": "Type: dict, Keys/Count: 1", + "update_payload": "Type: dict, Keys/Count: 1", + "scenario_endpoints": "Type: dict, Keys/Count: 5" + } + }, + { + "stage_id": "dms_crud_scenario_stage", + "stage_name": "DMS Full CRUD Scenario", + "description": "Performs a full Create -> Read -> Update -> Read -> Delete -> List workflow for a single DMS business object. (Scenario for: lujing_test)", + "api_group_name": "Global (所有API)", + "tags": [ + "dms", + "crud", + "scenario" + ], + "overall_status": "失败", + "duration_seconds": "0.00", + "start_time": "2025-07-11T18:57:45", + "end_time": "2025-07-11T18:57:45", + "message": "测试阶段因步骤 'Step 1: Create Resource' 的状态 (失败) 而中止.", + "executed_steps_count": 1, + "executed_steps": [ + { + "step_name": "Step 1: Create Resource", + "description": null, + "lookup_key": "CREATE", + "resolved_endpoint": "POST /api/dms/wb_ml/v1/lujing_test", + "status": "失败", + "message": "预期状态码为 [200, 201], 实际为 400.; Expected response data to be true, but it was 'None'.", + "duration_seconds": "0.0000", + "timestamp": "2025-07-11T18:57:45+0800", + "validation_points": [ + { + "passed": false, + "message": "预期状态码为 [200, 201], 实际为 400." + }, + { + "passed": false, + "message": "Expected response data to be true, but it was 'None'." + } + ], + "api_call_curl": "N/A", + "api_operation_spec": null, + "request_details": { + "method": "POST", + "url": "http://127.0.0.1:5001/api/dms/wb_ml/v1/lujing_test", + "headers": { + "Content-Type": "application/json", + "Accept": "application/json" + }, + "params": {}, + "json_data": { + "data": [ + { + "description": "test-entry-from-scenario" + } + ] + }, + "body": { + "data": [ + { + "description": "test-entry-from-scenario" + } + ] + }, + "data": null, + "timeout": 30 + }, + "extracted_outputs": {}, + "context_after_step_summary": { + "pk_name": "description", + "pk_value": "b54b5f8c-01ac-49c2-a846-2bdb8454b087", + "current_payload": { + "description": "test-entry-from-scenario" + }, + "update_payload": { + "description": "updated-test-entry-from-scenario" + }, + "scenario_endpoints": { + "create": { + "method": "POST", + "path": "/api/dms/wb_ml/v1/lujing_test", + "title": "Create lujing_test", + "summary": "Create lujing_test", + "description": "Create lujing_test", + "operationId": "create_lujing_test", + "tags": [ + "wb_ml" + ], + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "version": { + "type": "string", + "example": "1.0.0" + }, + "act": { + "type": "integer", + "example": 0 + }, + "data": { + "type": "array", + "items": { + "properties": { + "description": { + "description": "一个简单的描述字段", + "title": "描述", + "type": "string" + }, + "lujing_test_id": { + "description": "主键 for lujing_test", + "title": "主键", + "type": "string" + }, + "record_count": { + "maximum": 10000, + "minimum": 0, + "title": "记录数", + "type": "integer" + }, + "status": { + "enum": [ + "active", + "inactive", + "archived" + ], + "title": "状态", + "type": "string" + }, + "update_date": { + "format": "date-time", + "title": "更新日期", + "type": "string" + } + }, + "required": [ + "lujing_test_id", + "status" + ], + "title": "测试", + "type": "object" + } + } + }, + "required": [ + "data" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "data": { + "type": "boolean" + } + } + } + } + } + } + }, + "_source_format": "dms", + "_dms_raw_record": { + "add_tree": "Y", + "create_user": "admin", + "domain": "wb_ml", + "flow_state": "7", + "id": "lujing_test.1.0.0", + "name": "lujing_test", + "title": "测试", + "type": "business-data", + "update_date": "2025-07-01 14:34:58", + "version": "1.0.0" + }, + "_test_mode": "standalone" + }, + "list": { + "method": "POST", + "path": "/api/dms/wb_ml/v1/lujing_test/1.0.0", + "title": "List lujing_test", + "summary": "List lujing_test", + "description": "List lujing_test", + "operationId": "list_lujing_test", + "tags": [ + "wb_ml" + ], + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": {} + } + } + }, + "responses": { + "200": { + "description": "Successful Operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "data": { + "type": "array", + "items": { + "properties": { + "description": { + "description": "一个简单的描述字段", + "title": "描述", + "type": "string" + }, + "lujing_test_id": { + "description": "主键 for lujing_test", + "title": "主键", + "type": "string" + }, + "record_count": { + "maximum": 10000, + "minimum": 0, + "title": "记录数", + "type": "integer" + }, + "status": { + "enum": [ + "active", + "inactive", + "archived" + ], + "title": "状态", + "type": "string" + }, + "update_date": { + "format": "date-time", + "title": "更新日期", + "type": "string" + } + }, + "required": [ + "lujing_test_id", + "status" + ], + "title": "测试", + "type": "object" + } + } + } + } + } + } + } + }, + "_source_format": "dms", + "_dms_raw_record": { + "add_tree": "Y", + "create_user": "admin", + "domain": "wb_ml", + "flow_state": "7", + "id": "lujing_test.1.0.0", + "name": "lujing_test", + "title": "测试", + "type": "business-data", + "update_date": "2025-07-01 14:34:58", + "version": "1.0.0" + }, + "_test_mode": "scenario_only" + }, + "read": { + "method": "GET", + "path": "/api/dms/wb_ml/v1/lujing_test/1.0.0/{id}", + "title": "Read lujing_test", + "summary": "Read lujing_test", + "description": "Read lujing_test", + "operationId": "read_lujing_test", + "tags": [ + "wb_ml" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "description": "The ID of the lujing_test, maps to description", + "schema": { + "description": "一个简单的描述字段", + "title": "描述", + "type": "string" + } + } + ], + "requestBody": null, + "responses": { + "200": { + "description": "Successful Operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "data": { + "properties": { + "description": { + "description": "一个简单的描述字段", + "title": "描述", + "type": "string" + }, + "lujing_test_id": { + "description": "主键 for lujing_test", + "title": "主键", + "type": "string" + }, + "record_count": { + "maximum": 10000, + "minimum": 0, + "title": "记录数", + "type": "integer" + }, + "status": { + "enum": [ + "active", + "inactive", + "archived" + ], + "title": "状态", + "type": "string" + }, + "update_date": { + "format": "date-time", + "title": "更新日期", + "type": "string" + } + }, + "required": [ + "lujing_test_id", + "status" + ], + "title": "测试", + "type": "object" + } + } + } + } + } + } + }, + "_source_format": "dms", + "_dms_raw_record": { + "add_tree": "Y", + "create_user": "admin", + "domain": "wb_ml", + "flow_state": "7", + "id": "lujing_test.1.0.0", + "name": "lujing_test", + "title": "测试", + "type": "business-data", + "update_date": "2025-07-01 14:34:58", + "version": "1.0.0" + }, + "_test_mode": "scenario_only" + }, + "update": { + "method": "PUT", + "path": "/api/dms/wb_ml/v1/lujing_test", + "title": "Update lujing_test", + "summary": "Update lujing_test", + "description": "Update lujing_test", + "operationId": "update_lujing_test", + "tags": [ + "wb_ml" + ], + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "version": { + "type": "string", + "example": "1.0.0" + }, + "act": { + "type": "integer", + "example": 0 + }, + "data": { + "type": "array", + "items": { + "properties": { + "description": { + "description": "一个简单的描述字段", + "title": "描述", + "type": "string" + }, + "lujing_test_id": { + "description": "主键 for lujing_test", + "title": "主键", + "type": "string" + }, + "record_count": { + "maximum": 10000, + "minimum": 0, + "title": "记录数", + "type": "integer" + }, + "status": { + "enum": [ + "active", + "inactive", + "archived" + ], + "title": "状态", + "type": "string" + }, + "update_date": { + "format": "date-time", + "title": "更新日期", + "type": "string" + } + }, + "required": [ + "lujing_test_id", + "status" + ], + "title": "测试", + "type": "object" + } + } + }, + "required": [ + "data" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "data": { + "type": "boolean" + } + } + } + } + } + } + }, + "_source_format": "dms", + "_dms_raw_record": { + "add_tree": "Y", + "create_user": "admin", + "domain": "wb_ml", + "flow_state": "7", + "id": "lujing_test.1.0.0", + "name": "lujing_test", + "title": "测试", + "type": "business-data", + "update_date": "2025-07-01 14:34:58", + "version": "1.0.0" + }, + "_test_mode": "scenario_only" + }, + "delete": { + "method": "DELETE", + "path": "/api/dms/wb_ml/v1/lujing_test", + "title": "Delete lujing_test", + "summary": "Delete lujing_test", + "description": "Delete lujing_test", + "operationId": "delete_lujing_test", + "tags": [ + "wb_ml" + ], + "parameters": [], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "version": { + "type": "string", + "example": "1.0.0" + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "description": { + "description": "一个简单的描述字段", + "title": "描述", + "type": "string" + } + }, + "required": [ + "description" + ] + } + } + }, + "required": [ + "data" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "data": { + "type": "boolean" + } + } + } + } + } + } + }, + "_source_format": "dms", + "_dms_raw_record": { + "add_tree": "Y", + "create_user": "admin", + "domain": "wb_ml", + "flow_state": "7", + "id": "lujing_test.1.0.0", + "name": "lujing_test", + "title": "测试", + "type": "business-data", + "update_date": "2025-07-01 14:34:58", + "version": "1.0.0" + }, + "_test_mode": "scenario_only" + } + } + } + } + ], + "final_stage_context_summary": { + "pk_name": "description", + "pk_value": "b54b5f8c-01ac-49c2-a846-2bdb8454b087", + "current_payload": "Type: dict, Keys/Count: 1", + "update_payload": "Type: dict, Keys/Count: 1", + "scenario_endpoints": "Type: dict, Keys/Count: 5" + } + } + ], + "api_call_details_summary": [] +} \ No newline at end of file