From 2109bb18af97f11e523f10fc531177b21f7856b7 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Sun, 12 Aug 2018 21:56:23 +0800 Subject: [PATCH] update parse_data docstring --- httprunner/parser.py | 55 ++++++++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 23 deletions(-) diff --git a/httprunner/parser.py b/httprunner/parser.py index 0994c047..4669f4cc 100644 --- a/httprunner/parser.py +++ b/httprunner/parser.py @@ -200,24 +200,32 @@ def parse_validator(validator): } -def parse_data(content, mapping): - """ substitute variables in content with mapping - e.g. - @params - content = { - 'request': { - 'url': '/api/users/$uid', - 'headers': {'token': '$token'} +def parse_data(content, variables_mapping=None): + """ parse content with variables mapping + + Args: + content (str/dict/list/numeric/bool/type): content to be parsed + variables_mapping (dict): variables mapping + + Returns: + parsed content. + + Examples: + >>> content = { + 'request': { + 'url': '/api/users/$uid', + 'headers': {'token': '$token'} + } } - } - mapping = {"$uid": 1000} - @return - { - 'request': { - 'url': '/api/users/1000', - 'headers': {'token': '$token'} + >>> variables_mapping = {"$uid": 1000} + >>> parse_data(content, variables_mapping) + { + 'request': { + 'url': '/api/users/1000', + 'headers': {'token': '$token'} + } } - } + """ # TODO: refactor type check # TODO: combine this with TestcaseParser @@ -226,21 +234,22 @@ def parse_data(content, mapping): if isinstance(content, (list, set, tuple)): return [ - parse_data(item, mapping) + parse_data(item, variables_mapping) for item in content ] if isinstance(content, dict): - substituted_data = {} + parsed_data = {} for key, value in content.items(): - eval_key = parse_data(key, mapping) - eval_value = parse_data(value, mapping) - substituted_data[eval_key] = eval_value + eval_key = parse_data(key, variables_mapping) + eval_value = parse_data(value, variables_mapping) + parsed_data[eval_key] = eval_value - return substituted_data + return parsed_data # 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: # content is a variable content = value