add single page
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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,测试终止。")
|
||||
|
||||
Reference in New Issue
Block a user