update lower_dict_keys, avoid mistakes in OrderDict

This commit is contained in:
debugtalk
2017-11-03 12:55:23 +08:00
parent 895478719d
commit 36e7c7e4cf
2 changed files with 37 additions and 17 deletions

View File

@@ -287,31 +287,28 @@ def search_conf_item(start_path, item_type, item_name):
return search_conf_item(dir_path, item_type, item_name) return search_conf_item(dir_path, item_type, item_name)
def lower_dict_key(origin_dict, depth=1): def lower_dict_keys(origin_dict):
""" convert dict key to lower case, with depth control supported. """ 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(): return {
if depth >= 2: key.lower(): value
new_dict[key] = value for key, value in origin_dict.items()
continue }
if isinstance(value, dict):
value = lower_dict_key(value, depth+1)
new_dict[key.lower()] = value
return new_dict
def lower_config_dict_key(config_dict): def lower_config_dict_key(config_dict):
""" convert key in config dict to lower case, convertion will occur in two places: """ convert key in config dict to lower case, convertion will occur in two places:
1, all keys in config dict; 1, all keys in config dict;
2, all keys in config["request"] 2, all keys in config["request"]
""" """
config_dict = lower_dict_key(config_dict) config_dict = lower_dict_keys(config_dict)
if "request" in config_dict and isinstance(config_dict["request"], dict): if "request" in config_dict:
config_dict["request"] = lower_dict_key(config_dict["request"]) config_dict["request"] = lower_dict_keys(config_dict["request"])
return config_dict return config_dict

View File

@@ -245,6 +245,29 @@ class TestUtils(ApiServerUnittest):
new_dict = utils.lower_config_dict_key(origin_dict) new_dict = utils.lower_config_dict_key(origin_dict)
self.assertIn("$default_request", new_dict["request"]) 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): def test_convert_to_order_dict(self):
map_list = [ map_list = [
{"a": 1}, {"a": 1},