Skip to content

Commit

Permalink
fix: replace $$ notation with $ and consider it as normal char.
Browse files Browse the repository at this point in the history
  • Loading branch information
httprunner committed Apr 17, 2019
1 parent 3339ebf commit 9d1b0d3
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 3 deletions.
4 changes: 3 additions & 1 deletion httprunner/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -596,7 +596,9 @@ def prepare_lazy_data(content, functions_mapping=None, check_variables_set=None,
# content is in string format here
if not is_var_or_func_exist(content):
# content is neither variable nor function
return content
# replace $$ notation with $ and consider it as normal char.
# e.g. abc => abc, abc$$def => abc$def, abc$$$$def$$h => abc$$def$h
return content.replace("$$", "$")

functions_mapping = functions_mapping or {}
check_variables_set = check_variables_set or set()
Expand Down
27 changes: 25 additions & 2 deletions tests/test_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -730,8 +730,8 @@ def test_parse_variables_mapping_dollar_notation(self):
}
prepared_variables = parser.prepare_lazy_data(variables, functions, variables.keys())
parsed_testcase = parser.parse_variables_mapping(prepared_variables)
self.assertEqual(parsed_testcase["varB"], "456$$0")
self.assertEqual(parsed_testcase["varA"], "123456$$0")
self.assertEqual(parsed_testcase["varA"], "123456$0")
self.assertEqual(parsed_testcase["varB"], "456$0")
self.assertEqual(parsed_testcase["varC"], 3)

def test_prepare_lazy_data(self):
Expand Down Expand Up @@ -770,6 +770,29 @@ def test_prepare_lazy_data_not_found(self):
variables.keys()
)

def test_prepare_lazy_data_dual_dollar(self):
variables = {
"num0": 123,
"var1": "abc$$num0",
"var2": "abc$$$num0",
"var3": "abc$$$$num0",
}
functions = {
"sum_two": sum_two
}
prepared_variables = parser.prepare_lazy_data(
variables,
functions,
variables.keys()
)
self.assertEqual(prepared_variables["var1"], "abc$num0")
self.assertIsInstance(prepared_variables["var2"], parser.LazyString)
self.assertEqual(prepared_variables["var3"], "abc$$num0")

parsed_variables = parser.parse_variables_mapping(prepared_variables)
self.assertEqual(parsed_variables["var1"], "abc$num0")
self.assertEqual(parsed_variables["var2"], "abc$123")
self.assertEqual(parsed_variables["var3"], "abc$$num0")

class TestParser(unittest.TestCase):

Expand Down

0 comments on commit 9d1b0d3

Please sign in to comment.