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

This commit is contained in:
httprunner
2017-09-20 22:14:52 +08:00
parent ffed8c38a2
commit 0ac4ed4bc8
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)