mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-12 02:21:29 +08:00
fix parser:
check if reference variable itself check if reference variable not in variables_mapping
This commit is contained in:
@@ -173,7 +173,25 @@ def parse_variables_mapping(variables_mapping: Dict[Text, Any]) -> Dict[Text, An
|
||||
continue
|
||||
|
||||
var_value = variables_mapping[var_name]
|
||||
# variables = extract_variables(var_value)
|
||||
variables = extract_variables(var_value)
|
||||
|
||||
# check if reference variable itself
|
||||
if var_name in variables:
|
||||
# e.g.
|
||||
# variables_mapping = {"token": "abc$token"}
|
||||
# variables_mapping = {"key": ["$key", 2]}
|
||||
raise exceptions.VariableNotFound(var_name)
|
||||
|
||||
# check if reference variable not in variables_mapping
|
||||
not_defined_variables = [
|
||||
v_name
|
||||
for v_name in variables
|
||||
if v_name not in variables_mapping
|
||||
]
|
||||
if not_defined_variables:
|
||||
# e.g. {"varA": "123$varB", "varB": "456$varC"}
|
||||
# e.g. {"varC": "${sum_two($a, $b)}"}
|
||||
raise VariableNotFound(not_defined_variables)
|
||||
|
||||
try:
|
||||
parsed_value = parse_content(var_value, parsed_variables)
|
||||
|
||||
30
httprunner/v3/parser_test.py
Normal file
30
httprunner/v3/parser_test.py
Normal file
@@ -0,0 +1,30 @@
|
||||
import unittest
|
||||
|
||||
from httprunner.v3.parser import parse_variables_mapping
|
||||
from httprunner.v3.exceptions import VariableNotFound
|
||||
|
||||
|
||||
class TestParserBasic(unittest.TestCase):
|
||||
|
||||
def test_parse_variables_mapping(self):
|
||||
variables = {
|
||||
"varA": "$varB",
|
||||
"varB": "$varC",
|
||||
"varC": "123",
|
||||
"a": 1,
|
||||
"b": 2
|
||||
}
|
||||
parsed_variables = parse_variables_mapping(variables)
|
||||
print(parsed_variables)
|
||||
self.assertEqual(parsed_variables["varA"], "123")
|
||||
self.assertEqual(parsed_variables["varB"], "123")
|
||||
|
||||
def test_parse_variables_mapping_exception(self):
|
||||
variables = {
|
||||
"varA": "$varB",
|
||||
"varB": "$varC",
|
||||
"a": 1,
|
||||
"b": 2
|
||||
}
|
||||
with self.assertRaises(VariableNotFound):
|
||||
parse_variables_mapping(variables)
|
||||
Reference in New Issue
Block a user