diff --git a/ate/__init__.py b/ate/__init__.py index 83e147c6..3966a5f1 100644 --- a/ate/__init__.py +++ b/ate/__init__.py @@ -1 +1 @@ -__version__ = '0.6.0' \ No newline at end of file +__version__ = '0.6.1' \ No newline at end of file diff --git a/ate/context.py b/ate/context.py index e9b86f73..49214898 100644 --- a/ate/context.py +++ b/ate/context.py @@ -39,7 +39,7 @@ class Context(object): self.testcase_parser.bind_variables(self.testcase_variables_mapping) if level == "testset": - self.import_module_functions(["ate.built_in"], "testset") + self.import_module_items(["ate.built_in"], "testset") def import_requires(self, modules): """ import required modules dynamicly @@ -64,7 +64,7 @@ class Context(object): self.__update_context_functions_config(level, eval_function_binds) - def import_module_functions(self, modules, level="testcase"): + def import_module_items(self, modules, level="testcase"): """ import modules and bind all functions within the context """ sys.path.insert(0, os.getcwd()) @@ -73,6 +73,10 @@ class Context(object): imported_functions_dict = utils.filter_module(imported_module, "function") self.__update_context_functions_config(level, imported_functions_dict) + imported_variables_dict = utils.filter_module(imported_module, "variable") + variable_binds = [{key: value} for key, value in imported_variables_dict.items()] + self.bind_variables(variable_binds, level) + def bind_variables(self, variable_binds, level="testcase"): """ bind variables to testset context or current testcase context. variables in testset context can be used in all testcases of current test suite. diff --git a/ate/runner.py b/ate/runner.py index 012fb9f0..ae644737 100644 --- a/ate/runner.py +++ b/ate/runner.py @@ -25,7 +25,7 @@ class Runner(object): "lambda *str_args: hashlib.md5(''.join(str_args).\ encode('utf-8')).hexdigest()" }, - "import_module_functions": ["test.data.debugtalk"], + "import_module_items": ["test.data.debugtalk"], "variable_binds": [ {"TOKEN": "debugtalk"}, {"random": "${gen_random_string(5)}"}, @@ -41,8 +41,10 @@ class Runner(object): function_binds = config_dict.get('function_binds', {}) self.context.bind_functions(function_binds, level) - module_functions = config_dict.get('import_module_functions', []) - self.context.import_module_functions(module_functions, level) + # import_module_functions will be deprecated soon + module_items = config_dict.get('import_module_items', []) \ + or config_dict.get('import_module_functions', []) + self.context.import_module_items(module_items, level) variable_binds = config_dict.get('variable_binds', []) self.context.bind_variables(variable_binds, level) diff --git a/tests/data/demo_binds.yml b/tests/data/demo_binds.yml index 5a1a70d9..18135cc7 100644 --- a/tests/data/demo_binds.yml +++ b/tests/data/demo_binds.yml @@ -27,7 +27,7 @@ bind_lambda_functions_with_import: bind_module_functions: function_binds: - import_module_functions: + import_module_items: - tests.data.debugtalk variable_binds: - TOKEN: debugtalk diff --git a/tests/data/demo_testset_template_import_functions.yml b/tests/data/demo_testset_template_import_functions.yml index 702c1df9..bfb789bc 100644 --- a/tests/data/demo_testset_template_import_functions.yml +++ b/tests/data/demo_testset_template_import_functions.yml @@ -1,6 +1,6 @@ - config: name: "create user testsets." - import_module_functions: + import_module_items: - tests.data.debugtalk variable_binds: - user_agent: 'iOS/10.3' diff --git a/tests/test_context.py b/tests/test_context.py index 96609cac..62b7565f 100644 --- a/tests/test_context.py +++ b/tests/test_context.py @@ -140,9 +140,9 @@ class VariableBindsUnittest(unittest.TestCase): authorization = context_variables["authorization"] self.assertEqual(utils.gen_md5(TOKEN, data, random), authorization) - def test_import_module_functions(self): + def test_import_module_items(self): testcase1 = { - "import_module_functions": ["tests.data.debugtalk"], + "import_module_items": ["tests.data.debugtalk"], "variable_binds": [ {"TOKEN": "debugtalk"}, {"random": "${gen_random_string(5)}"}, @@ -153,8 +153,8 @@ class VariableBindsUnittest(unittest.TestCase): testcase2 = self.testcases["bind_module_functions"] for testcase in [testcase1, testcase2]: - module_functions = testcase.get('import_module_functions', []) - self.context.import_module_functions(module_functions) + module_items = testcase.get('import_module_items', []) + self.context.import_module_items(module_items) variable_binds = testcase['variable_binds'] self.context.bind_variables(variable_binds) @@ -173,6 +173,9 @@ class VariableBindsUnittest(unittest.TestCase): self.assertEqual(len(context_variables["authorization"]), 32) authorization = context_variables["authorization"] self.assertEqual(utils.gen_md5(TOKEN, data, random), authorization) + self.assertIn("SECRET_KEY", context_variables) + SECRET_KEY = context_variables["SECRET_KEY"] + self.assertEqual(SECRET_KEY, "DebugTalk") def test_register_request(self): request_dict = { @@ -195,11 +198,10 @@ class VariableBindsUnittest(unittest.TestCase): with self.assertRaises(ParamsError): self.context.register_request(request_dict) - def test_get_parsed_request(self): test_runner = runner.Runner() testcase = { - "import_module_functions": ["tests.data.debugtalk"], + "import_module_items": ["tests.data.debugtalk"], "variable_binds": [ {"TOKEN": "debugtalk"}, {"random": "${gen_random_string(5)}"}, @@ -212,7 +214,8 @@ class VariableBindsUnittest(unittest.TestCase): "headers": { "Content-Type": "application/json", "authorization": "$authorization", - "random": "$random" + "random": "$random", + "SECRET_KEY": "$SECRET_KEY" }, "data": "$data" } @@ -225,3 +228,4 @@ class VariableBindsUnittest(unittest.TestCase): self.assertEqual(len(parsed_request["headers"]["random"]), 5) self.assertIn("data", parsed_request) self.assertEqual(parsed_request["data"], testcase["variable_binds"][2]["data"]) + self.assertEqual(parsed_request["headers"]["secret_key"], "DebugTalk")