From 1578b78f54d29fdbbe70e7ca4f61ef939ab59321 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Wed, 14 Nov 2018 16:15:04 +0800 Subject: [PATCH] ensure variables are in mapping format. --- httprunner/context.py | 12 +++--------- httprunner/response.py | 2 +- httprunner/utils.py | 30 +++--------------------------- tests/test_utils.py | 6 +++--- 4 files changed, 10 insertions(+), 40 deletions(-) diff --git a/httprunner/context.py b/httprunner/context.py index 7484a503..55bd1da6 100644 --- a/httprunner/context.py +++ b/httprunner/context.py @@ -15,12 +15,7 @@ class Context(object): """ # testcase level context ## TESTCASE_SHARED_VARIABLES_MAPPING and TESTCASE_SHARED_FUNCTIONS_MAPPING are unchangeable. - if isinstance(variables, list): - self.TESTCASE_SHARED_VARIABLES_MAPPING = utils.convert_mappinglist_to_orderdict(variables) - else: - # dict - self.TESTCASE_SHARED_VARIABLES_MAPPING = variables or OrderedDict() - + self.TESTCASE_SHARED_VARIABLES_MAPPING = utils.ensure_mapping_format(variables) self.TESTCASE_SHARED_FUNCTIONS_MAPPING = functions or OrderedDict() # testcase level request, will not change @@ -65,10 +60,9 @@ class Context(object): level (enum): "testcase" or "teststep" """ - if isinstance(variables, list): - variables = utils.convert_mappinglist_to_orderdict(variables) + variables_mapping = utils.ensure_mapping_format(variables) - for variable_name, variable_value in variables.items(): + for variable_name, variable_value in variables_mapping.items(): variable_eval_value = self.eval_content(variable_value) if level == "testcase": diff --git a/httprunner/response.py b/httprunner/response.py index 821181ba..07f3c868 100644 --- a/httprunner/response.py +++ b/httprunner/response.py @@ -221,7 +221,7 @@ class ResponseObject(object): logger.log_info("start to extract from response object.") extracted_variables_mapping = OrderedDict() - extract_binds_order_dict = utils.convert_mappinglist_to_orderdict(extractors) + extract_binds_order_dict = utils.ensure_mapping_format(extractors) for key, field in extract_binds_order_dict.items(): extracted_variables_mapping[key] = self.extract_field(field) diff --git a/httprunner/utils.py b/httprunner/utils.py index 78e14c64..4dbc6280 100644 --- a/httprunner/utils.py +++ b/httprunner/utils.py @@ -177,32 +177,6 @@ def lower_test_dict_keys(test_dict): return test_dict -def convert_mappinglist_to_orderdict(mapping_list): - """ convert mapping list to ordered dict - - Args: - mapping_list (list): - [ - {"a": 1}, - {"b": 2} - ] - - Returns: - OrderedDict: converted mapping in OrderedDict - OrderDict( - { - "a": 1, - "b": 2 - } - ) - - """ - ordered_dict = OrderedDict() - for map_dict in mapping_list: - ordered_dict.update(map_dict) - - return ordered_dict - def deepcopy_dict(data): """ deepcopy dict data, ignore file object (_io.BufferedReader) @@ -288,7 +262,9 @@ def ensure_mapping_format(variables): """ if isinstance(variables, list): - variables_ordered_dict = convert_mappinglist_to_orderdict(variables) + variables_ordered_dict = OrderedDict() + for map_dict in variables: + variables_ordered_dict.update(map_dict) elif isinstance(variables, (OrderedDict, dict)): variables_ordered_dict = variables else: diff --git a/tests/test_utils.py b/tests/test_utils.py index 963e56c5..72f26730 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -206,12 +206,12 @@ class TestUtils(ApiServerUnittest): new_request_dict = utils.lower_dict_keys(request_dict) self.assertEqual(None, request_dict) - def test_convert_to_order_dict(self): + def test_ensure_mapping_format(self): map_list = [ {"a": 1}, {"b": 2} ] - ordered_dict = utils.convert_mappinglist_to_orderdict(map_list) + ordered_dict = utils.ensure_mapping_format(map_list) self.assertIsInstance(ordered_dict, dict) self.assertIn("a", ordered_dict) @@ -240,7 +240,7 @@ class TestUtils(ApiServerUnittest): {"a": 1}, {"b": 2} ] - ordered_dict = utils.convert_mappinglist_to_orderdict(map_list) + ordered_dict = utils.ensure_mapping_format(map_list) override_mapping = {"a": 3, "c": 4} new_dict = utils.update_ordered_dict(ordered_dict, override_mapping) self.assertEqual(3, new_dict["a"])