add single page

This commit is contained in:
gongwenxin
2025-08-19 14:44:57 +08:00
parent 336913fbd0
commit fc2b64ccc4
22 changed files with 2309 additions and 1431 deletions
+19 -5
View File
@@ -538,7 +538,7 @@ class InputParser:
self.logger.error(f"An unexpected error occurred while parsing Swagger spec {file_path}: {e}", exc_info=True)
return None
def parse_dms_spec(self, domain_mapping_path: str, base_url: str, headers: Optional[Dict[str, str]] = None, ignore_ssl: bool = False, page_size: int = 1000) -> Optional[Tuple[ParsedDMSSpec, Dict[str, Any]]]:
def parse_dms_spec(self, domain_mapping_path: str, base_url: str, headers: Optional[Dict[str, str]] = None, ignore_ssl: bool = False, page_size: int = 1000, page_no_start: int = 1, fetch_all_pages: bool = True) -> Optional[Tuple[ParsedDMSSpec, Dict[str, Any]]]:
self.logger.info(f"Starting DMS spec parsing. Base URL: {base_url}, Domain Map: {domain_mapping_path}")
if ignore_ssl:
@@ -566,15 +566,22 @@ class InputParser:
self.logger.debug(f"映射关键词 '{keyword}' -> 领域ID '{domain_id}'")
# 实现分页获取API列表
self.logger.info(f"Fetching API list with pagination (page_size={page_size})")
if fetch_all_pages:
self.logger.info(f"Fetching ALL API pages with pagination (page_size={page_size}, starting from page {page_no_start})")
else:
self.logger.info(f"Fetching SINGLE page (page_size={page_size}, page_no={page_no_start})")
api_records = []
page_no = 1
page_no = page_no_start
total_fetched = 0
pagination_info = {
"page_size": page_size,
"page_no_start": page_no_start,
"total_pages": 0,
"total_records": 0,
"pages_fetched": 0
"pages_fetched": 0,
"current_page": page_no_start,
"fetch_all_pages": fetch_all_pages
}
try:
@@ -611,8 +618,15 @@ class InputParser:
pagination_info["total_records"] = total_count
pagination_info["total_pages"] = (total_count + page_size - 1) // page_size # 向上取整
pagination_info["pages_fetched"] = page_no
pagination_info["pages_fetched"] = page_no - page_no_start + 1
pagination_info["current_page"] = page_no
# 如果是单页模式,获取一页后就停止
if not fetch_all_pages:
self.logger.info(f"Single page mode: fetched {len(page_records)} records from page {page_no}")
break
# 全页模式:检查是否还有更多页面
if current_count >= total_count or len(page_records) < page_size:
self.logger.info(f"Reached end of data. Total records: {total_fetched}")
break
+4 -2
View File
@@ -2682,7 +2682,9 @@ class APITestOrchestrator:
categories: Optional[List[str]] = None,
custom_test_cases_dir: Optional[str] = None,
ignore_ssl: bool = False,
page_size: int = 1000
page_size: int = 1000,
page_no_start: int = 1,
fetch_all_pages: bool = True
) -> Tuple[TestSummary, Optional[ParsedAPISpec], Dict[str, Any]]:
"""
通过动态DMS服务发现来执行测试。
@@ -2693,7 +2695,7 @@ class APITestOrchestrator:
self.logger.info("从DMS动态服务启动测试...")
# 如果方法参数中没有传递ignore_ssl,使用实例的设置
actual_ignore_ssl = ignore_ssl if ignore_ssl else self.ignore_ssl
parse_result = parser.parse_dms_spec(domain_mapping_path, base_url=self.base_url, ignore_ssl=actual_ignore_ssl, page_size=page_size)
parse_result = parser.parse_dms_spec(domain_mapping_path, base_url=self.base_url, ignore_ssl=actual_ignore_ssl, page_size=page_size, page_no_start=page_no_start, fetch_all_pages=fetch_all_pages)
if not parse_result or parse_result[0] is None:
self.logger.error("无法从DMS服务解析API,测试终止。")