fix: handle the case when variable_binds is OrderedDict or some other data structure

This commit is contained in:
debugtalk
2017-09-20 22:14:52 +08:00
parent c3582a59b6
commit 0bd73238d4
2 changed files with 28 additions and 3 deletions
+8 -1
View File
@@ -366,8 +366,15 @@ def update_ordered_dict(ordered_dict, override_mapping):
def override_variables_binds(variable_binds, new_mapping): def override_variables_binds(variable_binds, new_mapping):
""" convert variable_binds in testcase to ordered mapping, with new_mapping overrided """ convert variable_binds in testcase to ordered mapping, with new_mapping overrided
""" """
if isinstance(variable_binds, list):
variable_binds_ordered_dict = convert_to_order_dict(variable_binds)
elif isinstance(variable_binds, OrderedDict):
variable_binds_ordered_dict = variable_binds
else:
raise exception.ParamsError("variable_binds error!")
return update_ordered_dict( return update_ordered_dict(
convert_to_order_dict(variable_binds), variable_binds_ordered_dict,
new_mapping new_mapping
) )
+20 -2
View File
@@ -1,8 +1,10 @@
import os import os
from ate import utils from collections import OrderedDict
from ate import exception
from ate import exception, utils
from tests.base import ApiServerUnittest from tests.base import ApiServerUnittest
class TestUtils(ApiServerUnittest): class TestUtils(ApiServerUnittest):
def test_load_testcases_bad_filepath(self): def test_load_testcases_bad_filepath(self):
@@ -278,3 +280,19 @@ class TestUtils(ApiServerUnittest):
new_dict = utils.override_variables_binds(map_list, override_mapping) new_dict = utils.override_variables_binds(map_list, override_mapping)
self.assertEqual(3, new_dict["a"]) self.assertEqual(3, new_dict["a"])
self.assertEqual(4, new_dict["c"]) self.assertEqual(4, new_dict["c"])
map_list = OrderedDict(
{
"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"])
map_list = "invalid"
override_mapping = {"a": 3, "c": 4}
with self.assertRaises(exception.ParamsError):
utils.override_variables_binds(map_list, override_mapping)