diff --git a/httprunner/parser.py b/httprunner/parser.py index 4dc4ee47..7e9baff3 100644 --- a/httprunner/parser.py +++ b/httprunner/parser.py @@ -294,6 +294,15 @@ class TestcaseParser(object): self.functions = functions def _get_bind_item(self, item_type, item_name): + """ get specified function or variable. + + Args: + item_type(str): functions or variables + item_name(str): function name or variable name + + Returns: + object: specified function or variable object. + """ if item_type == "functions": if item_name in self.functions: return self.functions[item_name] @@ -307,19 +316,13 @@ class TestcaseParser(object): except (NameError, TypeError): # is not builtin function, continue to search pass - elif item_type == "variables": + else: + # item_type == "variables": if item_name in self.variables: return self.variables[item_name] - else: - raise exceptions.ParamsError("bind item should only be function or variable.") - try: - assert self.file_path is not None - debugtalk_module = loader.load_debugtalk_module(self.file_path) - return loader.get_module_item(debugtalk_module, item_type, item_name) - except (AssertionError, exceptions.FunctionNotFound): - raise exceptions.ParamsError( - "{} is not defined in bind {}s!".format(item_name, item_type)) + debugtalk_module = loader.load_debugtalk_module(self.file_path) + return loader.get_module_item(debugtalk_module, item_type, item_name) def get_bind_function(self, func_name): return self._get_bind_item("functions", func_name) diff --git a/tests/test_context.py b/tests/test_context.py index 74e6a986..cd00e69e 100644 --- a/tests/test_context.py +++ b/tests/test_context.py @@ -250,7 +250,7 @@ class VariableBindsUnittest(ApiServerUnittest): variables = [] self.context.bind_variables(variables) - with self.assertRaises(exceptions.ParamsError): + with self.assertRaises(exceptions.VariableNotFound): self.context.validate(validators, resp_obj) # expected value missed in variables mapping diff --git a/tests/test_parser.py b/tests/test_parser.py index 6bd50c5e..8a409628 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -277,7 +277,7 @@ class TestTestcaseParser(unittest.TestCase): def test_eval_content_variables_search_upward(self): testcase_parser = parser.TestcaseParser() - with self.assertRaises(exceptions.ParamsError): + with self.assertRaises(exceptions.VariableNotFound): testcase_parser._eval_content_variables("/api/$SECRET_KEY") testcase_parser.file_path = "tests/data/demo_testset_hardcode.yml" @@ -300,7 +300,7 @@ class TestTestcaseParser(unittest.TestCase): "123str_value1/456" ) - with self.assertRaises(exceptions.ParamsError): + with self.assertRaises(exceptions.VariableNotFound): testcase_parser.eval_content_with_bindings("$str_3") self.assertEqual( @@ -410,7 +410,7 @@ class TestTestcaseParser(unittest.TestCase): def test_eval_content_functions_search_upward(self): testcase_parser = parser.TestcaseParser() - with self.assertRaises(exceptions.ParamsError): + with self.assertRaises(exceptions.FunctionNotFound): testcase_parser._eval_content_functions("/api/${gen_md5(abc)}") testcase_parser.file_path = "tests/data/demo_testset_hardcode.yml"