update parse_data docstring

This commit is contained in:
httprunner
2018-08-12 21:56:23 +08:00
parent e40791dac5
commit eb13fe678c

View File

@@ -200,24 +200,32 @@ def parse_validator(validator):
} }
def parse_data(content, mapping): def parse_data(content, variables_mapping=None):
""" substitute variables in content with mapping """ parse content with variables mapping
e.g.
@params Args:
content = { content (str/dict/list/numeric/bool/type): content to be parsed
'request': { variables_mapping (dict): variables mapping
'url': '/api/users/$uid',
'headers': {'token': '$token'} Returns:
parsed content.
Examples:
>>> content = {
'request': {
'url': '/api/users/$uid',
'headers': {'token': '$token'}
}
} }
} >>> variables_mapping = {"$uid": 1000}
mapping = {"$uid": 1000} >>> parse_data(content, variables_mapping)
@return {
{ 'request': {
'request': { 'url': '/api/users/1000',
'url': '/api/users/1000', 'headers': {'token': '$token'}
'headers': {'token': '$token'} }
} }
}
""" """
# TODO: refactor type check # TODO: refactor type check
# TODO: combine this with TestcaseParser # TODO: combine this with TestcaseParser
@@ -226,21 +234,22 @@ def parse_data(content, mapping):
if isinstance(content, (list, set, tuple)): if isinstance(content, (list, set, tuple)):
return [ return [
parse_data(item, mapping) parse_data(item, variables_mapping)
for item in content for item in content
] ]
if isinstance(content, dict): if isinstance(content, dict):
substituted_data = {} parsed_data = {}
for key, value in content.items(): for key, value in content.items():
eval_key = parse_data(key, mapping) eval_key = parse_data(key, variables_mapping)
eval_value = parse_data(value, mapping) eval_value = parse_data(value, variables_mapping)
substituted_data[eval_key] = eval_value parsed_data[eval_key] = eval_value
return substituted_data return parsed_data
# content is in string format here # content is in string format here
for var, value in mapping.items(): variables_mapping = variables_mapping or {}
for var, value in variables_mapping.items():
if content == var: if content == var:
# content is a variable # content is a variable
content = value content = value