mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-12 02:21:29 +08:00
use $$ to escape $ notation
This commit is contained in:
@@ -7,6 +7,8 @@ import re
|
||||
from httprunner import exceptions, utils, validator
|
||||
from httprunner.compat import basestring, builtin_str, numeric_types, str
|
||||
|
||||
# use $$ to escape $ notation
|
||||
dolloar_regex_compile = re.compile(r"\$\$")
|
||||
# TODO: change variable notation from $var to {{var}}
|
||||
# $var_1
|
||||
variable_regex_compile = re.compile(r"\$(\w+)")
|
||||
@@ -447,7 +449,16 @@ class LazyString(object):
|
||||
|
||||
while match_start_position < len(raw_string):
|
||||
|
||||
# Notice: functions must be handled before variables
|
||||
# Notice: notation priority
|
||||
# $$ > ${func($a, $b)} > $var
|
||||
|
||||
# search $$
|
||||
dollar_match = dolloar_regex_compile.match(raw_string, match_start_position)
|
||||
if dollar_match:
|
||||
match_start_position = dollar_match.end()
|
||||
self._string += "$"
|
||||
continue
|
||||
|
||||
# search function like ${func($a, $b)}
|
||||
func_match = function_regex_compile.match(raw_string, match_start_position)
|
||||
if func_match:
|
||||
|
||||
@@ -336,10 +336,20 @@ class TestParserBasic(unittest.TestCase):
|
||||
self.assertEqual(var.to_value(variables_mapping), "ABCabc}")
|
||||
|
||||
var = parser.LazyString("ABC$$var_1{", functions_mapping, check_variables_set)
|
||||
self.assertEqual(var._string, "ABC$var_1{{")
|
||||
self.assertEqual(var._args, [])
|
||||
self.assertEqual(var.to_value(variables_mapping), "ABC$var_1{")
|
||||
|
||||
var = parser.LazyString("ABC$$$var_1{", functions_mapping, check_variables_set)
|
||||
self.assertEqual(var._string, "ABC${}{{")
|
||||
self.assertEqual(var._args, ["var_1"])
|
||||
self.assertEqual(var.to_value(variables_mapping), "ABC$abc{")
|
||||
|
||||
var = parser.LazyString("ABC$$$$var_1{", functions_mapping, check_variables_set)
|
||||
self.assertEqual(var._string, "ABC$$var_1{{")
|
||||
self.assertEqual(var._args, [])
|
||||
self.assertEqual(var.to_value(variables_mapping), "ABC$$var_1{")
|
||||
|
||||
var = parser.LazyString("ABC$var_1${", functions_mapping, check_variables_set)
|
||||
self.assertEqual(var._string, "ABC{}${{")
|
||||
self.assertEqual(var._args, ["var_1"])
|
||||
|
||||
Reference in New Issue
Block a user