From c17875c82c15b43507de3869873681639e70c26a Mon Sep 17 00:00:00 2001 From: debugtalk Date: Fri, 25 Jan 2019 12:18:07 +0800 Subject: [PATCH] fix duplicate API definition output --- httprunner/loader.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/httprunner/loader.py b/httprunner/loader.py index 3a34865f..daec7c4b 100644 --- a/httprunner/loader.py +++ b/httprunner/loader.py @@ -613,17 +613,23 @@ def load_api_folder(api_folder_path): if isinstance(api_items, list): for api_item in api_items: key, api_dict = api_item.popitem() - api_id = api_dict.get("id") - if api_id in api_definition_mapping: - logger.log_warning("API definition duplicated: {}".format(api_id)) + api_id = api_dict.get("id") or api_dict.get("def") or api_dict.get("name") + if key != "api" or not api_id: + raise exceptions.ParamsError( + "Invalid API defined in {}".format(api_file_path)) - api_definition_mapping[api_id] = api_dict + if api_id in api_definition_mapping: + raise exceptions.ParamsError( + "Duplicated API ({}) defined in {}".format(api_id, api_file_path)) + else: + api_definition_mapping[api_id] = api_dict elif isinstance(api_items, dict): if api_file_path in api_definition_mapping: - logger.log_warning("API definition duplicated: {}".format(api_file_path)) - - api_definition_mapping[api_file_path] = api_items + raise exceptions.ParamsError( + "Duplicated API defined: {}".format(api_file_path)) + else: + api_definition_mapping[api_file_path] = api_items return api_definition_mapping