From b5be7f0cb4210d0cd58cf3333bb79a8e7d163671 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Wed, 1 Jan 2020 22:34:41 +0800 Subject: [PATCH] refactor: is_test_path --- httprunner/api.py | 2 +- httprunner/loader/__init__.py | 4 ++-- httprunner/loader/check.py | 35 ++++++++++++++++++++++++----------- 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/httprunner/api.py b/httprunner/api.py index cbb7fc0f..fa4fe0d7 100644 --- a/httprunner/api.py +++ b/httprunner/api.py @@ -289,7 +289,7 @@ class HttpRunner(object): """ logger.log_info("HttpRunner version: {}".format(__version__)) - if loader.is_testcase_path(path_or_tests): + if loader.is_test_path(path_or_tests): return self.run_path(path_or_tests, dot_env_path, mapping) elif loader.is_testcases(path_or_tests): return self.run_tests(path_or_tests) diff --git a/httprunner/loader/__init__.py b/httprunner/loader/__init__.py index 6c529894..c6be3e94 100644 --- a/httprunner/loader/__init__.py +++ b/httprunner/loader/__init__.py @@ -8,13 +8,13 @@ HttpRunner loader """ -from httprunner.loader.check import is_testcase_path, is_testcases, JsonSchemaChecker +from httprunner.loader.check import is_test_path, is_testcases, JsonSchemaChecker from httprunner.loader.locate import get_project_working_directory as get_pwd from httprunner.loader.load import load_csv_file, load_builtin_functions from httprunner.loader.buildup import load_cases, load_project_data __all__ = [ - "is_testcase_path", + "is_test_path", "is_testcases", "JsonSchemaChecker", "get_pwd", diff --git a/httprunner/loader/check.py b/httprunner/loader/check.py index 5c0ca459..61e4c052 100644 --- a/httprunner/loader/check.py +++ b/httprunner/loader/check.py @@ -175,30 +175,43 @@ def is_testcases(data_structure): return True -def is_testcase_path(path): - """ check if path is testcase path or path list. +def is_test_path(path): + """ check if path is valid json/yaml file path or a existed directory. Args: - path (str/list): file path or file path list. + path (str/list/tuple): file path/directory or file path list. Returns: bool: True if path is valid file path or path list, otherwise False. """ - if not isinstance(path, (str, list)): + if not isinstance(path, (str, list, tuple)): return False - if isinstance(path, list): + elif isinstance(path, (list, tuple)): for p in path: - if not is_testcase_path(p): + if not is_test_path(p): return False - if isinstance(path, str): + return True + + else: + # path is string if not os.path.exists(path): return False - file_suffix = os.path.splitext(path)[1].lower() - if file_suffix != ['.json', '.yaml', '.yml']: + # path exists + if os.path.isfile(path): + # path is a file + file_suffix = os.path.splitext(path)[1].lower() + if file_suffix not in ['.json', '.yaml', '.yml']: + # path is not json/yaml file + return False + else: + return True + elif os.path.isdir(path): + # path is a directory + return True + else: + # path is neither a folder nor a file, maybe a symbol link or something else return False - - return True