mirror of
https://github.com/httprunner/httprunner.git
synced 2026-07-08 17:21:54 +08:00
fix: dead circle in parse_variables_mapping
This commit is contained in:
@@ -638,11 +638,21 @@ def parse_variables_mapping(variables_mapping, ignore=False):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
variables_mapping = variables_mapping or {}
|
variables_mapping = variables_mapping or {}
|
||||||
ref_variables_set = set()
|
run_times = 0
|
||||||
|
|
||||||
parsed_variables_mapping = {}
|
parsed_variables_mapping = {}
|
||||||
|
|
||||||
while len(parsed_variables_mapping) != len(variables_mapping):
|
while len(parsed_variables_mapping) != len(variables_mapping):
|
||||||
for var_name in variables_mapping:
|
for var_name in variables_mapping:
|
||||||
|
|
||||||
|
run_times += 1
|
||||||
|
if run_times > len(variables_mapping) * 4:
|
||||||
|
not_found_variables = {
|
||||||
|
key: variables_mapping[key]
|
||||||
|
for key in variables_mapping
|
||||||
|
if key not in parsed_variables_mapping
|
||||||
|
}
|
||||||
|
raise exceptions.VariableNotFound(not_found_variables)
|
||||||
|
|
||||||
if var_name in parsed_variables_mapping:
|
if var_name in parsed_variables_mapping:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
|||||||
@@ -495,6 +495,16 @@ class TestParserBasic(unittest.TestCase):
|
|||||||
parsed_variables = parser.parse_variables_mapping(prepared_variables)
|
parsed_variables = parser.parse_variables_mapping(prepared_variables)
|
||||||
self.assertEqual(parsed_variables["varA"], parsed_variables["varB"])
|
self.assertEqual(parsed_variables["varA"], parsed_variables["varB"])
|
||||||
|
|
||||||
|
def test_parse_variables_mapping_dead_circle(self):
|
||||||
|
variables = {
|
||||||
|
"varA": "$varB",
|
||||||
|
"varB": "123$varC"
|
||||||
|
}
|
||||||
|
check_variables_set = {"varA", "varB", "varC"}
|
||||||
|
prepared_variables = parser.prepare_lazy_data(variables, {}, check_variables_set)
|
||||||
|
with self.assertRaises(exceptions.VariableNotFound):
|
||||||
|
parser.parse_variables_mapping(prepared_variables)
|
||||||
|
|
||||||
def test_parse_variables_mapping_not_found(self):
|
def test_parse_variables_mapping_not_found(self):
|
||||||
variables = {
|
variables = {
|
||||||
"varA": "123$varB",
|
"varA": "123$varB",
|
||||||
|
|||||||
Reference in New Issue
Block a user