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

View File

@@ -366,8 +366,15 @@ def update_ordered_dict(ordered_dict, override_mapping):
def override_variables_binds(variable_binds, new_mapping):
""" 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(
convert_to_order_dict(variable_binds),
variable_binds_ordered_dict,
new_mapping
)

View File

@@ -1,8 +1,10 @@
import os
from ate import utils
from ate import exception
from collections import OrderedDict
from ate import exception, utils
from tests.base import ApiServerUnittest
class TestUtils(ApiServerUnittest):
def test_load_testcases_bad_filepath(self):
@@ -278,3 +280,19 @@ class TestUtils(ApiServerUnittest):
new_dict = utils.override_variables_binds(map_list, override_mapping)
self.assertEqual(3, new_dict["a"])
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)