Skip to content

Commit

Permalink
修复获取所有测试用例数据架构验证
Browse files Browse the repository at this point in the history
  • Loading branch information
wu-clan committed Aug 24, 2023
1 parent d68d580 commit 2e0445e
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 16 deletions.
12 changes: 6 additions & 6 deletions httpfpt/data/test_data/test_project/only_skip.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ test_steps:
description: 测试跳过
is_run: False
request:
method:
url:
method: GET
url: /skip
params:
headers:
body_type:
Expand All @@ -29,8 +29,8 @@ test_steps:
skip: True
reason: 自定义跳过
request:
method:
url:
method: GET
url: /skip
params:
headers:
body_type:
Expand All @@ -46,8 +46,8 @@ test_steps:
- ${timeout} == None
reason: 条件判断为真跳过
request:
method:
url:
method: GET
url: /skip
params:
headers:
body_type:
Expand Down
21 changes: 11 additions & 10 deletions httpfpt/utils/relate_testcase_executor.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Check failure on line 16 in httpfpt/utils/relate_testcase_executor.py

View workflow job for this annotation

GitHub Actions / lint 3.10

Import "httpfpt.utils.pydantic_parser" could not be resolved (reportMissingImports)
from httpfpt.utils.request.request_data_parse import RequestDataParse
from httpfpt.utils.request.vars_extractor import VarsExtractor

Expand Down Expand Up @@ -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


Expand Down

0 comments on commit 2e0445e

Please sign in to comment.