From 7f2d2b10ab9736c6e7a17998d0df423213ac09b1 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Thu, 22 Mar 2018 15:49:03 +0800 Subject: [PATCH] Validate JSON testset format --- httprunner/__about__.py | 2 +- httprunner/cli.py | 9 ++++++++- httprunner/utils.py | 19 +++++++++++++++++++ 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/httprunner/__about__.py b/httprunner/__about__.py index 2cb4de2b..2b036597 100644 --- a/httprunner/__about__.py +++ b/httprunner/__about__.py @@ -1,7 +1,7 @@ __title__ = 'HttpRunner' __description__ = 'One-stop solution for HTTP(S) testing.' __url__ = 'https://github.com/HttpRunner/HttpRunner' -__version__ = '1.2.3' +__version__ = '1.3.0' __author__ = 'debugtalk' __author_email__ = 'mail@debugtalk.com' __license__ = 'MIT' diff --git a/httprunner/cli.py b/httprunner/cli.py index ee0fb400..01c74076 100644 --- a/httprunner/cli.py +++ b/httprunner/cli.py @@ -8,7 +8,7 @@ from httprunner import logger from httprunner.__about__ import __version__ from httprunner.task import HttpRunner from httprunner.utils import (create_scaffold, load_dot_env_file, print_output, - string_type) + string_type, validate_json_file) def main_hrun(): @@ -40,6 +40,9 @@ def main_hrun(): parser.add_argument( '--startproject', help="Specify new project name.") + parser.add_argument( + '--validate', nargs='*', + help="Validate JSON testset format.") args = parser.parse_args() logger.setup_logger(args.log_level) @@ -48,6 +51,10 @@ def main_hrun(): logger.color_print("{}".format(__version__), "GREEN") exit(0) + if args.validate: + validate_json_file(args.validate) + exit(0) + dot_env_path = args.dot_env_path or os.path.join(os.getcwd(), ".env") if dot_env_path: load_dot_env_file(dot_env_path) diff --git a/httprunner/utils.py b/httprunner/utils.py index 688dfb41..5cf64e6c 100644 --- a/httprunner/utils.py +++ b/httprunner/utils.py @@ -4,6 +4,7 @@ import hmac import imp import importlib import io +import json import os.path import random import re @@ -421,3 +422,21 @@ def load_dot_env_file(path): variable, value = line.split("=") os.environ[variable] = value logger.log_debug("Loaded variable: {}".format(variable)) + +def validate_json_file(file_list): + """ validate JSON testset format + """ + for json_file in set(file_list): + if not json_file.endswith(".json"): + logger.log_warning("Only JSON file format can be validated.") + continue + + logger.color_print("start to validate JSON file: {}".format(json_file), "GREEN") + + with open(json_file) as stream: + try: + json.load(stream) + except ValueError as e: + raise SystemExit(e) + + print("OK")