relocate testcase validator

This commit is contained in:
debugtalk
2018-08-05 11:07:57 +08:00
parent bf0fb675bb
commit df75b6df85
6 changed files with 86 additions and 76 deletions

View File

@@ -4,7 +4,7 @@ import json
import os
import yaml
from httprunner import exceptions, logger, parser, utils
from httprunner import exceptions, logger, parser, utils, validator
###############################################################################
## file loader
@@ -399,7 +399,7 @@ def load_testcases(path):
testcases_list = []
else:
err_msg = "file not found: {}".format(path)
err_msg = "path not exist: {}".format(path)
logger.log_error(err_msg)
raise exceptions.FileNotFound(err_msg)
@@ -412,5 +412,8 @@ def load(path):
@param (str) path: testcase file/folder path
@return (list) testcases list
"""
if validator.is_testcases(path):
return path
_load_test_dependencies()
return load_testcases(path)

View File

@@ -177,10 +177,7 @@ def init_test_suites(path_or_testsets, mapping=None, http_client_session=None):
mapping (dict):
passed in variables mapping, it will override variables in config block
"""
if not testcase.is_testsets(path_or_testsets):
testsets = loader.load(path_or_testsets)
else:
testsets = path_or_testsets
testsets = loader.load(path_or_testsets)
# TODO: move comparator uniform here
mapping = mapping or {}

View File

@@ -32,47 +32,6 @@ def extract_functions(content):
return []
def is_testset(data_structure):
""" check if data_structure is a testset
testset should always be in the following data structure:
{
"name": "desc1",
"config": {},
"api": {},
"testcases": [testcase11, testcase12]
}
"""
if not isinstance(data_structure, dict):
return False
if "name" not in data_structure or "testcases" not in data_structure:
return False
if not isinstance(data_structure["testcases"], list):
return False
return True
def is_testsets(data_structure):
""" check if data_structure is testset or testsets
testsets should always be in the following data structure:
testset_dict
or
[
testset_dict_1,
testset_dict_2
]
"""
if not isinstance(data_structure, list):
return is_testset(data_structure)
for item in data_structure:
if not is_testset(item):
return False
return True
def gen_cartesian_product(*args):
""" generate cartesian product for lists
@param

45
httprunner/validator.py Normal file
View File

@@ -0,0 +1,45 @@
# encoding: utf-8
""" validate data format
TODO: refactor with JSON schema validate
"""
def is_testcase(data_structure):
""" check if data_structure is a testcase
testcase should always be in the following data structure:
{
"name": "desc1",
"config": {},
"api": {},
"testcases": [testcase11, testcase12]
}
"""
if not isinstance(data_structure, dict):
return False
if "name" not in data_structure or "testcases" not in data_structure:
return False
if not isinstance(data_structure["testcases"], list):
return False
return True
def is_testcases(data_structure):
""" check if data_structure is testcase or testcases list
testsets should always be in the following data structure:
testset_dict
or
[
testset_dict_1,
testset_dict_2
]
"""
if not isinstance(data_structure, list):
return is_testcase(data_structure)
for item in data_structure:
if not is_testcase(item):
return False
return True