提交 94f48882 编写于 作者: 泰斯特Test's avatar 泰斯特Test

[feat](tester.py & common.py)支持非json响应时的字符串截取设置全局变量

上级 d6cbbc13
......@@ -208,6 +208,15 @@ class tester:
response_json = json.loads(response.text) if isinstance(response.text, str) \
and response.text.strip() else {}
except BaseException as e:
if set_global_vars and isinstance(set_global_vars, list):
for set_global_var in set_global_vars:
if isinstance(set_global_var, dict) and isinstance(set_global_var.get('name'), str):
name = set_global_var.get('name')
query = set_global_var.get('query')
value = common.dict_get(response.text, query)
self.global_vars[name] = str(value) if value else value
if 'checkHttpCode' in test_case and not test_case['checkHttpCode'] in ["", None]:
check_http_code = test_case['checkHttpCode']
......
......@@ -197,7 +197,15 @@ def dict_get(dic, locators, default=None):
'''
if not isinstance(dic, dict) or not isinstance(locators, list):
if not isinstance(dic, dict):
if not isinstance(locators, list):
return default
elif isinstance(dic, str) and len(locators) == 1 and is_slice_expression(locators[0]):
slice_indexes = locators[0].split(':')
start_index = int(slice_indexes[0]) if slice_indexes[0] else None
end_index = int(slice_indexes[-1]) if slice_indexes[-1] else None
value = dic[start_index:end_index]
return value
return default
if dic == {} or len(locators) < 1:
......@@ -246,7 +254,7 @@ def dict_get(dic, locators, default=None):
def is_slice_expression(expression):
if re.match('(\d+)?:(\d+)?', expression):
if re.match('(-?\d+)?:(-?\d+)?', expression):
return True
else:
return False
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册