def test_load_folder_files(self): folder = os.path.join(os.getcwd(), 'tests') file1 = os.path.join(os.getcwd(), 'tests', 'test_utils.py') file2 = os.path.join(os.getcwd(), 'tests', 'api', 'reset_all.yml') files = load.load_folder_files(folder, recursive=False) self.assertEqual(files, []) files = load.load_folder_files(folder) self.assertIn(file2, files) self.assertNotIn(file1, files) files = load.load_folder_files("not_existed_foulder", recursive=False) self.assertEqual([], files) files = load.load_folder_files(file2, recursive=False) self.assertEqual([], files)
def load_cases(path, dot_env_path=None): """ load testcases from file path, extend and merge with api/test_case definitions. Args: path (str): test_case/testsuite file/foler path. path could be in 2 types: - absolute/relative file path - absolute/relative folder path dot_env_path (str): specified .env file path Returns: dict: test_case mapping, include project_mapping and testcases. each test_case is corresponding to a file. { "project_mapping": { "PWD": "XXXXX", "functions": {}, "env": {} }, "testcases": [ { # test_case data structure "config": { "name": "desc1", "path": "testcase1_path", "variables": [], # optional }, "teststeps": [ # test data structure { 'name': 'test desc1', 'variables': [], # optional 'extract': [], # optional 'validate': [], 'request': {} }, test_dict_2 # another test dict ] }, testcase_2_dict # another test_case dict ], "testsuites": [ { # testsuite data structure "config": {}, "testcases": { "testcase1": {}, "testcase2": {}, } }, testsuite_2_dict ] } """ tests_mapping = {"project_mapping": load_project_data(path, dot_env_path)} def __load_file_content(path): loaded_content = None try: loaded_content = load_test_file(path) except exceptions.ApiNotFound as ex: logger.log_warning("Invalid api reference in {}: {}".format( path, ex)) except exceptions.FileFormatError: logger.log_warning("Invalid test file format: {}".format(path)) if not loaded_content: pass elif loaded_content["type"] == "testsuite": tests_mapping.setdefault("testsuites", []).append(loaded_content) elif loaded_content["type"] == "test_case": tests_mapping.setdefault("testcases", []).append(loaded_content) elif loaded_content["type"] == "api": tests_mapping.setdefault("apis", []).append(loaded_content) if os.path.isdir(path): files_list = load_folder_files(path) for path in files_list: __load_file_content(path) elif os.path.isfile(path): __load_file_content(path) return tests_mapping