mirror of
https://github.com/httprunner/httprunner.git
synced 2026-08-25 01:59:52 +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
|
continue
|
||||||
|
|
||||||
var_value = variables_mapping[var_name]
|
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:
|
try:
|
||||||
parsed_value = parse_content(var_value, parsed_variables)
|
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