diff --git a/ate/utils.py b/ate/utils.py index f51e84be..437dc07e 100644 --- a/ate/utils.py +++ b/ate/utils.py @@ -151,10 +151,16 @@ def parse_variables(content, variable_mapping): raise ParamsError( "%s is not defined in bind variables!" % variable_name) - content = content.replace( - "${}".format(variable_name), - variable_value - ) + if "${}".format(variable_name) == content: + # content is a variable + content = variable_value + else: + # content contains one or many variables + content = content.replace( + "${}".format(variable_name), + str(variable_value) + ) + return content def is_functon(content): diff --git a/tests/test_utils.py b/tests/test_utils.py index 6c00d1e1..5556f645 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -164,7 +164,10 @@ class TestUtils(ApiServerUnittest): def test_parse_variables(self): variable_mapping = { "var_1": "abc", - "var_2": "def" + "var_2": "def", + "var_3": 123, + "var_4": {"a": 1}, + "var_5": True } self.assertEqual( utils.parse_variables("$var_1", variable_mapping), @@ -190,6 +193,26 @@ class TestUtils(ApiServerUnittest): utils.parse_variables("${func($var_1, $var_2, xyz)}", variable_mapping), "${func(abc, def, xyz)}" ) + self.assertEqual( + utils.parse_variables("$var_3", variable_mapping), + 123 + ) + self.assertEqual( + utils.parse_variables("$var_4", variable_mapping), + {"a": 1} + ) + self.assertEqual( + utils.parse_variables("$var_5", variable_mapping), + True + ) + self.assertEqual( + utils.parse_variables("abc$var_5", variable_mapping), + "abcTrue" + ) + self.assertEqual( + utils.parse_variables("abc$var_4", variable_mapping), + "abc{'a': 1}" + ) def test_is_functon(self): content = "${func()}"