mirror of
https://github.com/httprunner/httprunner.git
synced 2026-07-11 07:22:33 +08:00
fix: match duplicate variable/function in raw string
e.g.
"ABC$var_1/123$var_1/456"
"ABC${func1($var_1, $var_3)}--${func1($var_1, $var_3)}"
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
__title__ = 'HttpRunner'
|
__title__ = 'HttpRunner'
|
||||||
__description__ = 'One-stop solution for HTTP(S) testing.'
|
__description__ = 'One-stop solution for HTTP(S) testing.'
|
||||||
__url__ = 'https://github.com/HttpRunner/HttpRunner'
|
__url__ = 'https://github.com/HttpRunner/HttpRunner'
|
||||||
__version__ = '2.1.1'
|
__version__ = '2.1.2'
|
||||||
__author__ = 'debugtalk'
|
__author__ = 'debugtalk'
|
||||||
__author_email__ = 'mail@debugtalk.com'
|
__author_email__ = 'mail@debugtalk.com'
|
||||||
__license__ = 'Apache-2.0'
|
__license__ = 'Apache-2.0'
|
||||||
|
|||||||
@@ -458,6 +458,7 @@ class LazyString(object):
|
|||||||
self.check_variables_set
|
self.check_variables_set
|
||||||
)
|
)
|
||||||
args_mapping[match_start_position] = lazy_func
|
args_mapping[match_start_position] = lazy_func
|
||||||
|
match_start_position += len(func_str)
|
||||||
|
|
||||||
# search variable like $var
|
# search variable like $var
|
||||||
var_match_list = regex_findall_variables(self._string)
|
var_match_list = regex_findall_variables(self._string)
|
||||||
@@ -474,6 +475,7 @@ class LazyString(object):
|
|||||||
# self._string = self._string.replace("}", "}}")
|
# self._string = self._string.replace("}", "}}")
|
||||||
self._string = self._string.replace(var, "{}", 1)
|
self._string = self._string.replace(var, "{}", 1)
|
||||||
args_mapping[match_start_position] = var_name
|
args_mapping[match_start_position] = var_name
|
||||||
|
match_start_position += len(var)
|
||||||
|
|
||||||
self._args = [args_mapping[key] for key in sorted(args_mapping.keys())]
|
self._args = [args_mapping[key] for key in sorted(args_mapping.keys())]
|
||||||
|
|
||||||
|
|||||||
@@ -320,6 +320,11 @@ class TestParserBasic(unittest.TestCase):
|
|||||||
self.assertEqual(var._args, ["var_1"])
|
self.assertEqual(var._args, ["var_1"])
|
||||||
self.assertEqual(var.to_value(variables_mapping), "ABCabc$")
|
self.assertEqual(var.to_value(variables_mapping), "ABCabc$")
|
||||||
|
|
||||||
|
var = parser.LazyString("ABC$var_1/123$var_1/456", functions_mapping, check_variables_set)
|
||||||
|
self.assertEqual(var._string, "ABC{}/123{}/456")
|
||||||
|
self.assertEqual(var._args, ["var_1", "var_1"])
|
||||||
|
self.assertEqual(var.to_value(variables_mapping), "ABCabc/123abc/456")
|
||||||
|
|
||||||
var = parser.LazyString("ABC$var_1{", functions_mapping, check_variables_set)
|
var = parser.LazyString("ABC$var_1{", functions_mapping, check_variables_set)
|
||||||
self.assertEqual(var._string, "ABC{}{")
|
self.assertEqual(var._string, "ABC{}{")
|
||||||
self.assertEqual(var._args, ["var_1"])
|
self.assertEqual(var._args, ["var_1"])
|
||||||
@@ -361,6 +366,27 @@ class TestParserBasic(unittest.TestCase):
|
|||||||
self.assertEqual(var._string, "ABC{}{}")
|
self.assertEqual(var._string, "ABC{}{}")
|
||||||
self.assertEqual(var.to_value(variables_mapping), "ABCabc123True")
|
self.assertEqual(var.to_value(variables_mapping), "ABCabc123True")
|
||||||
|
|
||||||
|
var = parser.LazyString(
|
||||||
|
"ABC${func1($var_1, $var_3)}--${func1($var_1, $var_3)}",
|
||||||
|
functions_mapping,
|
||||||
|
check_variables_set
|
||||||
|
)
|
||||||
|
self.assertEqual(var._string, "ABC{}--{}")
|
||||||
|
self.assertEqual(var.to_value(variables_mapping), "ABCabc123--abc123")
|
||||||
|
|
||||||
|
var = parser.LazyString("ABC${func1($var_1, $var_3)}$var_1", functions_mapping, check_variables_set)
|
||||||
|
self.assertEqual(var._string, "ABC{}{}")
|
||||||
|
self.assertEqual(var.to_value(variables_mapping), "ABCabc123abc")
|
||||||
|
|
||||||
|
# TODO: fix
|
||||||
|
# var = parser.LazyString(
|
||||||
|
# "ABC${func1($var_1, $var_3)}$var_1--${func1($var_1, $var_3)}$var_1",
|
||||||
|
# functions_mapping,
|
||||||
|
# check_variables_set
|
||||||
|
# )
|
||||||
|
# self.assertEqual(var._string, "ABC{}{}--{}{}")
|
||||||
|
# self.assertEqual(var.to_value(variables_mapping), "ABCabc123abc--abc123abc")
|
||||||
|
|
||||||
var = parser.LazyString("ABC${func1($var_1, $var_3)}DE$var_4", functions_mapping, check_variables_set)
|
var = parser.LazyString("ABC${func1($var_1, $var_3)}DE$var_4", functions_mapping, check_variables_set)
|
||||||
self.assertEqual(var._string, "ABC{}DE{}")
|
self.assertEqual(var._string, "ABC{}DE{}")
|
||||||
self.assertEqual(var.to_value(variables_mapping), "ABCabc123DE{'a': 1}")
|
self.assertEqual(var.to_value(variables_mapping), "ABCabc123DE{'a': 1}")
|
||||||
|
|||||||
Reference in New Issue
Block a user