From 2e0445ea9a8c25e85ff0086279603f22cc66d024 Mon Sep 17 00:00:00 2001 From: Wu Clan Date: Thu, 24 Aug 2023 17:07:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=8E=B7=E5=8F=96=E6=89=80?= =?UTF-8?q?=E6=9C=89=E6=B5=8B=E8=AF=95=E7=94=A8=E4=BE=8B=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=9E=B6=E6=9E=84=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/test_data/test_project/only_skip.yml | 12 +++++------ httpfpt/utils/relate_testcase_executor.py | 21 ++++++++++--------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/httpfpt/data/test_data/test_project/only_skip.yml b/httpfpt/data/test_data/test_project/only_skip.yml index c37fd72..aacae72 100644 --- a/httpfpt/data/test_data/test_project/only_skip.yml +++ b/httpfpt/data/test_data/test_project/only_skip.yml @@ -14,8 +14,8 @@ test_steps: description: 测试跳过 is_run: False request: - method: - url: + method: GET + url: /skip params: headers: body_type: @@ -29,8 +29,8 @@ test_steps: skip: True reason: 自定义跳过 request: - method: - url: + method: GET + url: /skip params: headers: body_type: @@ -46,8 +46,8 @@ test_steps: - ${timeout} == None reason: 条件判断为真跳过 request: - method: - url: + method: GET + url: /skip params: headers: body_type: diff --git a/httpfpt/utils/relate_testcase_executor.py b/httpfpt/utils/relate_testcase_executor.py index cb36486..b69342d 100644 --- a/httpfpt/utils/relate_testcase_executor.py +++ b/httpfpt/utils/relate_testcase_executor.py @@ -13,7 +13,7 @@ from httpfpt.schemas.case_data import CaseData from httpfpt.utils.allure_control import allure_step from httpfpt.utils.file_control import search_all_case_yaml_files, get_file_property -from httpfpt.utils.pydantic_error_parse import parse_error +from httpfpt.utils.pydantic_parser import parse_error from httpfpt.utils.request.request_data_parse import RequestDataParse from httpfpt.utils.request.vars_extractor import VarsExtractor @@ -82,30 +82,31 @@ def get_all_testcase_data(pydantic_verify: bool = False) -> list: :return: """ all_yaml_file = search_all_case_yaml_files() + all_case_data = [] if not redis_client.redis.get(f'{redis_client.prefix}:is_re_case_id'): redis_all_case_data = redis_client.get(f'{redis_client.prefix}:all_case_data') if redis_all_case_data: redis_all_case_data_len = redis_client.get(f'{redis_client.prefix}:all_case_data_len') if redis_all_case_data_len is not None: if int(redis_all_case_data_len) == len(all_yaml_file): - return eval(redis_all_case_data) + all_case_data = eval(redis_all_case_data) else: redis_client.set(f'{redis_client.prefix}:all_case_data_len', len(all_yaml_file)) - all_case_data = [] - for file in all_yaml_file: - read_data = read_yaml(None, filename=file) - read_data.update({'filename': get_file_property(file)[0]}) - all_case_data.append(read_data) + if len(all_case_data) == 0: + for file in all_yaml_file: + read_data = read_yaml(None, filename=file) + read_data.update({'filename': get_file_property(file)[0]}) + all_case_data.append(read_data) + redis_client.rset(f'{redis_client.prefix}:all_case_data', str(all_case_data)) if pydantic_verify: for case_data in all_case_data: try: count: int = 0 - CaseData.model_validate(case_data, strict=True) + CaseData.model_validate(case_data) except ValidationError as e: count = parse_error(e) if count > 0: - raise ValueError(f'用例数据校验失败,共有 {count} 处错误, 错误详情请查看日志') - redis_client.rset(f'{redis_client.prefix}:all_case_data', str(all_case_data)) + raise ValueError(f'测试用例数据校验失败,共有 {count} 处错误, 错误详情请查看日志') return all_case_data