mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-12 11:29:48 +08:00
deep_update_dict: update origin dict with override dict recursively
This commit is contained in:
15
ate/utils.py
15
ate/utils.py
@@ -294,3 +294,18 @@ def match_expected(value, expected, comparator="eq"):
|
||||
return True
|
||||
except AssertionError:
|
||||
return False
|
||||
|
||||
def deep_update_dict(origin_dict, override_dict):
|
||||
""" update origin dict with override dict recursively
|
||||
e.g. origin_dict = {'a': 1, 'b': {'c': 2, 'd': 4}}
|
||||
override_dict = {'b': {'c': 3}}
|
||||
return: {'a': 1, 'b': {'c': 3, 'd': 4}}
|
||||
"""
|
||||
for key, val in override_dict.items():
|
||||
if isinstance(val, dict):
|
||||
tmp = deep_update_dict(origin_dict.get(key, {}), val)
|
||||
origin_dict[key] = tmp
|
||||
else:
|
||||
origin_dict[key] = override_dict[key]
|
||||
|
||||
return origin_dict
|
||||
|
||||
@@ -279,3 +279,12 @@ class TestUtils(ApiServerUnittest):
|
||||
|
||||
self.assertTrue(utils.match_expected("2017-06-29 17:29:58", 19, "str_len"))
|
||||
self.assertTrue(utils.match_expected("2017-06-29 17:29:58", "19", "str_len"))
|
||||
|
||||
def test_deep_update_dict(self):
|
||||
origin_dict = {'a': 1, 'b': {'c': 3, 'd': 4}, 'f': 6}
|
||||
override_dict = {'a': 2, 'b': {'c': 33, 'e': 5}, 'g': 7}
|
||||
updated_dict = utils.deep_update_dict(origin_dict, override_dict)
|
||||
self.assertEqual(
|
||||
updated_dict,
|
||||
{'a': 2, 'b': {'c': 33, 'd': 4, 'e': 5}, 'f': 6, 'g': 7}
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user