From 0e3e721bc089fb9fc03222e46435219af2e18b68 Mon Sep 17 00:00:00 2001 From: gongwenxin Date: Wed, 21 May 2025 18:31:26 +0800 Subject: [PATCH] v0.1 --- .../__pycache__/basic_checks.cpython-312.pyc | Bin 5597 -> 5951 bytes custom_testcases/basic_checks.py | 11 +- .../test_case_registry.cpython-312.pyc | Bin 12963 -> 14153 bytes .../test_framework_core.cpython-312.pyc | Bin 10016 -> 13271 bytes .../test_orchestrator.cpython-312.pyc | Bin 77343 -> 79182 bytes ddms_compliance_suite/test_framework_core.py | 61 +- ddms_compliance_suite/test_orchestrator.py | 29 +- log.txt | 599 +++++++++--------- test_report.json | 88 +-- 9 files changed, 443 insertions(+), 345 deletions(-) diff --git a/custom_testcases/__pycache__/basic_checks.cpython-312.pyc b/custom_testcases/__pycache__/basic_checks.cpython-312.pyc index 7bd2f47300bd79ff4c59e804ee122e1515f11f5b..74bf19b36b53146ab6018050f22a1a0bd27c1691 100644 GIT binary patch delta 1801 zcmbVMT}&KR6ux(7c6avwe_7gM7h0%Wgf5VnMzKHqS!xz+sfli4rrVuMS-b4wodFAl zLL!OnLm$XZBhhFyF$&fg6CQm~pKPRwi_yePHTq=YTMg9uV5;ZLLJEz2aUQ-o-*?Zs zd*%A%DP6~SvMs%@+{Hh zd7{}Fy&+){Az6>5IzV-9Q@xY6l(H~)wlyW0a!(;|n9}jmq^S&!8HI8wSIk$dtEg;} z^;-+~j?Ze&tcQ7-Pg6QU2j;h!Ym)^m=H6sMi+L;-)x0dk!YndutHny+4(4Z37D0X3 zafJ+1EimuP#bj4oS4xE}b%C zuju8Hs^>@8XilBT6$@I?RcCfDqQOw(!GwDbuK zQmpwps7=sdTz(s-F49shmBmS^*=N52<@kW^K&8>SO;O%)Z81tFNy;^_OnDr##j13< zEee4tooB|f-IR4!9OkI-7y>4lE>+DJbGojoIO2f6bAf6yH_nnvz(oTMASLwThDXUSTWu*T->k%5ncS?ij0EW#7Pl$h%E}9Zuu1;FJGVAK2u7jX2(}C0;vFdJg z?8B`6;!pRXSu?;cvivw&NiB1YaUO(4Q$ANN7tMgG=1Qe9d;%=P*YOY*h7lqN=r&W* z4bELi@mzTl!HM7iFy&$a)~#NTBlm5ND$j~VRb8&9{Be+VJe*@Z1<3KhEx;oEbMc|4 z#aUB3H~3>+z4*bCO8+6-?9BF_w$$;Nv~>9W(j9{QOXFsD<YzE)3X4NGOD;Q z?-K_D$)Gjnst0k)mX&OvXrpQIb?9|^SUeZ*A9@P)ZPrElG{OLYDPLfdI)4Vjl+3po z8WWBH==je7?Io-2VPjKG;#+@A{2dO_-W7i<9Zex?m}l;N9@zJqW!BRpVpShk(18 zj!bV){|gy@0+oJ*lL&YX_)7@ra-KnWl*_H=w@eOg^Fhph9$>q%Pos$NBrYt9PovF8 z;|VZ!&7O)J{WZRSZV(O?P^}V=n$|usX%#7(UCdUe;^VP;5 z^lV)$%v&bhs=@1KDxITcZM?{i@ElOQhk6IV9f?wU&qip*b{FJ~?KbiMLYme{(}sMA W)-3MbAn@8aM;n10y-VO_ZTc@2)rp<} delta 1388 zcmb7^&2Jk;7{+II*K2Qf*Sr3RztX0zleAilO9&Jq5t=4#QWDAOM}k!O;zZsFMHo_M zorv!gT*54j`T#P<2%`O6$eYhhJ&Y}a7+qH>cg zQrBEJDls?8;;zLKuFaCHI}7hyRNdIRQc2w;AJ9sAmN@ZNe73RBSoTgWxol`~@YE$% z6RNZ-K9;V&Qfu$Uug(CXej-sqKBr%hhHoQo$!p|xh>$h9CT&aNy!;ZSpITWeiLc}= zmBsIJ(Nwl!8D3u!H-t{F+Tn!nYWs?k72-r@#F%ouXv6%L{1$6$DJ{ig^+k>jkD;wq ztF`)q=T)no0$S`UGc+egL;0QrNN*GHXOsLAF>i%`h-5Yo-m`v;4DU2US7fya&-nA= zS>$8}+u2eVE?;Kvxg54Ycn{)$n9~aSVH^%1j))JnaoQ)o(?)1|hjvX;wI6&ZBhKjq z>Oq{+E3WD|d7Q}VKv3C_I#H6p?U4r-fbK)msD38_ni~c)TSA=6u3`43kX0#L1 z1qm@-okbxvmTNMb#o7spLPFwxLK2V=tCbXwtfctW+&DYAYFsQ`VDB$8uTh#h{dYJ1 zkrX^rKPlhC;D0BDDq`NsYM~j9edI~;i8auh#$g7L2lx%o=kv|rta9RkRp>c^59R>> z?z(7(`oxQN-u6!^XednNM|T$NxEX5^D%VB5%>}E^N0yV4uO9jTt#4wLGk#@{0!m^KxeR~{Zvkai(BQ*I5njE$A(KBO)RI%^Fcb%*dpA2h?#9gM&4a=m+R~VzX%e; r?3Dn!GNtqniO{n26zsC}Gl}jg$7p)<&>n%?-aPFGG5VCi&41lrU4;** diff --git a/custom_testcases/basic_checks.py b/custom_testcases/basic_checks.py index f1abaa7..308f069 100644 --- a/custom_testcases/basic_checks.py +++ b/custom_testcases/basic_checks.py @@ -1,5 +1,6 @@ from ddms_compliance_suite.test_framework_core import BaseAPITestCase, TestSeverity, ValidationResult, APIRequestContext, APIResponseContext import logging +from typing import Dict, Any, Optional # 确保引入 Optional class StatusCode200Check(BaseAPITestCase): # 1. 元数据 @@ -11,13 +12,14 @@ class StatusCode200Check(BaseAPITestCase): # 适用于所有方法和路径 (默认) # applicable_methods = None # applicable_paths_regex = None + execution_order = 10 # 示例执行顺序 use_llm_for_body: bool = True use_llm_for_path_params: bool = True use_llm_for_query_params: bool = True use_llm_for_headers: bool = True - def __init__(self, endpoint_spec: dict, global_api_spec: dict): - super().__init__(endpoint_spec, global_api_spec) + def __init__(self, endpoint_spec: Dict[str, Any], global_api_spec: Dict[str, Any], json_schema_validator: Optional[Any] = None): + super().__init__(endpoint_spec, global_api_spec, json_schema_validator=json_schema_validator) self.logger.info(f"测试用例 {self.id} ({self.name}) 已针对端点 '{self.endpoint_spec.get('method')} {self.endpoint_spec.get('path')}' 初始化。") def validate_response(self, response_context: APIResponseContext, request_context: APIRequestContext) -> list[ValidationResult]: @@ -55,12 +57,13 @@ class HeaderExistenceCheck(BaseAPITestCase): description = "验证 API 响应是否包含 'X-Request-ID' 头。" severity = TestSeverity.MEDIUM tags = ["header", "observability"] + execution_order = 10 # 示例执行顺序 use_llm_for_body = False EXPECTED_HEADER = "X-Request-ID" # 示例,可以根据实际需要修改 - def __init__(self, endpoint_spec: dict, global_api_spec: dict): - super().__init__(endpoint_spec, global_api_spec) + def __init__(self, endpoint_spec: Dict[str, Any], global_api_spec: Dict[str, Any], json_schema_validator: Optional[Any] = None): + super().__init__(endpoint_spec, global_api_spec, json_schema_validator=json_schema_validator) self.logger.info(f"测试用例 {self.id} ({self.name}) 已初始化 for endpoint {self.endpoint_spec.get('path')}") def validate_response(self, response_context: APIResponseContext, request_context: APIRequestContext) -> list[ValidationResult]: diff --git a/ddms_compliance_suite/__pycache__/test_case_registry.cpython-312.pyc b/ddms_compliance_suite/__pycache__/test_case_registry.cpython-312.pyc index 200cc4c642be996dc2aa37abfed63023a164f687..b845ec30b42f0f675aae65d677b795cb03d0579b 100644 GIT binary patch delta 1896 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 delta 1147 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 diff --git a/ddms_compliance_suite/test_framework_core.py b/ddms_compliance_suite/test_framework_core.py index 2feabe1..63c208e 100644 --- a/ddms_compliance_suite/test_framework_core.py +++ b/ddms_compliance_suite/test_framework_core.py @@ -93,16 +93,18 @@ class BaseAPITestCase: use_llm_for_query_params: bool = False use_llm_for_headers: bool = False - def __init__(self, endpoint_spec: Dict[str, Any], global_api_spec: Dict[str, Any]): + def __init__(self, endpoint_spec: Dict[str, Any], global_api_spec: Dict[str, Any], json_schema_validator: Optional[Any] = None): """ 初始化测试用例。 Args: endpoint_spec: 当前被测API端点的详细定义 (来自YAPI/Swagger解析结果)。 global_api_spec: 完整的API规范文档 (来自YAPI/Swagger解析结果)。 + json_schema_validator: APITestOrchestrator 传入的 JSONSchemaValidator 实例 (可选)。 """ self.endpoint_spec = endpoint_spec self.global_api_spec = global_api_spec self.logger = logging.getLogger(f"testcase.{self.id}") + self.json_schema_validator = json_schema_validator # 存储传入的校验器实例 self.logger.debug(f"Test case '{self.id}' initialized for endpoint: {self.endpoint_spec.get('method', '')} {self.endpoint_spec.get('path', '')}") # --- 1. 请求生成与修改阶段 --- @@ -118,6 +120,21 @@ class BaseAPITestCase: self.logger.debug(f"Hook: generate_request_body, current body type: {type(current_body)}") return current_body + # --- 1.5. 请求URL修改阶段 (新增钩子) --- + def modify_request_url(self, current_url: str) -> str: + """ + 允许测试用例在请求发送前修改最终构建的URL。 + 默认不进行任何修改。 + + Args: + current_url: 由编排器构建的当前请求URL (已包含base_url和路径参数)。 + + Returns: + 最终要使用的URL。 + """ + self.logger.debug(f"Hook: modify_request_url, original URL: {current_url}") + return current_url + # --- 2. 请求预校验阶段 --- def validate_request_url(self, url: str, request_context: APIRequestContext) -> List[ValidationResult]: self.logger.debug(f"Hook: validate_request_url, url: {url}") @@ -141,6 +158,48 @@ class BaseAPITestCase: self.logger.debug(f"Hook: check_performance, elapsed: {response_context.elapsed_time}") return [] + # --- Helper methods --- + def validate_data_against_schema( + self, + data_to_validate: Any, + schema_definition: Dict[str, Any], + context_message_prefix: str = "Data" + ) -> List[ValidationResult]: + """ + 使用注入的 JSONSchemaValidator 针对给定的 schema 验证数据。 + Args: + data_to_validate: 要验证的数据 (通常是解析后的 JSON 对象)。 + schema_definition: JSON Schema 定义字典。 + context_message_prefix: 用于错误消息的上下文前缀。 + Returns: + 一个 ValidationResult 对象的列表。 + """ + results = [] + if not self.json_schema_validator: + self.logger.warning(f"JSONSchemaValidator 未注入到测试用例 '{self.id}'。无法执行 schema 验证。") + results.append(self.failed(f"{context_message_prefix} schema validation skipped: Validator not available.")) + return results + + is_valid, errors = self.json_schema_validator.validate(data_to_validate, schema_definition) + + if is_valid: + results.append(self.passed(f"{context_message_prefix} conforms to the JSON schema.")) + else: + error_messages = [] + if isinstance(errors, list): + for error in errors: # jsonschema.exceptions.ValidationError 对象 + error_messages.append(f"- Path: '{list(error.path)}', Message: {error.message}") # error.path 是一个deque + elif isinstance(errors, str): # 兼容旧版或简单错误字符串 + error_messages.append(errors) + + full_message = f"{context_message_prefix} does not conform to the JSON schema. Errors:\n" + "\n".join(error_messages) + results.append(self.failed( + message=full_message, + details={"schema_errors": error_messages, "validated_data_sample": str(data_to_validate)[:200]} + )) + self.logger.warning(f"{context_message_prefix} schema validation failed: {full_message}") + return results + # --- Helper to easily create a passed ValidationResult --- @staticmethod def passed(message: str, details: Optional[Dict[str, Any]] = None) -> ValidationResult: diff --git a/ddms_compliance_suite/test_orchestrator.py b/ddms_compliance_suite/test_orchestrator.py index 1393c48..c8d8539 100644 --- a/ddms_compliance_suite/test_orchestrator.py +++ b/ddms_compliance_suite/test_orchestrator.py @@ -665,7 +665,8 @@ class APITestOrchestrator: try: test_case_instance = test_case_class( endpoint_spec=endpoint_spec_dict, - global_api_spec=global_api_spec_dict + global_api_spec=global_api_spec_dict, + json_schema_validator=self.validator # <--- 注入 JSONSchemaValidator ) test_case_instance.logger.info(f"开始执行测试用例 '{test_case_instance.id}' for endpoint '{endpoint_spec_dict.get('method')} {endpoint_spec_dict.get('path')}'") @@ -694,9 +695,26 @@ class APITestOrchestrator: # 注意: 如果 _prepare_initial_request_data 填充的 final_url 已经包含了 base_url,这里的拼接逻辑需要调整 # 假设 final_url_template 只是 path string e.g. /users/{id} + # ---- 调用测试用例的 URL 修改钩子 ---- + effective_url = final_url # 默认使用原始构建的URL + if hasattr(test_case_instance, 'modify_request_url') and callable(getattr(test_case_instance, 'modify_request_url')): + try: + modified_url_by_tc = test_case_instance.modify_request_url(final_url) + if modified_url_by_tc != final_url: + test_case_instance.logger.info(f"Test case '{test_case_instance.id}' modified URL from '{final_url}' to '{modified_url_by_tc}'") + effective_url = modified_url_by_tc # 使用测试用例修改后的URL + else: + test_case_instance.logger.debug(f"Test case '{test_case_instance.id}' did not modify the URL via modify_request_url hook.") + except Exception as e_url_mod: + test_case_instance.logger.error(f"Error in test case '{test_case_instance.id}' during modify_request_url: {e_url_mod}. Using original URL '{final_url}'.", exc_info=True) + # effective_url 保持为 final_url + else: + test_case_instance.logger.debug(f"Test case '{test_case_instance.id}' does not have a callable modify_request_url method. Using original URL.") + # ---- 结束 URL 修改钩子调用 ---- + api_request_context = APIRequestContext( method=method, # 使用从 _prepare_initial_request_data 获取的 method - url=final_url, + url=effective_url, # <--- 使用 effective_url path_params=current_path_params, query_params=current_q_params, headers=current_headers, @@ -1156,8 +1174,13 @@ class APITestOrchestrator: global_api_spec=global_api_spec ) endpoint_test_result.add_executed_test_case_result(executed_case_result) + if executed_case_result.status.value == TestResult.Status.FAILED.value: + # 红色 + self.logger.debug(f"\033[91m ❌ 测试用例 '{tc_class.id}' 执行失败。\033[0m") + else: + self.logger.debug(f"\033[92m ✅ 测试用例 '{tc_class.id}' 执行成功。\033[0m") self.logger.debug(f"测试用例 '{tc_class.id}' 执行完毕,状态: {executed_case_result.status.value}") - + endpoint_test_result.finalize_endpoint_test() self.logger.info(f"端点 '{endpoint_id}' 测试完成,最终状态: {endpoint_test_result.overall_status.value}") diff --git a/log.txt b/log.txt index 3f11ff4..85177d8 100644 --- a/log.txt +++ b/log.txt @@ -1,298 +1,311 @@ -2025-05-21 17:04:17,210 - __main__ - DEBUG - 已启用详细日志模式 -2025-05-21 17:04:17,210 - __main__ - INFO - args.api_key: sk-0213c70194624703a1d0d80e0f762b0e -2025-05-21 17:04:17,210 - ddms_compliance_suite.test_orchestrator - INFO - 初始化 TestCaseRegistry,扫描目录: ./custom_testcases -2025-05-21 17:04:17,210 - ddms_compliance_suite.test_case_registry - INFO - 开始从目录 './custom_testcases' 发现测试用例... -2025-05-21 17:04:17,210 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: basic_checks 从 ./custom_testcases/basic_checks.py -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-HEADER-001' (检查响应中是否存在 'X-Request-ID' 头) 来自类 'HeaderExistenceCheck' -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-STATUS-001' (基本状态码 200 检查) 来自类 'StatusCode200Check' -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_case_registry - INFO - 测试用例发现完成。总共注册了 2 个独特的测试用例 (基于ID)。发现 2 个测试用例类。 -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - INFO - TestCaseRegistry 初始化完成,发现 2 个测试用例类。 -2025-05-21 17:04:17,211 - ddms_compliance_suite.llm_utils.llm_service - INFO - LLMService initialized for model 'qwen-plus' at https://dashscope.aliyuncs.com/compatible-mode/v1 -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - INFO - LLMService 已成功初始化,模型: qwen-plus。 -2025-05-21 17:04:17,211 - __main__ - INFO - 从Swagger文件运行测试: assets/doc/井筒API示例swagger_fixed_simple.json -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - INFO - 从Swagger文件加载API定义: assets/doc/井筒API示例swagger_fixed_simple.json -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。 -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。 -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。 -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。 -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。 -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。 -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。 -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。 -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。 -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。 -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}'。 -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}'。 -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} (数据推送接口) -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。 -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。 -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 发现了 2 个适用的测试用例: ['TC-HEADER-001', 'TC-STATUS-001'] -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-HEADER-001' for 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - DEBUG - Manually converting endpoint_spec of type SwaggerEndpoint to dict. -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - WARNING - global_api_spec无法转换为字典,实际类型: -2025-05-21 17:04:17,211 - testcase.TC-HEADER-001 - INFO - 测试用例 TC-HEADER-001 (检查响应中是否存在 'X-Request-ID' 头) 已初始化 for endpoint /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} -2025-05-21 17:04:17,211 - testcase.TC-HEADER-001 - INFO - 开始执行测试用例 'TC-HEADER-001' for endpoint 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - INFO - [] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 准备初始请求数据 (TC: TC-HEADER-001) -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点 'POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 的参数未在缓存中找到,开始生成。 -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为路径参数。 -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 path 参数。 -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'dms_instance_code' ('path' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'dms_instance_code', 'in': 'path', 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'required': True, 'type': 'string'} -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: path parameter 'dms_instance_code'): example_string -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'schema' ('path' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'schema', 'in': 'path', 'description': '', 'required': True, 'type': 'string'} -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: path parameter 'schema'): example_string -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'version' ('path' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'version', 'in': 'path', 'description': '', 'required': True, 'type': 'string'} -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: path parameter 'version'): example_string -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 path 参数: {'dms_instance_code': 'example_string', 'schema': 'example_string', 'version': 'example_string'} -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - INFO - [] 没有定义 query 参数。 -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为头部参数。 -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 header 参数。 -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'tenant-id' ('header' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'tenant-id', 'in': 'header', 'description': 'tenant-id (Only:undefined)', 'required': True, 'type': 'string'} -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: header parameter 'tenant-id'): example_string -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'Authorization' ('header' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'Authorization', 'in': 'header', 'description': 'Authorization (Only:undefined)', 'required': True, 'type': 'string'} -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: header parameter 'Authorization'): example_string -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 header 参数: {'tenant-id': 'example_string', 'Authorization': 'example_string'} -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点没有定义请求体。 -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点 'POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 的参数已生成并存入缓存。 -2025-05-21 17:04:17,211 - ddms_compliance_suite.test_orchestrator - DEBUG - [] (新生成) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_string', 'schema': 'example_string', 'version': 'example_string'}, query_params={}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=NoneType -2025-05-21 17:04:17,268 - testcase.TC-HEADER-001 - WARNING - 请求头 'X-Request-ID' 未在 http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_string/v1/message/push/example_string/example_string 的响应中找到。 -2025-05-21 17:04:17,268 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 失败 -2025-05-21 17:04:17,268 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' -2025-05-21 17:04:17,268 - ddms_compliance_suite.test_orchestrator - DEBUG - Manually converting endpoint_spec of type SwaggerEndpoint to dict. -2025-05-21 17:04:17,268 - ddms_compliance_suite.test_orchestrator - WARNING - global_api_spec无法转换为字典,实际类型: -2025-05-21 17:04:17,268 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 初始化。 -2025-05-21 17:04:17,268 - testcase.TC-STATUS-001 - INFO - 开始执行测试用例 'TC-STATUS-001' for endpoint 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' -2025-05-21 17:04:17,268 - ddms_compliance_suite.test_orchestrator - INFO - [] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 准备初始请求数据 (TC: TC-STATUS-001) -2025-05-21 17:04:17,268 - ddms_compliance_suite.test_orchestrator - INFO - [] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 的LLM参数。 -2025-05-21 17:04:17,268 - ddms_compliance_suite.test_orchestrator - DEBUG - [] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_string', 'schema': 'example_string', 'version': 'example_string'}, query_params={}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=NoneType -2025-05-21 17:04:17,310 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_string/v1/message/push/example_string/example_string -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过 -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 测试完成,最终状态: 部分成功 -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} (地质单元列表查询) -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。 -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。 -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 发现了 2 个适用的测试用例: ['TC-HEADER-001', 'TC-STATUS-001'] -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-HEADER-001' for 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - DEBUG - Manually converting endpoint_spec of type SwaggerEndpoint to dict. -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - WARNING - global_api_spec无法转换为字典,实际类型: -2025-05-21 17:04:17,310 - testcase.TC-HEADER-001 - INFO - 测试用例 TC-HEADER-001 (检查响应中是否存在 'X-Request-ID' 头) 已初始化 for endpoint /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} -2025-05-21 17:04:17,310 - testcase.TC-HEADER-001 - INFO - 开始执行测试用例 'TC-HEADER-001' for endpoint 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - INFO - [] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} 准备初始请求数据 (TC: TC-HEADER-001) -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 的参数未在缓存中找到,开始生成。 -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为路径参数。 -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 path 参数。 -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'dms_instance_code' ('path' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'dms_instance_code', 'in': 'path', 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'required': True, 'type': 'string'} -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: path parameter 'dms_instance_code'): example_string -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'version' ('path' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'version', 'in': 'path', 'description': '交换模型版本', 'required': True, 'type': 'string'} -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: path parameter 'version'): example_string -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 path 参数: {'dms_instance_code': 'example_string', 'version': 'example_string'} -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为查询参数。 -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 query 参数。 -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'pageNo' ('query' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'pageNo', 'in': 'query', 'required': False, 'description': '页码(从1开始)', 'type': 'string'} -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: query parameter 'pageNo'): example_string -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'pageSize' ('query' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'pageSize', 'in': 'query', 'required': False, 'description': '分页大小(最大值200)', 'type': 'string'} -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: query parameter 'pageSize'): example_string -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 query 参数: {'pageNo': 'example_string', 'pageSize': 'example_string'} -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为头部参数。 -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 header 参数。 -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'tenant-id' ('header' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'tenant-id', 'in': 'header', 'description': 'tenant-id (Only:undefined)', 'required': True, 'type': 'string'} -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: header parameter 'tenant-id'): example_string -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'Authorization' ('header' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'Authorization', 'in': 'header', 'description': 'Authorization (Only:undefined)', 'required': True, 'type': 'string'} -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: header parameter 'Authorization'): example_string -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 header 参数: {'tenant-id': 'example_string', 'Authorization': 'example_string'} -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点没有定义请求体。 -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 的参数已生成并存入缓存。 -2025-05-21 17:04:17,310 - ddms_compliance_suite.test_orchestrator - DEBUG - [] (新生成) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_string', 'version': 'example_string'}, query_params={'pageNo': 'example_string', 'pageSize': 'example_string'}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=NoneType -2025-05-21 17:04:17,353 - testcase.TC-HEADER-001 - WARNING - 请求头 'X-Request-ID' 未在 http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_string/v1/cd_geo_unit/example_string 的响应中找到。 -2025-05-21 17:04:17,353 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 失败 -2025-05-21 17:04:17,353 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' -2025-05-21 17:04:17,353 - ddms_compliance_suite.test_orchestrator - DEBUG - Manually converting endpoint_spec of type SwaggerEndpoint to dict. -2025-05-21 17:04:17,353 - ddms_compliance_suite.test_orchestrator - WARNING - global_api_spec无法转换为字典,实际类型: -2025-05-21 17:04:17,353 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 初始化。 -2025-05-21 17:04:17,353 - testcase.TC-STATUS-001 - INFO - 开始执行测试用例 'TC-STATUS-001' for endpoint 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' -2025-05-21 17:04:17,353 - ddms_compliance_suite.test_orchestrator - INFO - [] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} 准备初始请求数据 (TC: TC-STATUS-001) -2025-05-21 17:04:17,353 - ddms_compliance_suite.test_orchestrator - INFO - [] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 的LLM参数。 -2025-05-21 17:04:17,353 - ddms_compliance_suite.test_orchestrator - DEBUG - [] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_string', 'version': 'example_string'}, query_params={'pageNo': 'example_string', 'pageSize': 'example_string'}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=NoneType -2025-05-21 17:04:17,390 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_string/v1/cd_geo_unit/example_string -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过 -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 测试完成,最终状态: 部分成功 -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit (地质单元数据修改) -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。 -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。 -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit' 发现了 2 个适用的测试用例: ['TC-HEADER-001', 'TC-STATUS-001'] -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-HEADER-001' for 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit' -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_orchestrator - DEBUG - Manually converting endpoint_spec of type SwaggerEndpoint to dict. -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_orchestrator - WARNING - global_api_spec无法转换为字典,实际类型: -2025-05-21 17:04:17,391 - testcase.TC-HEADER-001 - INFO - 测试用例 TC-HEADER-001 (检查响应中是否存在 'X-Request-ID' 头) 已初始化 for endpoint /api/dms/{dms_instance_code}/v1/cd_geo_unit -2025-05-21 17:04:17,391 - testcase.TC-HEADER-001 - INFO - 开始执行测试用例 'TC-HEADER-001' for endpoint 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit' -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_orchestrator - INFO - [] 开始为端点 PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-HEADER-001) -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点 'PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的参数未在缓存中找到,开始生成。 -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为路径参数。 -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 path 参数。 -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'dms_instance_code' ('path' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'dms_instance_code', 'in': 'path', 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'required': True, 'type': 'string'} -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: path parameter 'dms_instance_code'): example_string -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 path 参数: {'dms_instance_code': 'example_string'} -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为查询参数。 -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 query 参数。 -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'id' ('query' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'id', 'in': 'query', 'required': True, 'description': '主键id的key', 'type': 'string'} -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: query parameter 'id'): example_string -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 query 参数: {'id': 'example_string'} -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为头部参数。 -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 header 参数。 -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'tenant-id' ('header' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'tenant-id', 'in': 'header', 'description': 'tenant-id (Only:undefined)', 'required': True, 'type': 'string'} -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: header parameter 'tenant-id'): example_string -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'Authorization' ('header' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'Authorization', 'in': 'header', 'description': 'Authorization (Only:undefined)', 'required': True, 'type': 'string'} -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: header parameter 'Authorization'): example_string -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 header 参数: {'tenant-id': 'example_string', 'Authorization': 'example_string'} -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点没有定义请求体。 -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点 'PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的参数已生成并存入缓存。 -2025-05-21 17:04:17,391 - ddms_compliance_suite.test_orchestrator - DEBUG - [] (新生成) 准备的请求数据: method=PUT, path_params={'dms_instance_code': 'example_string'}, query_params={'id': 'example_string'}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=NoneType -2025-05-21 17:04:17,406 - testcase.TC-HEADER-001 - WARNING - 请求头 'X-Request-ID' 未在 http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_string/v1/cd_geo_unit 的响应中找到。 -2025-05-21 17:04:17,406 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 失败 -2025-05-21 17:04:17,406 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit' -2025-05-21 17:04:17,406 - ddms_compliance_suite.test_orchestrator - DEBUG - Manually converting endpoint_spec of type SwaggerEndpoint to dict. -2025-05-21 17:04:17,406 - ddms_compliance_suite.test_orchestrator - WARNING - global_api_spec无法转换为字典,实际类型: -2025-05-21 17:04:17,406 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit' 初始化。 -2025-05-21 17:04:17,406 - testcase.TC-STATUS-001 - INFO - 开始执行测试用例 'TC-STATUS-001' for endpoint 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit' -2025-05-21 17:04:17,406 - ddms_compliance_suite.test_orchestrator - INFO - [] 开始为端点 PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-STATUS-001) -2025-05-21 17:04:17,406 - ddms_compliance_suite.test_orchestrator - INFO - [] 从缓存加载了端点 'PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。 -2025-05-21 17:04:17,406 - ddms_compliance_suite.test_orchestrator - DEBUG - [] (缓存加载) 准备的请求数据: method=PUT, path_params={'dms_instance_code': 'example_string'}, query_params={'id': 'example_string'}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=NoneType -2025-05-21 17:04:17,427 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_string/v1/cd_geo_unit -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过 -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit' 测试完成,最终状态: 部分成功 -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit (地质单元数据删除) -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。 -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。 -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit' 发现了 2 个适用的测试用例: ['TC-HEADER-001', 'TC-STATUS-001'] -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-HEADER-001' for 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit' -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_orchestrator - DEBUG - Manually converting endpoint_spec of type SwaggerEndpoint to dict. -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_orchestrator - WARNING - global_api_spec无法转换为字典,实际类型: -2025-05-21 17:04:17,427 - testcase.TC-HEADER-001 - INFO - 测试用例 TC-HEADER-001 (检查响应中是否存在 'X-Request-ID' 头) 已初始化 for endpoint /api/dms/{dms_instance_code}/v1/cd_geo_unit -2025-05-21 17:04:17,427 - testcase.TC-HEADER-001 - INFO - 开始执行测试用例 'TC-HEADER-001' for endpoint 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit' -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_orchestrator - INFO - [] 开始为端点 DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-HEADER-001) -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点 'DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的参数未在缓存中找到,开始生成。 -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为路径参数。 -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 path 参数。 -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'dms_instance_code' ('path' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'dms_instance_code', 'in': 'path', 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'required': True, 'type': 'string'} -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: path parameter 'dms_instance_code'): example_string -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 path 参数: {'dms_instance_code': 'example_string'} -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为查询参数。 -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 query 参数。 -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'id' ('query' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'id', 'in': 'query', 'required': True, 'description': '主键id的key', 'type': 'string'} -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: query parameter 'id'): example_string -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 query 参数: {'id': 'example_string'} -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为头部参数。 -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 header 参数。 -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'tenant-id' ('header' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'tenant-id', 'in': 'header', 'description': 'tenant-id (Only:undefined)', 'required': True, 'type': 'string'} -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: header parameter 'tenant-id'): example_string -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'Authorization' ('header' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'Authorization', 'in': 'header', 'description': 'Authorization (Only:undefined)', 'required': True, 'type': 'string'} -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: header parameter 'Authorization'): example_string -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 header 参数: {'tenant-id': 'example_string', 'Authorization': 'example_string'} -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点没有定义请求体。 -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点 'DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的参数已生成并存入缓存。 -2025-05-21 17:04:17,427 - ddms_compliance_suite.test_orchestrator - DEBUG - [] (新生成) 准备的请求数据: method=DELETE, path_params={'dms_instance_code': 'example_string'}, query_params={'id': 'example_string'}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=NoneType -2025-05-21 17:04:17,443 - testcase.TC-HEADER-001 - WARNING - 请求头 'X-Request-ID' 未在 http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_string/v1/cd_geo_unit 的响应中找到。 -2025-05-21 17:04:17,443 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 失败 -2025-05-21 17:04:17,443 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit' -2025-05-21 17:04:17,443 - ddms_compliance_suite.test_orchestrator - DEBUG - Manually converting endpoint_spec of type SwaggerEndpoint to dict. -2025-05-21 17:04:17,443 - ddms_compliance_suite.test_orchestrator - WARNING - global_api_spec无法转换为字典,实际类型: -2025-05-21 17:04:17,443 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit' 初始化。 -2025-05-21 17:04:17,443 - testcase.TC-STATUS-001 - INFO - 开始执行测试用例 'TC-STATUS-001' for endpoint 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit' -2025-05-21 17:04:17,443 - ddms_compliance_suite.test_orchestrator - INFO - [] 开始为端点 DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-STATUS-001) -2025-05-21 17:04:17,443 - ddms_compliance_suite.test_orchestrator - INFO - [] 从缓存加载了端点 'DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。 -2025-05-21 17:04:17,443 - ddms_compliance_suite.test_orchestrator - DEBUG - [] (缓存加载) 准备的请求数据: method=DELETE, path_params={'dms_instance_code': 'example_string'}, query_params={'id': 'example_string'}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=NoneType -2025-05-21 17:04:17,457 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_string/v1/cd_geo_unit -2025-05-21 17:04:17,457 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过 -2025-05-21 17:04:17,457 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit' 测试完成,最终状态: 部分成功 -2025-05-21 17:04:17,457 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: POST /api/dms/{dms_instance_code}/v1/cd_geo_unit (地质单元数据添加) -2025-05-21 17:04:17,457 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。 -2025-05-21 17:04:17,457 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。 -2025-05-21 17:04:17,457 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit' 发现了 2 个适用的测试用例: ['TC-HEADER-001', 'TC-STATUS-001'] -2025-05-21 17:04:17,457 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-HEADER-001' for 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit' -2025-05-21 17:04:17,457 - ddms_compliance_suite.test_orchestrator - DEBUG - Manually converting endpoint_spec of type SwaggerEndpoint to dict. -2025-05-21 17:04:17,457 - ddms_compliance_suite.test_orchestrator - WARNING - global_api_spec无法转换为字典,实际类型: -2025-05-21 17:04:17,457 - testcase.TC-HEADER-001 - INFO - 测试用例 TC-HEADER-001 (检查响应中是否存在 'X-Request-ID' 头) 已初始化 for endpoint /api/dms/{dms_instance_code}/v1/cd_geo_unit -2025-05-21 17:04:17,457 - testcase.TC-HEADER-001 - INFO - 开始执行测试用例 'TC-HEADER-001' for endpoint 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit' -2025-05-21 17:04:17,457 - ddms_compliance_suite.test_orchestrator - INFO - [] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-HEADER-001) -2025-05-21 17:04:17,457 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的参数未在缓存中找到,开始生成。 -2025-05-21 17:04:17,457 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为路径参数。 -2025-05-21 17:04:17,457 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 path 参数。 -2025-05-21 17:04:17,457 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'dms_instance_code' ('path' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'dms_instance_code', 'in': 'path', 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'required': True, 'type': 'string'} -2025-05-21 17:04:17,457 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: path parameter 'dms_instance_code'): example_string -2025-05-21 17:04:17,457 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 path 参数: {'dms_instance_code': 'example_string'} -2025-05-21 17:04:17,457 - ddms_compliance_suite.test_orchestrator - INFO - [] 没有定义 query 参数。 -2025-05-21 17:04:17,457 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为头部参数。 -2025-05-21 17:04:17,458 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 header 参数。 -2025-05-21 17:04:17,458 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'tenant-id' ('header' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'tenant-id', 'in': 'header', 'description': 'tenant-id (Only:undefined)', 'required': True, 'type': 'string'} -2025-05-21 17:04:17,458 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: header parameter 'tenant-id'): example_string -2025-05-21 17:04:17,458 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'Authorization' ('header' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'Authorization', 'in': 'header', 'description': 'Authorization (Only:undefined)', 'required': True, 'type': 'string'} -2025-05-21 17:04:17,458 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: header parameter 'Authorization'): example_string -2025-05-21 17:04:17,458 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 header 参数: {'tenant-id': 'example_string', 'Authorization': 'example_string'} -2025-05-21 17:04:17,458 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点没有定义请求体。 -2025-05-21 17:04:17,458 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的参数已生成并存入缓存。 -2025-05-21 17:04:17,458 - ddms_compliance_suite.test_orchestrator - DEBUG - [] (新生成) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_string'}, query_params={}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=NoneType -2025-05-21 17:04:17,473 - testcase.TC-HEADER-001 - WARNING - 请求头 'X-Request-ID' 未在 http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_string/v1/cd_geo_unit 的响应中找到。 -2025-05-21 17:04:17,473 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 失败 -2025-05-21 17:04:17,473 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit' -2025-05-21 17:04:17,473 - ddms_compliance_suite.test_orchestrator - DEBUG - Manually converting endpoint_spec of type SwaggerEndpoint to dict. -2025-05-21 17:04:17,473 - ddms_compliance_suite.test_orchestrator - WARNING - global_api_spec无法转换为字典,实际类型: -2025-05-21 17:04:17,473 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit' 初始化。 -2025-05-21 17:04:17,473 - testcase.TC-STATUS-001 - INFO - 开始执行测试用例 'TC-STATUS-001' for endpoint 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit' -2025-05-21 17:04:17,473 - ddms_compliance_suite.test_orchestrator - INFO - [] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-STATUS-001) -2025-05-21 17:04:17,473 - ddms_compliance_suite.test_orchestrator - INFO - [] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。 -2025-05-21 17:04:17,473 - ddms_compliance_suite.test_orchestrator - DEBUG - [] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_string'}, query_params={}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=NoneType -2025-05-21 17:04:17,489 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_string/v1/cd_geo_unit -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过 -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit' 测试完成,最终状态: 部分成功 -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id} (地质单元查询详情) -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}'。 -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}'。 -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}' 发现了 2 个适用的测试用例: ['TC-HEADER-001', 'TC-STATUS-001'] -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-HEADER-001' for 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}' -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_orchestrator - DEBUG - Manually converting endpoint_spec of type SwaggerEndpoint to dict. -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_orchestrator - WARNING - global_api_spec无法转换为字典,实际类型: -2025-05-21 17:04:17,489 - testcase.TC-HEADER-001 - INFO - 测试用例 TC-HEADER-001 (检查响应中是否存在 'X-Request-ID' 头) 已初始化 for endpoint /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id} -2025-05-21 17:04:17,489 - testcase.TC-HEADER-001 - INFO - 开始执行测试用例 'TC-HEADER-001' for endpoint 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}' -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_orchestrator - INFO - [] 开始为端点 GET_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id} 准备初始请求数据 (TC: TC-HEADER-001) -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点 'GET_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}' 的参数未在缓存中找到,开始生成。 -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为路径参数。 -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 path 参数。 -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'dms_instance_code' ('path' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'dms_instance_code', 'in': 'path', 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'required': True, 'type': 'string'} -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: path parameter 'dms_instance_code'): example_string -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'version' ('path' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'version', 'in': 'path', 'description': '交换模型版本', 'required': True, 'type': 'string'} -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: path parameter 'version'): example_string -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'id' ('path' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'id', 'in': 'path', 'description': '', 'required': True, 'type': 'string'} -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: path parameter 'id'): example_string -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 path 参数: {'dms_instance_code': 'example_string', 'version': 'example_string', 'id': 'example_string'} -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_orchestrator - INFO - [] 没有定义 query 参数。 -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为头部参数。 -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 header 参数。 -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'tenant-id' ('header' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'tenant-id', 'in': 'header', 'description': 'tenant-id (Only:undefined)', 'required': True, 'type': 'string'} -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: header parameter 'tenant-id'): example_string -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'Authorization' ('header' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'Authorization', 'in': 'header', 'description': 'Authorization (Only:undefined)', 'required': True, 'type': 'string'} -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: header parameter 'Authorization'): example_string -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 header 参数: {'tenant-id': 'example_string', 'Authorization': 'example_string'} -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点没有定义请求体。 -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点 'GET_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}' 的参数已生成并存入缓存。 -2025-05-21 17:04:17,489 - ddms_compliance_suite.test_orchestrator - DEBUG - [] (新生成) 准备的请求数据: method=GET, path_params={'dms_instance_code': 'example_string', 'version': 'example_string', 'id': 'example_string'}, query_params={}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=NoneType -2025-05-21 17:04:17,502 - testcase.TC-HEADER-001 - WARNING - 请求头 'X-Request-ID' 未在 http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_string/v1/cd_geo_unit/example_string/example_string 的响应中找到。 -2025-05-21 17:04:17,502 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 失败 -2025-05-21 17:04:17,502 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}' -2025-05-21 17:04:17,502 - ddms_compliance_suite.test_orchestrator - DEBUG - Manually converting endpoint_spec of type SwaggerEndpoint to dict. -2025-05-21 17:04:17,502 - ddms_compliance_suite.test_orchestrator - WARNING - global_api_spec无法转换为字典,实际类型: -2025-05-21 17:04:17,502 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}' 初始化。 -2025-05-21 17:04:17,502 - testcase.TC-STATUS-001 - INFO - 开始执行测试用例 'TC-STATUS-001' for endpoint 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}' -2025-05-21 17:04:17,502 - ddms_compliance_suite.test_orchestrator - INFO - [] 开始为端点 GET_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id} 准备初始请求数据 (TC: TC-STATUS-001) -2025-05-21 17:04:17,502 - ddms_compliance_suite.test_orchestrator - INFO - [] 从缓存加载了端点 'GET_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}' 的LLM参数。 -2025-05-21 17:04:17,502 - ddms_compliance_suite.test_orchestrator - DEBUG - [] (缓存加载) 准备的请求数据: method=GET, path_params={'dms_instance_code': 'example_string', 'version': 'example_string', 'id': 'example_string'}, query_params={}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=NoneType -2025-05-21 17:04:17,518 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_string/v1/cd_geo_unit/example_string/example_string -2025-05-21 17:04:17,518 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过 -2025-05-21 17:04:17,518 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}' 测试完成,最终状态: 部分成功 -2025-05-21 17:04:17,519 - __main__ - INFO - 测试结果已保存为JSON: test_report.json +2025-05-21 18:30:41,316 - __main__ - DEBUG - 已启用详细日志模式 +2025-05-21 18:30:41,316 - __main__ - INFO - args.api_key: sk-0213c70194624703a1d0d80e0f762b0e +2025-05-21 18:30:41,316 - ddms_compliance_suite.test_orchestrator - INFO - 初始化 TestCaseRegistry,扫描目录: ./custom_testcases +2025-05-21 18:30:41,316 - ddms_compliance_suite.test_case_registry - INFO - 开始从目录 './custom_testcases' 发现测试用例... +2025-05-21 18:30:41,316 - ddms_compliance_suite.test_case_registry - DEBUG - 成功导入模块: basic_checks 从 ./custom_testcases/basic_checks.py +2025-05-21 18:30:41,316 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-HEADER-001' (检查响应中是否存在 'X-Request-ID' 头) 来自类 'HeaderExistenceCheck' +2025-05-21 18:30:41,316 - ddms_compliance_suite.test_case_registry - INFO - 已注册测试用例: 'TC-STATUS-001' (基本状态码 200 检查) 来自类 'StatusCode200Check' +2025-05-21 18:30:41,316 - ddms_compliance_suite.test_case_registry - INFO - 已根据 execution_order (主要) 和类名 (次要) 对 2 个测试用例类进行了排序。 +2025-05-21 18:30:41,316 - ddms_compliance_suite.test_case_registry - INFO - 测试用例发现完成。总共注册了 2 个独特的测试用例 (基于ID)。发现并排序了 2 个测试用例类。 +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_orchestrator - INFO - TestCaseRegistry 初始化完成,发现 2 个测试用例类。 +2025-05-21 18:30:41,317 - ddms_compliance_suite.llm_utils.llm_service - INFO - LLMService initialized for model 'qwen-plus' at https://dashscope.aliyuncs.com/compatible-mode/v1 +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_orchestrator - INFO - LLMService 已成功初始化,模型: qwen-plus。 +2025-05-21 18:30:41,317 - __main__ - INFO - 从Swagger文件运行测试: assets/doc/井筒API示例swagger_fixed_simple.json +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_orchestrator - INFO - 从Swagger文件加载API定义: assets/doc/井筒API示例swagger_fixed_simple.json +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。 +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。 +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。 +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。 +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。 +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。 +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。 +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。 +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。 +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。 +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}'。 +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}'。 +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} (数据推送接口) +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。 +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}'。 +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 发现了 2 个适用的测试用例: ['TC-HEADER-001', 'TC-STATUS-001'] +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-HEADER-001' for 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_orchestrator - DEBUG - Manually converting endpoint_spec of type SwaggerEndpoint to dict. +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_orchestrator - WARNING - global_api_spec无法转换为字典,实际类型: +2025-05-21 18:30:41,317 - testcase.TC-HEADER-001 - INFO - 测试用例 TC-HEADER-001 (检查响应中是否存在 'X-Request-ID' 头) 已初始化 for endpoint /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} +2025-05-21 18:30:41,317 - testcase.TC-HEADER-001 - INFO - 开始执行测试用例 'TC-HEADER-001' for endpoint 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_orchestrator - INFO - [] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 准备初始请求数据 (TC: TC-HEADER-001) +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点 'POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 的参数未在缓存中找到,开始生成。 +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为路径参数。 +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 path 参数。 +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'dms_instance_code' ('path' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'dms_instance_code', 'in': 'path', 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'required': True, 'type': 'string'} +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: path parameter 'dms_instance_code'): example_string +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'schema' ('path' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'schema', 'in': 'path', 'description': '', 'required': True, 'type': 'string'} +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: path parameter 'schema'): example_string +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'version' ('path' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'version', 'in': 'path', 'description': '', 'required': True, 'type': 'string'} +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: path parameter 'version'): example_string +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 path 参数: {'dms_instance_code': 'example_string', 'schema': 'example_string', 'version': 'example_string'} +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_orchestrator - INFO - [] 没有定义 query 参数。 +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为头部参数。 +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 header 参数。 +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'tenant-id' ('header' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'tenant-id', 'in': 'header', 'description': 'tenant-id (Only:undefined)', 'required': True, 'type': 'string'} +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: header parameter 'tenant-id'): example_string +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'Authorization' ('header' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'Authorization', 'in': 'header', 'description': 'Authorization (Only:undefined)', 'required': True, 'type': 'string'} +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: header parameter 'Authorization'): example_string +2025-05-21 18:30:41,317 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 header 参数: {'tenant-id': 'example_string', 'Authorization': 'example_string'} +2025-05-21 18:30:41,318 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点没有定义请求体。 +2025-05-21 18:30:41,318 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点 'POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 的参数已生成并存入缓存。 +2025-05-21 18:30:41,318 - ddms_compliance_suite.test_orchestrator - DEBUG - [] (新生成) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_string', 'schema': 'example_string', 'version': 'example_string'}, query_params={}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=NoneType +2025-05-21 18:30:41,390 - testcase.TC-HEADER-001 - WARNING - 请求头 'X-Request-ID' 未在 http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_string/v1/message/push/example_string/example_string 的响应中找到。 +2025-05-21 18:30:41,390 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-HEADER-001' 执行失败。 +2025-05-21 18:30:41,390 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 失败 +2025-05-21 18:30:41,390 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' +2025-05-21 18:30:41,390 - ddms_compliance_suite.test_orchestrator - DEBUG - Manually converting endpoint_spec of type SwaggerEndpoint to dict. +2025-05-21 18:30:41,390 - ddms_compliance_suite.test_orchestrator - WARNING - global_api_spec无法转换为字典,实际类型: +2025-05-21 18:30:41,390 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 初始化。 +2025-05-21 18:30:41,390 - testcase.TC-STATUS-001 - INFO - 开始执行测试用例 'TC-STATUS-001' for endpoint 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' +2025-05-21 18:30:41,390 - ddms_compliance_suite.test_orchestrator - INFO - [] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version} 准备初始请求数据 (TC: TC-STATUS-001) +2025-05-21 18:30:41,390 - ddms_compliance_suite.test_orchestrator - INFO - [] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 的LLM参数。 +2025-05-21 18:30:41,390 - ddms_compliance_suite.test_orchestrator - DEBUG - [] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_string', 'schema': 'example_string', 'version': 'example_string'}, query_params={}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=NoneType +2025-05-21 18:30:41,491 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_string/v1/message/push/example_string/example_string +2025-05-21 18:30:41,491 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-STATUS-001' 执行成功。 +2025-05-21 18:30:41,491 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过 +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}' 测试完成,最终状态: 部分成功 +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} (地质单元列表查询) +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。 +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}'。 +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 发现了 2 个适用的测试用例: ['TC-HEADER-001', 'TC-STATUS-001'] +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-HEADER-001' for 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - DEBUG - Manually converting endpoint_spec of type SwaggerEndpoint to dict. +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - WARNING - global_api_spec无法转换为字典,实际类型: +2025-05-21 18:30:41,492 - testcase.TC-HEADER-001 - INFO - 测试用例 TC-HEADER-001 (检查响应中是否存在 'X-Request-ID' 头) 已初始化 for endpoint /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} +2025-05-21 18:30:41,492 - testcase.TC-HEADER-001 - INFO - 开始执行测试用例 'TC-HEADER-001' for endpoint 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - INFO - [] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} 准备初始请求数据 (TC: TC-HEADER-001) +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 的参数未在缓存中找到,开始生成。 +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为路径参数。 +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 path 参数。 +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'dms_instance_code' ('path' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'dms_instance_code', 'in': 'path', 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'required': True, 'type': 'string'} +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: path parameter 'dms_instance_code'): example_string +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'version' ('path' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'version', 'in': 'path', 'description': '交换模型版本', 'required': True, 'type': 'string'} +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: path parameter 'version'): example_string +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 path 参数: {'dms_instance_code': 'example_string', 'version': 'example_string'} +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为查询参数。 +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 query 参数。 +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'pageNo' ('query' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'pageNo', 'in': 'query', 'required': False, 'description': '页码(从1开始)', 'type': 'string'} +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: query parameter 'pageNo'): example_string +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'pageSize' ('query' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'pageSize', 'in': 'query', 'required': False, 'description': '分页大小(最大值200)', 'type': 'string'} +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: query parameter 'pageSize'): example_string +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 query 参数: {'pageNo': 'example_string', 'pageSize': 'example_string'} +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为头部参数。 +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 header 参数。 +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'tenant-id' ('header' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'tenant-id', 'in': 'header', 'description': 'tenant-id (Only:undefined)', 'required': True, 'type': 'string'} +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: header parameter 'tenant-id'): example_string +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'Authorization' ('header' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'Authorization', 'in': 'header', 'description': 'Authorization (Only:undefined)', 'required': True, 'type': 'string'} +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: header parameter 'Authorization'): example_string +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 header 参数: {'tenant-id': 'example_string', 'Authorization': 'example_string'} +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点没有定义请求体。 +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 的参数已生成并存入缓存。 +2025-05-21 18:30:41,492 - ddms_compliance_suite.test_orchestrator - DEBUG - [] (新生成) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_string', 'version': 'example_string'}, query_params={'pageNo': 'example_string', 'pageSize': 'example_string'}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=NoneType +2025-05-21 18:30:41,517 - testcase.TC-HEADER-001 - WARNING - 请求头 'X-Request-ID' 未在 http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_string/v1/cd_geo_unit/example_string 的响应中找到。 +2025-05-21 18:30:41,518 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-HEADER-001' 执行失败。 +2025-05-21 18:30:41,518 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 失败 +2025-05-21 18:30:41,518 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' +2025-05-21 18:30:41,518 - ddms_compliance_suite.test_orchestrator - DEBUG - Manually converting endpoint_spec of type SwaggerEndpoint to dict. +2025-05-21 18:30:41,518 - ddms_compliance_suite.test_orchestrator - WARNING - global_api_spec无法转换为字典,实际类型: +2025-05-21 18:30:41,518 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 初始化。 +2025-05-21 18:30:41,518 - testcase.TC-STATUS-001 - INFO - 开始执行测试用例 'TC-STATUS-001' for endpoint 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' +2025-05-21 18:30:41,518 - ddms_compliance_suite.test_orchestrator - INFO - [] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version} 准备初始请求数据 (TC: TC-STATUS-001) +2025-05-21 18:30:41,518 - ddms_compliance_suite.test_orchestrator - INFO - [] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 的LLM参数。 +2025-05-21 18:30:41,518 - ddms_compliance_suite.test_orchestrator - DEBUG - [] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_string', 'version': 'example_string'}, query_params={'pageNo': 'example_string', 'pageSize': 'example_string'}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=NoneType +2025-05-21 18:30:41,539 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_string/v1/cd_geo_unit/example_string +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-STATUS-001' 执行成功。 +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过 +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}' 测试完成,最终状态: 部分成功 +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit (地质单元数据修改) +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。 +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit'。 +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit' 发现了 2 个适用的测试用例: ['TC-HEADER-001', 'TC-STATUS-001'] +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-HEADER-001' for 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit' +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - DEBUG - Manually converting endpoint_spec of type SwaggerEndpoint to dict. +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - WARNING - global_api_spec无法转换为字典,实际类型: +2025-05-21 18:30:41,539 - testcase.TC-HEADER-001 - INFO - 测试用例 TC-HEADER-001 (检查响应中是否存在 'X-Request-ID' 头) 已初始化 for endpoint /api/dms/{dms_instance_code}/v1/cd_geo_unit +2025-05-21 18:30:41,539 - testcase.TC-HEADER-001 - INFO - 开始执行测试用例 'TC-HEADER-001' for endpoint 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit' +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - INFO - [] 开始为端点 PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-HEADER-001) +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点 'PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的参数未在缓存中找到,开始生成。 +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为路径参数。 +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 path 参数。 +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'dms_instance_code' ('path' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'dms_instance_code', 'in': 'path', 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'required': True, 'type': 'string'} +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: path parameter 'dms_instance_code'): example_string +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 path 参数: {'dms_instance_code': 'example_string'} +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为查询参数。 +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 query 参数。 +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'id' ('query' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'id', 'in': 'query', 'required': True, 'description': '主键id的key', 'type': 'string'} +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: query parameter 'id'): example_string +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 query 参数: {'id': 'example_string'} +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为头部参数。 +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 header 参数。 +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'tenant-id' ('header' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'tenant-id', 'in': 'header', 'description': 'tenant-id (Only:undefined)', 'required': True, 'type': 'string'} +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: header parameter 'tenant-id'): example_string +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'Authorization' ('header' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'Authorization', 'in': 'header', 'description': 'Authorization (Only:undefined)', 'required': True, 'type': 'string'} +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: header parameter 'Authorization'): example_string +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 header 参数: {'tenant-id': 'example_string', 'Authorization': 'example_string'} +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点没有定义请求体。 +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点 'PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的参数已生成并存入缓存。 +2025-05-21 18:30:41,539 - ddms_compliance_suite.test_orchestrator - DEBUG - [] (新生成) 准备的请求数据: method=PUT, path_params={'dms_instance_code': 'example_string'}, query_params={'id': 'example_string'}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=NoneType +2025-05-21 18:30:41,557 - testcase.TC-HEADER-001 - WARNING - 请求头 'X-Request-ID' 未在 http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_string/v1/cd_geo_unit 的响应中找到。 +2025-05-21 18:30:41,557 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-HEADER-001' 执行失败。 +2025-05-21 18:30:41,557 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 失败 +2025-05-21 18:30:41,557 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit' +2025-05-21 18:30:41,557 - ddms_compliance_suite.test_orchestrator - DEBUG - Manually converting endpoint_spec of type SwaggerEndpoint to dict. +2025-05-21 18:30:41,557 - ddms_compliance_suite.test_orchestrator - WARNING - global_api_spec无法转换为字典,实际类型: +2025-05-21 18:30:41,557 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit' 初始化。 +2025-05-21 18:30:41,557 - testcase.TC-STATUS-001 - INFO - 开始执行测试用例 'TC-STATUS-001' for endpoint 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit' +2025-05-21 18:30:41,557 - ddms_compliance_suite.test_orchestrator - INFO - [] 开始为端点 PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-STATUS-001) +2025-05-21 18:30:41,557 - ddms_compliance_suite.test_orchestrator - INFO - [] 从缓存加载了端点 'PUT_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。 +2025-05-21 18:30:41,557 - ddms_compliance_suite.test_orchestrator - DEBUG - [] (缓存加载) 准备的请求数据: method=PUT, path_params={'dms_instance_code': 'example_string'}, query_params={'id': 'example_string'}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=NoneType +2025-05-21 18:30:41,578 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_string/v1/cd_geo_unit +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-STATUS-001' 执行成功。 +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过 +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit' 测试完成,最终状态: 部分成功 +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit (地质单元数据删除) +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。 +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit'。 +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit' 发现了 2 个适用的测试用例: ['TC-HEADER-001', 'TC-STATUS-001'] +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-HEADER-001' for 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit' +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - DEBUG - Manually converting endpoint_spec of type SwaggerEndpoint to dict. +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - WARNING - global_api_spec无法转换为字典,实际类型: +2025-05-21 18:30:41,578 - testcase.TC-HEADER-001 - INFO - 测试用例 TC-HEADER-001 (检查响应中是否存在 'X-Request-ID' 头) 已初始化 for endpoint /api/dms/{dms_instance_code}/v1/cd_geo_unit +2025-05-21 18:30:41,578 - testcase.TC-HEADER-001 - INFO - 开始执行测试用例 'TC-HEADER-001' for endpoint 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit' +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - INFO - [] 开始为端点 DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-HEADER-001) +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点 'DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的参数未在缓存中找到,开始生成。 +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为路径参数。 +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 path 参数。 +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'dms_instance_code' ('path' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'dms_instance_code', 'in': 'path', 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'required': True, 'type': 'string'} +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: path parameter 'dms_instance_code'): example_string +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 path 参数: {'dms_instance_code': 'example_string'} +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为查询参数。 +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 query 参数。 +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'id' ('query' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'id', 'in': 'query', 'required': True, 'description': '主键id的key', 'type': 'string'} +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: query parameter 'id'): example_string +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 query 参数: {'id': 'example_string'} +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为头部参数。 +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 header 参数。 +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'tenant-id' ('header' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'tenant-id', 'in': 'header', 'description': 'tenant-id (Only:undefined)', 'required': True, 'type': 'string'} +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: header parameter 'tenant-id'): example_string +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'Authorization' ('header' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'Authorization', 'in': 'header', 'description': 'Authorization (Only:undefined)', 'required': True, 'type': 'string'} +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: header parameter 'Authorization'): example_string +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 header 参数: {'tenant-id': 'example_string', 'Authorization': 'example_string'} +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点没有定义请求体。 +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点 'DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的参数已生成并存入缓存。 +2025-05-21 18:30:41,578 - ddms_compliance_suite.test_orchestrator - DEBUG - [] (新生成) 准备的请求数据: method=DELETE, path_params={'dms_instance_code': 'example_string'}, query_params={'id': 'example_string'}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=NoneType +2025-05-21 18:30:41,604 - testcase.TC-HEADER-001 - WARNING - 请求头 'X-Request-ID' 未在 http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_string/v1/cd_geo_unit 的响应中找到。 +2025-05-21 18:30:41,604 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-HEADER-001' 执行失败。 +2025-05-21 18:30:41,604 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 失败 +2025-05-21 18:30:41,604 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit' +2025-05-21 18:30:41,604 - ddms_compliance_suite.test_orchestrator - DEBUG - Manually converting endpoint_spec of type SwaggerEndpoint to dict. +2025-05-21 18:30:41,604 - ddms_compliance_suite.test_orchestrator - WARNING - global_api_spec无法转换为字典,实际类型: +2025-05-21 18:30:41,604 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit' 初始化。 +2025-05-21 18:30:41,604 - testcase.TC-STATUS-001 - INFO - 开始执行测试用例 'TC-STATUS-001' for endpoint 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit' +2025-05-21 18:30:41,604 - ddms_compliance_suite.test_orchestrator - INFO - [] 开始为端点 DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-STATUS-001) +2025-05-21 18:30:41,604 - ddms_compliance_suite.test_orchestrator - INFO - [] 从缓存加载了端点 'DELETE_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。 +2025-05-21 18:30:41,604 - ddms_compliance_suite.test_orchestrator - DEBUG - [] (缓存加载) 准备的请求数据: method=DELETE, path_params={'dms_instance_code': 'example_string'}, query_params={'id': 'example_string'}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=NoneType +2025-05-21 18:30:41,624 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_string/v1/cd_geo_unit +2025-05-21 18:30:41,624 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-STATUS-001' 执行成功。 +2025-05-21 18:30:41,624 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过 +2025-05-21 18:30:41,624 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit' 测试完成,最终状态: 部分成功 +2025-05-21 18:30:41,624 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: POST /api/dms/{dms_instance_code}/v1/cd_geo_unit (地质单元数据添加) +2025-05-21 18:30:41,624 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。 +2025-05-21 18:30:41,624 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit'。 +2025-05-21 18:30:41,624 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit' 发现了 2 个适用的测试用例: ['TC-HEADER-001', 'TC-STATUS-001'] +2025-05-21 18:30:41,624 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-HEADER-001' for 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit' +2025-05-21 18:30:41,624 - ddms_compliance_suite.test_orchestrator - DEBUG - Manually converting endpoint_spec of type SwaggerEndpoint to dict. +2025-05-21 18:30:41,624 - ddms_compliance_suite.test_orchestrator - WARNING - global_api_spec无法转换为字典,实际类型: +2025-05-21 18:30:41,624 - testcase.TC-HEADER-001 - INFO - 测试用例 TC-HEADER-001 (检查响应中是否存在 'X-Request-ID' 头) 已初始化 for endpoint /api/dms/{dms_instance_code}/v1/cd_geo_unit +2025-05-21 18:30:41,624 - testcase.TC-HEADER-001 - INFO - 开始执行测试用例 'TC-HEADER-001' for endpoint 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit' +2025-05-21 18:30:41,624 - ddms_compliance_suite.test_orchestrator - INFO - [] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-HEADER-001) +2025-05-21 18:30:41,624 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的参数未在缓存中找到,开始生成。 +2025-05-21 18:30:41,624 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为路径参数。 +2025-05-21 18:30:41,624 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 path 参数。 +2025-05-21 18:30:41,624 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'dms_instance_code' ('path' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'dms_instance_code', 'in': 'path', 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'required': True, 'type': 'string'} +2025-05-21 18:30:41,624 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: path parameter 'dms_instance_code'): example_string +2025-05-21 18:30:41,624 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 path 参数: {'dms_instance_code': 'example_string'} +2025-05-21 18:30:41,624 - ddms_compliance_suite.test_orchestrator - INFO - [] 没有定义 query 参数。 +2025-05-21 18:30:41,624 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为头部参数。 +2025-05-21 18:30:41,624 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 header 参数。 +2025-05-21 18:30:41,624 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'tenant-id' ('header' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'tenant-id', 'in': 'header', 'description': 'tenant-id (Only:undefined)', 'required': True, 'type': 'string'} +2025-05-21 18:30:41,624 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: header parameter 'tenant-id'): example_string +2025-05-21 18:30:41,624 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'Authorization' ('header' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'Authorization', 'in': 'header', 'description': 'Authorization (Only:undefined)', 'required': True, 'type': 'string'} +2025-05-21 18:30:41,624 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: header parameter 'Authorization'): example_string +2025-05-21 18:30:41,624 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 header 参数: {'tenant-id': 'example_string', 'Authorization': 'example_string'} +2025-05-21 18:30:41,624 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点没有定义请求体。 +2025-05-21 18:30:41,624 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的参数已生成并存入缓存。 +2025-05-21 18:30:41,624 - ddms_compliance_suite.test_orchestrator - DEBUG - [] (新生成) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_string'}, query_params={}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=NoneType +2025-05-21 18:30:41,639 - testcase.TC-HEADER-001 - WARNING - 请求头 'X-Request-ID' 未在 http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_string/v1/cd_geo_unit 的响应中找到。 +2025-05-21 18:30:41,639 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-HEADER-001' 执行失败。 +2025-05-21 18:30:41,639 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 失败 +2025-05-21 18:30:41,639 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit' +2025-05-21 18:30:41,639 - ddms_compliance_suite.test_orchestrator - DEBUG - Manually converting endpoint_spec of type SwaggerEndpoint to dict. +2025-05-21 18:30:41,639 - ddms_compliance_suite.test_orchestrator - WARNING - global_api_spec无法转换为字典,实际类型: +2025-05-21 18:30:41,639 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit' 初始化。 +2025-05-21 18:30:41,639 - testcase.TC-STATUS-001 - INFO - 开始执行测试用例 'TC-STATUS-001' for endpoint 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit' +2025-05-21 18:30:41,639 - ddms_compliance_suite.test_orchestrator - INFO - [] 开始为端点 POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit 准备初始请求数据 (TC: TC-STATUS-001) +2025-05-21 18:30:41,639 - ddms_compliance_suite.test_orchestrator - INFO - [] 从缓存加载了端点 'POST_/api/dms/{dms_instance_code}/v1/cd_geo_unit' 的LLM参数。 +2025-05-21 18:30:41,639 - ddms_compliance_suite.test_orchestrator - DEBUG - [] (缓存加载) 准备的请求数据: method=POST, path_params={'dms_instance_code': 'example_string'}, query_params={}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=NoneType +2025-05-21 18:30:41,656 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_string/v1/cd_geo_unit +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-STATUS-001' 执行成功。 +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过 +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'POST /api/dms/{dms_instance_code}/v1/cd_geo_unit' 测试完成,最终状态: 部分成功 +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - INFO - 开始为端点测试: GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id} (地质单元查询详情) +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-HEADER-001' 适用于端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}'。 +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_case_registry - DEBUG - 测试用例 'TC-STATUS-001' 适用于端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}'。 +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}' 发现了 2 个适用的测试用例: ['TC-HEADER-001', 'TC-STATUS-001'] +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-HEADER-001' for 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}' +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - DEBUG - Manually converting endpoint_spec of type SwaggerEndpoint to dict. +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - WARNING - global_api_spec无法转换为字典,实际类型: +2025-05-21 18:30:41,656 - testcase.TC-HEADER-001 - INFO - 测试用例 TC-HEADER-001 (检查响应中是否存在 'X-Request-ID' 头) 已初始化 for endpoint /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id} +2025-05-21 18:30:41,656 - testcase.TC-HEADER-001 - INFO - 开始执行测试用例 'TC-HEADER-001' for endpoint 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}' +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - INFO - [] 开始为端点 GET_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id} 准备初始请求数据 (TC: TC-HEADER-001) +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点 'GET_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}' 的参数未在缓存中找到,开始生成。 +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为路径参数。 +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 path 参数。 +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'dms_instance_code' ('path' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'dms_instance_code', 'in': 'path', 'description': '注册实例code\n井筒中心 well_kd_wellbore_ideas01', 'required': True, 'type': 'string'} +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: path parameter 'dms_instance_code'): example_string +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'version' ('path' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'version', 'in': 'path', 'description': '交换模型版本', 'required': True, 'type': 'string'} +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: path parameter 'version'): example_string +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'id' ('path' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'id', 'in': 'path', 'description': '', 'required': True, 'type': 'string'} +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: path parameter 'id'): example_string +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 path 参数: {'dms_instance_code': 'example_string', 'version': 'example_string', 'id': 'example_string'} +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - INFO - [] 没有定义 query 参数。 +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法或LLM未启用,为头部参数。 +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - INFO - [] 使用常规方法生成 header 参数。 +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'tenant-id' ('header' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'tenant-id', 'in': 'header', 'description': 'tenant-id (Only:undefined)', 'required': True, 'type': 'string'} +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: header parameter 'tenant-id'): example_string +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - DEBUG - 参数 'Authorization' ('header' 类型) 缺少嵌套 'schema' 字段,尝试从顶层 'type' 构建临时schema用于常规生成。 Param spec: {'name': 'Authorization', 'in': 'header', 'description': 'Authorization (Only:undefined)', 'required': True, 'type': 'string'} +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - DEBUG - 生成 string 类型数据 ('') for (context: header parameter 'Authorization'): example_string +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - INFO - [] 常规方法生成的 header 参数: {'tenant-id': 'example_string', 'Authorization': 'example_string'} +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点没有定义请求体。 +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - INFO - [] 端点 'GET_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}' 的参数已生成并存入缓存。 +2025-05-21 18:30:41,656 - ddms_compliance_suite.test_orchestrator - DEBUG - [] (新生成) 准备的请求数据: method=GET, path_params={'dms_instance_code': 'example_string', 'version': 'example_string', 'id': 'example_string'}, query_params={}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=NoneType +2025-05-21 18:30:41,674 - testcase.TC-HEADER-001 - WARNING - 请求头 'X-Request-ID' 未在 http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_string/v1/cd_geo_unit/example_string/example_string 的响应中找到。 +2025-05-21 18:30:41,674 - ddms_compliance_suite.test_orchestrator - DEBUG -  ❌ 测试用例 'TC-HEADER-001' 执行失败。 +2025-05-21 18:30:41,674 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-HEADER-001' 执行完毕,状态: 失败 +2025-05-21 18:30:41,674 - ddms_compliance_suite.test_orchestrator - DEBUG - 准备执行测试用例 'TC-STATUS-001' for 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}' +2025-05-21 18:30:41,674 - ddms_compliance_suite.test_orchestrator - DEBUG - Manually converting endpoint_spec of type SwaggerEndpoint to dict. +2025-05-21 18:30:41,674 - ddms_compliance_suite.test_orchestrator - WARNING - global_api_spec无法转换为字典,实际类型: +2025-05-21 18:30:41,674 - testcase.TC-STATUS-001 - INFO - 测试用例 TC-STATUS-001 (基本状态码 200 检查) 已针对端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}' 初始化。 +2025-05-21 18:30:41,674 - testcase.TC-STATUS-001 - INFO - 开始执行测试用例 'TC-STATUS-001' for endpoint 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}' +2025-05-21 18:30:41,674 - ddms_compliance_suite.test_orchestrator - INFO - [] 开始为端点 GET_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id} 准备初始请求数据 (TC: TC-STATUS-001) +2025-05-21 18:30:41,674 - ddms_compliance_suite.test_orchestrator - INFO - [] 从缓存加载了端点 'GET_/api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}' 的LLM参数。 +2025-05-21 18:30:41,674 - ddms_compliance_suite.test_orchestrator - DEBUG - [] (缓存加载) 准备的请求数据: method=GET, path_params={'dms_instance_code': 'example_string', 'version': 'example_string', 'id': 'example_string'}, query_params={}, headers=['Accept', 'tenant-id', 'Authorization'], body_type=NoneType +2025-05-21 18:30:41,691 - testcase.TC-STATUS-001 - INFO - 状态码验证通过: 200 == 200 for http://127.0.0.1:4523/m1/6389742-6086420-default/api/dms/example_string/v1/cd_geo_unit/example_string/example_string +2025-05-21 18:30:41,691 - ddms_compliance_suite.test_orchestrator - DEBUG -  ✅ 测试用例 'TC-STATUS-001' 执行成功。 +2025-05-21 18:30:41,691 - ddms_compliance_suite.test_orchestrator - DEBUG - 测试用例 'TC-STATUS-001' 执行完毕,状态: 通过 +2025-05-21 18:30:41,691 - ddms_compliance_suite.test_orchestrator - INFO - 端点 'GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}' 测试完成,最终状态: 部分成功 +2025-05-21 18:30:41,692 - __main__ - INFO - 测试结果已保存为JSON: test_report.json ===== 测试运行摘要 ===== -开始时间: 2025-05-21T17:04:17.211454 -结束时间: 2025-05-21T17:04:17.518522 -总耗时: 0.31 秒 +开始时间: 2025-05-21T18:30:41.317570 +结束时间: 2025-05-21T18:30:41.691839 +总耗时: 0.37 秒 --- 端点统计 --- 定义的端点总数: 6 diff --git a/test_report.json b/test_report.json index 76d0d80..c623338 100644 --- a/test_report.json +++ b/test_report.json @@ -1,7 +1,7 @@ { "summary_metadata": { - "start_time": "2025-05-21T17:04:17.211454", - "end_time": "2025-05-21T17:04:17.518522", + "start_time": "2025-05-21T18:30:56.368119", + "end_time": "2025-05-21T18:30:56.681215", "duration_seconds": "0.31" }, "endpoint_stats": { @@ -28,9 +28,9 @@ "endpoint_id": "POST /api/dms/{dms_instance_code}/v1/message/push/{schema}/{version}", "endpoint_name": "数据推送接口", "overall_status": "部分成功", - "duration_seconds": 0.098617, - "start_time": "2025-05-21T17:04:17.211570", - "end_time": "2025-05-21T17:04:17.310187", + "duration_seconds": 0.089518, + "start_time": "2025-05-21T18:30:56.368227", + "end_time": "2025-05-21T18:30:56.457745", "executed_test_cases": [ { "test_case_id": "TC-HEADER-001", @@ -38,8 +38,8 @@ "test_case_severity": "中", "status": "失败", "message": "", - "duration_seconds": 0.05682086944580078, - "timestamp": "2025-05-21T17:04:17.268429", + "duration_seconds": 0.06334280967712402, + "timestamp": "2025-05-21T18:30:56.431606", "validation_points": [ { "expected_header": "X-Request-ID", @@ -62,8 +62,8 @@ "test_case_severity": "严重", "status": "通过", "message": "", - "duration_seconds": 0.04161787033081055, - "timestamp": "2025-05-21T17:04:17.310103", + "duration_seconds": 0.026033878326416016, + "timestamp": "2025-05-21T18:30:56.457700", "validation_points": [ { "passed": true, @@ -77,9 +77,9 @@ "endpoint_id": "POST /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}", "endpoint_name": "地质单元列表查询", "overall_status": "部分成功", - "duration_seconds": 0.080731, - "start_time": "2025-05-21T17:04:17.310299", - "end_time": "2025-05-21T17:04:17.391030", + "duration_seconds": 0.041726, + "start_time": "2025-05-21T18:30:56.457776", + "end_time": "2025-05-21T18:30:56.499502", "executed_test_cases": [ { "test_case_id": "TC-HEADER-001", @@ -87,8 +87,8 @@ "test_case_severity": "中", "status": "失败", "message": "", - "duration_seconds": 0.043160200119018555, - "timestamp": "2025-05-21T17:04:17.353522", + "duration_seconds": 0.022691011428833008, + "timestamp": "2025-05-21T18:30:56.480802", "validation_points": [ { "expected_header": "X-Request-ID", @@ -111,8 +111,8 @@ "test_case_severity": "严重", "status": "通过", "message": "", - "duration_seconds": 0.037424325942993164, - "timestamp": "2025-05-21T17:04:17.391001", + "duration_seconds": 0.01860499382019043, + "timestamp": "2025-05-21T18:30:56.499463", "validation_points": [ { "passed": true, @@ -126,9 +126,9 @@ "endpoint_id": "PUT /api/dms/{dms_instance_code}/v1/cd_geo_unit", "endpoint_name": "地质单元数据修改", "overall_status": "部分成功", - "duration_seconds": 0.036219, - "start_time": "2025-05-21T17:04:17.391064", - "end_time": "2025-05-21T17:04:17.427283", + "duration_seconds": 0.03492, + "start_time": "2025-05-21T18:30:56.499530", + "end_time": "2025-05-21T18:30:56.534450", "executed_test_cases": [ { "test_case_id": "TC-HEADER-001", @@ -136,8 +136,8 @@ "test_case_severity": "中", "status": "失败", "message": "", - "duration_seconds": 0.015516281127929688, - "timestamp": "2025-05-21T17:04:17.406630", + "duration_seconds": 0.01642608642578125, + "timestamp": "2025-05-21T18:30:56.515996", "validation_points": [ { "expected_header": "X-Request-ID", @@ -160,8 +160,8 @@ "test_case_severity": "严重", "status": "通过", "message": "", - "duration_seconds": 0.02056288719177246, - "timestamp": "2025-05-21T17:04:17.427253", + "duration_seconds": 0.018361806869506836, + "timestamp": "2025-05-21T18:30:56.534410", "validation_points": [ { "passed": true, @@ -175,9 +175,9 @@ "endpoint_id": "DELETE /api/dms/{dms_instance_code}/v1/cd_geo_unit", "endpoint_name": "地质单元数据删除", "overall_status": "部分成功", - "duration_seconds": 0.030476, - "start_time": "2025-05-21T17:04:17.427316", - "end_time": "2025-05-21T17:04:17.457792", + "duration_seconds": 0.035115, + "start_time": "2025-05-21T18:30:56.534480", + "end_time": "2025-05-21T18:30:56.569595", "executed_test_cases": [ { "test_case_id": "TC-HEADER-001", @@ -185,8 +185,8 @@ "test_case_severity": "中", "status": "失败", "message": "", - "duration_seconds": 0.01640176773071289, - "timestamp": "2025-05-21T17:04:17.443764", + "duration_seconds": 0.019882917404174805, + "timestamp": "2025-05-21T18:30:56.554426", "validation_points": [ { "expected_header": "X-Request-ID", @@ -209,8 +209,8 @@ "test_case_severity": "严重", "status": "通过", "message": "", - "duration_seconds": 0.013955831527709961, - "timestamp": "2025-05-21T17:04:17.457768", + "duration_seconds": 0.015078067779541016, + "timestamp": "2025-05-21T18:30:56.569559", "validation_points": [ { "passed": true, @@ -224,9 +224,9 @@ "endpoint_id": "POST /api/dms/{dms_instance_code}/v1/cd_geo_unit", "endpoint_name": "地质单元数据添加", "overall_status": "部分成功", - "duration_seconds": 0.03182, - "start_time": "2025-05-21T17:04:17.457819", - "end_time": "2025-05-21T17:04:17.489639", + "duration_seconds": 0.033789, + "start_time": "2025-05-21T18:30:56.569621", + "end_time": "2025-05-21T18:30:56.603410", "executed_test_cases": [ { "test_case_id": "TC-HEADER-001", @@ -234,8 +234,8 @@ "test_case_severity": "中", "status": "失败", "message": "", - "duration_seconds": 0.015901803970336914, - "timestamp": "2025-05-21T17:04:17.473765", + "duration_seconds": 0.01661515235900879, + "timestamp": "2025-05-21T18:30:56.586277", "validation_points": [ { "expected_header": "X-Request-ID", @@ -258,8 +258,8 @@ "test_case_severity": "严重", "status": "通过", "message": "", - "duration_seconds": 0.015805959701538086, - "timestamp": "2025-05-21T17:04:17.489614", + "duration_seconds": 0.017055988311767578, + "timestamp": "2025-05-21T18:30:56.603376", "validation_points": [ { "passed": true, @@ -273,9 +273,9 @@ "endpoint_id": "GET /api/dms/{dms_instance_code}/v1/cd_geo_unit/{version}/{id}", "endpoint_name": "地质单元查询详情", "overall_status": "部分成功", - "duration_seconds": 0.028834, - "start_time": "2025-05-21T17:04:17.489670", - "end_time": "2025-05-21T17:04:17.518504", + "duration_seconds": 0.077762, + "start_time": "2025-05-21T18:30:56.603434", + "end_time": "2025-05-21T18:30:56.681196", "executed_test_cases": [ { "test_case_id": "TC-HEADER-001", @@ -283,8 +283,8 @@ "test_case_severity": "中", "status": "失败", "message": "", - "duration_seconds": 0.013111114501953125, - "timestamp": "2025-05-21T17:04:17.502828", + "duration_seconds": 0.020492076873779297, + "timestamp": "2025-05-21T18:30:56.623967", "validation_points": [ { "expected_header": "X-Request-ID", @@ -307,8 +307,8 @@ "test_case_severity": "严重", "status": "通过", "message": "", - "duration_seconds": 0.015619039535522461, - "timestamp": "2025-05-21T17:04:17.518482", + "duration_seconds": 0.05701398849487305, + "timestamp": "2025-05-21T18:30:56.681140", "validation_points": [ { "passed": true,