From 36e7c7e4cfc92995f3bc4d0f57b449d259387fbc Mon Sep 17 00:00:00 2001 From: debugtalk Date: Fri, 3 Nov 2017 12:55:23 +0800 Subject: [PATCH] update lower_dict_keys, avoid mistakes in OrderDict --- ate/utils.py | 31 ++++++++++++++----------------- tests/test_utils.py | 23 +++++++++++++++++++++++ 2 files changed, 37 insertions(+), 17 deletions(-) diff --git a/ate/utils.py b/ate/utils.py index 10176a7a..e0554168 100644 --- a/ate/utils.py +++ b/ate/utils.py @@ -287,31 +287,28 @@ def search_conf_item(start_path, item_type, item_name): return search_conf_item(dir_path, item_type, item_name) -def lower_dict_key(origin_dict, depth=1): - """ convert dict key to lower case, with depth control supported. +def lower_dict_keys(origin_dict): + """ convert keys in dict to lower case + e.g. + Name => name, Request => request + URL => url, METHOD => method, Headers => headers, Data => data """ - new_dict = {} + if not origin_dict or not isinstance(origin_dict, dict): + return origin_dict - for key, value in origin_dict.items(): - if depth >= 2: - new_dict[key] = value - continue - - if isinstance(value, dict): - value = lower_dict_key(value, depth+1) - - new_dict[key.lower()] = value - - return new_dict + return { + key.lower(): value + for key, value in origin_dict.items() + } def lower_config_dict_key(config_dict): """ convert key in config dict to lower case, convertion will occur in two places: 1, all keys in config dict; 2, all keys in config["request"] """ - config_dict = lower_dict_key(config_dict) - if "request" in config_dict and isinstance(config_dict["request"], dict): - config_dict["request"] = lower_dict_key(config_dict["request"]) + config_dict = lower_dict_keys(config_dict) + if "request" in config_dict: + config_dict["request"] = lower_dict_keys(config_dict["request"]) return config_dict diff --git a/tests/test_utils.py b/tests/test_utils.py index 8b03df1d..bc546e5d 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -245,6 +245,29 @@ class TestUtils(ApiServerUnittest): new_dict = utils.lower_config_dict_key(origin_dict) self.assertIn("$default_request", new_dict["request"]) + def test_lower_dict_keys(self): + request_dict = { + "url": "http://127.0.0.1:5000", + "METHOD": "POST", + "Headers": { + "Accept": "application/json", + "User-Agent": "ios/9.3" + } + } + new_request_dict = utils.lower_dict_keys(request_dict) + self.assertIn("method", new_request_dict) + self.assertIn("headers", new_request_dict) + self.assertIn("Accept", new_request_dict["headers"]) + self.assertIn("User-Agent", new_request_dict["headers"]) + + request_dict = "$default_request" + new_request_dict = utils.lower_dict_keys(request_dict) + self.assertEqual("$default_request", request_dict) + + request_dict = None + new_request_dict = utils.lower_dict_keys(request_dict) + self.assertEqual(None, request_dict) + def test_convert_to_order_dict(self): map_list = [ {"a": 1},