mirror of
https://github.com/httprunner/httprunner.git
synced 2026-06-08 09:19:41 +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 import exceptions, utils, validator
|
||||||
from httprunner.compat import basestring, builtin_str, numeric_types, str
|
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}}
|
# TODO: change variable notation from $var to {{var}}
|
||||||
# $var_1
|
# $var_1
|
||||||
variable_regex_compile = re.compile(r"\$(\w+)")
|
variable_regex_compile = re.compile(r"\$(\w+)")
|
||||||
@@ -447,7 +449,16 @@ class LazyString(object):
|
|||||||
|
|
||||||
while match_start_position < len(raw_string):
|
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)}
|
# search function like ${func($a, $b)}
|
||||||
func_match = function_regex_compile.match(raw_string, match_start_position)
|
func_match = function_regex_compile.match(raw_string, match_start_position)
|
||||||
if func_match:
|
if func_match:
|
||||||
|
|||||||
@@ -336,10 +336,20 @@ class TestParserBasic(unittest.TestCase):
|
|||||||
self.assertEqual(var.to_value(variables_mapping), "ABCabc}")
|
self.assertEqual(var.to_value(variables_mapping), "ABCabc}")
|
||||||
|
|
||||||
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$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._string, "ABC${}{{")
|
||||||
self.assertEqual(var._args, ["var_1"])
|
self.assertEqual(var._args, ["var_1"])
|
||||||
self.assertEqual(var.to_value(variables_mapping), "ABC$abc{")
|
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)
|
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"])
|
||||||
|
|||||||
Reference in New Issue
Block a user