Skip to content

Commit

Permalink
更新redis键存储分割符 (#56)
Browse files Browse the repository at this point in the history
  • Loading branch information
wu-clan authored Oct 9, 2023
1 parent f5f6913 commit 322764a
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 20 deletions.
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/wu-clan/httpfpt/ci.yml?logo=github)
[![GitHub](https://img.shields.io/github/license/wu-clan/httpfpt)](https://github.com/wu-clan/httpfpt/blob/master/LICENSE)
![Static Badge](https://img.shields.io/badge/python-3.8%20%7C%203.9%20%7C%203.10%20%7C%203.11-blue)
![GitHub tag (with filter)](https://img.shields.io/github/v/tag/wu-clan/httpfpt)
![Static Badge](https://img.shields.io/badge/python-3.8%20%7C%203.9%20%7C%203.10%20%7C%203.11%20%7C%203.12-blue)
![GitHub release (with filter)](https://img.shields.io/github/v/release/wu-clan/httpfpt)

基于 HTTP 请求的快速数据驱动 pytest 接口自动化测试框架
Expand Down
4 changes: 2 additions & 2 deletions httpfpt/utils/auth_plugins.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ def bearer_token(self) -> str:
headers = auth_data[f'{self.auth_type}']['headers']
headers.update({'Connection': 'close'})
timeout = auth_data[f'{self.auth_type}']['timeout'] or 86400
aap_bearer_token = redis_client.get(f'{redis_client.prefix}::token::{url}')
aap_bearer_token = redis_client.get(f'{redis_client.prefix}:token:{url}')
if aap_bearer_token:
token = aap_bearer_token
else:
Expand All @@ -45,5 +45,5 @@ def bearer_token(self) -> str:
token = findall(auth_data[f'{self.auth_type}']['token_key'], response.json())
if not token:
raise AuthError('Token 获取失败,请检查登录接口响应或 token_key 表达式')
redis_client.set(f'{redis_client.prefix}::token::{url}', token[0], ex=timeout)
redis_client.set(f'{redis_client.prefix}:token:{url}', token[0], ex=timeout)
return token
10 changes: 5 additions & 5 deletions httpfpt/utils/relate_testcase_executor.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ def exec_setup_testcase(parsed: RequestDataParse, setup_testcase: list) -> Union
raise CorrelateTestCaseError(error_text)

# 判断关联测试用例是否存在
all_case_id = ast.literal_eval(redis_client.get(f'{redis_client.prefix}::case_id::all'))
all_case_id = ast.literal_eval(redis_client.get(f'{redis_client.prefix}:case_id:all'))
for testcase in setup_testcase:
error_text = '执行关联测试用例失败,未在测试用例中找到关联测试用例,请检查关联测试用例 case_id 是否存在'
if isinstance(testcase, dict):
Expand All @@ -53,8 +53,8 @@ def exec_setup_testcase(parsed: RequestDataParse, setup_testcase: list) -> Union
if isinstance(testcase, dict):
relate_count += 1
relate_case_id = testcase['case_id']
relate_case_filename = redis_client.get(f'{redis_client.prefix}::case_id_filename::{relate_case_id}')
case_data = redis_client.get(f'{redis_client.prefix}::case_data::{relate_case_filename}')
relate_case_filename = redis_client.get(f'{redis_client.prefix}:case_id_filename:{relate_case_id}')
case_data = redis_client.get(f'{redis_client.prefix}:case_data:{relate_case_filename}')
case_data = ast.literal_eval(case_data)
case_data_test_steps = case_data['test_steps']
if isinstance(case_data_test_steps, list):
Expand All @@ -79,8 +79,8 @@ def exec_setup_testcase(parsed: RequestDataParse, setup_testcase: list) -> Union

# 用例中 testcase 参数为直接关联测试用例时
elif isinstance(testcase, str):
relate_case_filename = redis_client.get(f'{redis_client.prefix}::case_id_filename::{testcase}')
case_data = redis_client.get(f'{redis_client.prefix}::case_data::{relate_case_filename}')
relate_case_filename = redis_client.get(f'{redis_client.prefix}:case_id_filename:{testcase}')
case_data = redis_client.get(f'{redis_client.prefix}:case_data:{relate_case_filename}')
case_data = ast.literal_eval(case_data)
case_data_test_steps = case_data['test_steps']
if isinstance(case_data_test_steps, list):
Expand Down
22 changes: 11 additions & 11 deletions httpfpt/utils/request/case_data_parse.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,14 @@ def case_data_init(pydantic_verify: bool = False) -> None:
:return:
"""
all_case_yaml_file = search_all_case_yaml_files()
redis_client.delete_prefix(f'{redis_client.prefix}::case_data::')
redis_client.delete_prefix(f'{redis_client.prefix}:case_data:')
for case_yaml_file in all_case_yaml_file:
case_data = read_yaml(None, filename=case_yaml_file)
filename = get_file_property(case_yaml_file)[0]
case_data.update({'filename': filename})
redis_client.set(f'{redis_client.prefix}::case_data::{filename}', str(case_data))
redis_client.set(f'{redis_client.prefix}:case_data:{filename}', str(case_data))
if pydantic_verify:
case_data_list = redis_client.get_prefix(f'{redis_client.prefix}::case_data::')
case_data_list = redis_client.get_prefix(f'{redis_client.prefix}:case_data:')
count: int = 0
for case_data in case_data_list:
try:
Expand All @@ -50,8 +50,8 @@ def case_id_unique_verify() -> None:
"""
all_case_id_dict: List[Dict[str, Union[str, list]]] = []
all_case_id = []
case_data_list = redis_client.get_prefix(f'{redis_client.prefix}::case_data::')
redis_client.delete_prefix(f'{redis_client.prefix}::case_id_filename::')
case_data_list = redis_client.get_prefix(f'{redis_client.prefix}:case_data:')
redis_client.delete_prefix(f'{redis_client.prefix}:case_id_filename:')
for case_data in case_data_list:
case_data = ast.literal_eval(case_data)
filename = case_data['filename']
Expand All @@ -61,14 +61,14 @@ def case_id_unique_verify() -> None:
case_id = steps['case_id']
all_case_id.append(case_id)
all_case_id_dict.append({f'{filename}': case_id})
redis_client.set(f'{redis_client.prefix}::case_id_filename::{case_id}', filename)
redis_client.set(f'{redis_client.prefix}:case_id_filename:{case_id}', filename)
if isinstance(steps, list):
case_id_list = []
for s in steps:
case_id = s['case_id']
case_id_list.append(case_id)
all_case_id.append(case_id)
redis_client.set(f'{redis_client.prefix}::case_id_filename::{case_id}', filename)
redis_client.set(f'{redis_client.prefix}:case_id_filename:{case_id}', filename)
all_case_id_dict.append({f'{filename}': case_id_list})
except KeyError:
raise RequestDataParseError(f'测试用例数据文件 {filename} 结构错误,建议开启 pydantic 验证')
Expand Down Expand Up @@ -100,12 +100,12 @@ def case_id_unique_verify() -> None:
repeat_case_id_desc.update({'detail': all_repeat_case_id_detail})
all_repeat_case_id.append(repeat_case_id_desc)
if len(all_repeat_case_id) > 0:
redis_client.set(f'{redis_client.prefix}::case_id::repeated', 'true')
redis_client.set(f'{redis_client.prefix}:case_id:repeated', 'true')
log.error(f'运行失败, 检测到用例重复 case_id: {all_repeat_case_id[0]}')
sys.exit(1)
else:
redis_client.delete(f'{redis_client.prefix}::case_id::repeated')
redis_client.rset(f'{redis_client.prefix}::case_id::all', str(all_case_id))
redis_client.delete(f'{redis_client.prefix}:case_id:repeated')
redis_client.rset(f'{redis_client.prefix}:case_id:all', str(all_case_id))


def get_request_data(*, filename: str) -> List[Dict[str, Any]]:
Expand All @@ -115,7 +115,7 @@ def get_request_data(*, filename: str) -> List[Dict[str, Any]]:
:param filename: 测试用例数据文件名称
:return:
"""
case_data = ast.literal_eval(redis_client.get(f'{redis_client.prefix}::case_data::{filename}'))
case_data = ast.literal_eval(redis_client.get(f'{redis_client.prefix}:case_data:{filename}'))
config_error = f'请求测试用例数据文件 {filename} 缺少 config 信息, 请检查测试用例文件内容'
test_steps_error = f'请求测试用例数据文件 {filename} 缺少 test_steps 信息, 请检查测试用例文件内容'
try:
Expand Down

0 comments on commit 322764a

Please sign in to comment.