mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-13 08:59:44 +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 {}
|
||||
ref_variables_set = set()
|
||||
|
||||
run_times = 0
|
||||
parsed_variables_mapping = {}
|
||||
|
||||
while len(parsed_variables_mapping) != len(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:
|
||||
continue
|
||||
|
||||
|
||||
@@ -495,6 +495,16 @@ class TestParserBasic(unittest.TestCase):
|
||||
parsed_variables = parser.parse_variables_mapping(prepared_variables)
|
||||
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):
|
||||
variables = {
|
||||
"varA": "123$varB",
|
||||
|
||||
Reference in New Issue
Block a user