refactor handling binds data structure

This commit is contained in:
debugtalk
2017-09-19 18:10:54 +08:00
parent cb7bb253da
commit 99da071fba
3 changed files with 85 additions and 5 deletions

View File

@@ -68,13 +68,13 @@ class ResponseObject(object):
@return (OrderDict) variable binds ordered dict
"""
extracted_variables_mapping = OrderedDict()
extract_binds_order_dict = utils.convert_to_order_dict(extract_binds)
for extract_bind in extract_binds:
for key, field in extract_bind.items():
if not isinstance(field, utils.string_type):
raise exception.ParamsError("invalid extract_binds in testcase extract_binds!")
for key, field in extract_binds_order_dict.items():
if not isinstance(field, utils.string_type):
raise exception.ParamsError("invalid extract_binds in testcase extract_binds!")
extracted_variables_mapping[key] = self.extract_field(field)
extracted_variables_mapping[key] = self.extract_field(field)
return extracted_variables_mapping

View File

@@ -9,6 +9,7 @@ import random
import re
import string
import types
from collections import OrderedDict
import yaml
from ate import exception
@@ -309,3 +310,52 @@ def lower_dict_key(origin_dict, depth=1):
new_dict[key.lower()] = value
return new_dict
def convert_to_order_dict(map_list):
""" convert mapping in list to ordered dict
@param (list) map_list
[
{"a": 1},
{"b": 2}
]
@return (OrderDict)
OrderDict({
"a": 1,
"b": 2
})
"""
ordered_dict = OrderedDict()
for map_dict in map_list:
ordered_dict.update(map_dict)
return ordered_dict
def update_ordered_dict(ordered_dict, override_mapping):
""" override ordered_dict with new mapping
@param
(OrderDict) ordered_dict
OrderDict({
"a": 1,
"b": 2
})
(dict) override_mapping
{"a": 3, "c": 4}
@return (OrderDict)
OrderDict({
"a": 3,
"b": 2,
"c": 4
})
"""
for var, value in override_mapping.items():
ordered_dict.update({var: value})
return ordered_dict
def override_variables_binds(variable_binds, new_mapping):
""" convert variable_binds in testcase to ordered mapping, with new_mapping overrided
"""
return update_ordered_dict(
convert_to_order_dict(variable_binds),
new_mapping
)

View File

@@ -241,3 +241,33 @@ class TestUtils(ApiServerUnittest):
self.assertIn("headers", new_dict["request"])
self.assertIn("Accept", new_dict["request"]["headers"])
self.assertIn("User-Agent", new_dict["request"]["headers"])
def test_convert_to_order_dict(self):
map_list = [
{"a": 1},
{"b": 2}
]
ordered_dict = utils.convert_to_order_dict(map_list)
self.assertIsInstance(ordered_dict, dict)
self.assertIn("a", ordered_dict)
def test_update_ordered_dict(self):
map_list = [
{"a": 1},
{"b": 2}
]
ordered_dict = utils.convert_to_order_dict(map_list)
override_mapping = {"a": 3, "c": 4}
new_dict = utils.update_ordered_dict(ordered_dict, override_mapping)
self.assertEqual(3, new_dict["a"])
self.assertEqual(4, new_dict["c"])
def test_override_variables_binds(self):
map_list = [
{"a": 1},
{"b": 2}
]
override_mapping = {"a": 3, "c": 4}
new_dict = utils.override_variables_binds(map_list, override_mapping)
self.assertEqual(3, new_dict["a"])
self.assertEqual(4, new_dict["c"])