def _eval_content_with_bindings(self, content): functions_list = testcase.extract_functions(content) testcase_parser = self.context.testcase_parser if (functions_list == []): return testcase_parser.eval_content_with_bindings(content) for func_content in functions_list: function_meta = testcase.parse_function(func_content) func_name = function_meta['func_name'] func = getattr(self, func_name, None) #类中没有相应的函数 if (func == None): return testcase_parser.eval_content_with_bindings(content) args = function_meta.get('args', []) kwargs = function_meta.get('kwargs', {}) args = self._eval_content_with_bindings(args) kwargs = self._eval_content_with_bindings(kwargs) eval_value = func(*args, **kwargs) func_content = "${" + func_content + "}" if func_content == content: # content is a variable content = eval_value else: # content contains one or many variables content = content.replace(func_content, str(eval_value), 1) return content
def test_parse_function(self): self.assertEqual( testcase.parse_function("func()"), {'func_name': 'func', 'args': [], 'kwargs': {}} ) self.assertEqual( testcase.parse_function("func(5)"), {'func_name': 'func', 'args': [5], 'kwargs': {}} ) self.assertEqual( testcase.parse_function("func(1, 2)"), {'func_name': 'func', 'args': [1, 2], 'kwargs': {}} ) self.assertEqual( testcase.parse_function("func(a=1, b=2)"), {'func_name': 'func', 'args': [], 'kwargs': {'a': 1, 'b': 2}} ) self.assertEqual( testcase.parse_function("func(a= 1, b =2)"), {'func_name': 'func', 'args': [], 'kwargs': {'a': 1, 'b': 2}} ) self.assertEqual( testcase.parse_function("func(1, 2, a=3, b=4)"), {'func_name': 'func', 'args': [1, 2], 'kwargs': {'a': 3, 'b': 4}} ) self.assertEqual( testcase.parse_function("func($request, 123)"), {'func_name': 'func', 'args': ["$request", 123], 'kwargs': {}} ) self.assertEqual( testcase.parse_function("func( )"), {'func_name': 'func', 'args': [], 'kwargs': {}} ) self.assertEqual( testcase.parse_function("func(hello world, a=3, b=4)"), {'func_name': 'func', 'args': ["hello world"], 'kwargs': {'a': 3, 'b': 4}} ) self.assertEqual( testcase.parse_function("func($request, 12 3)"), {'func_name': 'func', 'args': ["$request", '12 3'], 'kwargs': {}} )
def test_parse_function(self): self.assertEqual( testcase.parse_function("func()"), {'func_name': 'func', 'args': [], 'kwargs': {}} ) self.assertEqual( testcase.parse_function("func(5)"), {'func_name': 'func', 'args': [5], 'kwargs': {}} ) self.assertEqual( testcase.parse_function("func(1, 2)"), {'func_name': 'func', 'args': [1, 2], 'kwargs': {}} ) self.assertEqual( testcase.parse_function("func(a=1, b=2)"), {'func_name': 'func', 'args': [], 'kwargs': {'a': 1, 'b': 2}} ) self.assertEqual( testcase.parse_function("func(a= 1, b =2)"), {'func_name': 'func', 'args': [], 'kwargs': {'a': 1, 'b': 2}} ) self.assertEqual( testcase.parse_function("func(1, 2, a=3, b=4)"), {'func_name': 'func', 'args': [1, 2], 'kwargs': {'a': 3, 'b': 4}} )