mirror of
https://github.com/httprunner/httprunner.git
synced 2026-07-06 23:11:21 +08:00
refactor: rename project_mapping to project_meta
This commit is contained in:
@@ -207,7 +207,7 @@ class HttpRunner(object):
|
|||||||
def run_tests(self, tests_mapping):
|
def run_tests(self, tests_mapping):
|
||||||
""" run testcase/testsuite data
|
""" run testcase/testsuite data
|
||||||
"""
|
"""
|
||||||
self.test_path = tests_mapping.get("project_mapping", {}).get("test_path", "")
|
self.test_path = tests_mapping.get("project_meta", {}).get("test_path", "")
|
||||||
|
|
||||||
if self.save_tests:
|
if self.save_tests:
|
||||||
utils.dump_json_file(
|
utils.dump_json_file(
|
||||||
@@ -312,7 +312,7 @@ class HttpRunner(object):
|
|||||||
tests_mapping = loader.load_cases(path, dot_env_path)
|
tests_mapping = loader.load_cases(path, dot_env_path)
|
||||||
|
|
||||||
if mapping:
|
if mapping:
|
||||||
tests_mapping["project_mapping"]["variables"] = mapping
|
tests_mapping["project_meta"]["variables"] = mapping
|
||||||
|
|
||||||
return self.run_tests(tests_mapping)
|
return self.run_tests(tests_mapping)
|
||||||
|
|
||||||
@@ -334,7 +334,7 @@ class HttpRunner(object):
|
|||||||
if loader.is_test_path(path_or_tests):
|
if loader.is_test_path(path_or_tests):
|
||||||
return self.run_path(path_or_tests, dot_env_path, mapping)
|
return self.run_path(path_or_tests, dot_env_path, mapping)
|
||||||
elif loader.is_test_content(path_or_tests):
|
elif loader.is_test_content(path_or_tests):
|
||||||
project_working_directory = path_or_tests.get("project_mapping", {}).get("PWD", os.getcwd())
|
project_working_directory = path_or_tests.get("project_meta", {}).get("PWD", os.getcwd())
|
||||||
loader.init_pwd(project_working_directory)
|
loader.init_pwd(project_working_directory)
|
||||||
return self.run_tests(path_or_tests)
|
return self.run_tests(path_or_tests)
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ async def debug_single_testcase(project_meta: ProjectMeta, testcase: TestCase):
|
|||||||
|
|
||||||
testcase_json = testcase.dict(by_alias=True)
|
testcase_json = testcase.dict(by_alias=True)
|
||||||
tests_mapping = {
|
tests_mapping = {
|
||||||
"project_mapping": project_meta_json,
|
"project_meta": project_meta_json,
|
||||||
"testcases": [testcase_json]
|
"testcases": [testcase_json]
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,6 +59,6 @@ async def debug_single_testcase(project_meta: ProjectMeta, testcase: TestCase):
|
|||||||
# @router.post("/hrun/debug/testcases", tags=["debug"])
|
# @router.post("/hrun/debug/testcases", tags=["debug"])
|
||||||
# async def debug_multiple_testcases(project_meta: ProjectMeta, testcases: TestCases):
|
# async def debug_multiple_testcases(project_meta: ProjectMeta, testcases: TestCases):
|
||||||
# tests_mapping = {
|
# tests_mapping = {
|
||||||
# "project_mapping": project_meta,
|
# "project_meta": project_meta,
|
||||||
# "testcases": testcases
|
# "testcases": testcases
|
||||||
# }
|
# }
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ def __extend_with_api_ref(raw_testinfo):
|
|||||||
else:
|
else:
|
||||||
block = load_file(api_name)
|
block = load_file(api_name)
|
||||||
|
|
||||||
# NOTICE: avoid project_mapping been changed during iteration.
|
# NOTICE: avoid project_meta been changed during iteration.
|
||||||
raw_testinfo["api_def"] = utils.deepcopy_dict(block)
|
raw_testinfo["api_def"] = utils.deepcopy_dict(block)
|
||||||
tests_def_mapping["api"][api_name] = block
|
tests_def_mapping["api"][api_name] = block
|
||||||
|
|
||||||
@@ -311,14 +311,14 @@ def load_project_data(test_path, dot_env_path=None):
|
|||||||
"""
|
"""
|
||||||
debugtalk_path, project_working_directory = init_project_working_directory(test_path)
|
debugtalk_path, project_working_directory = init_project_working_directory(test_path)
|
||||||
|
|
||||||
project_mapping = {}
|
project_meta = {}
|
||||||
|
|
||||||
# load .env file
|
# load .env file
|
||||||
# NOTICE:
|
# NOTICE:
|
||||||
# environment variable maybe loaded in debugtalk.py
|
# environment variable maybe loaded in debugtalk.py
|
||||||
# thus .env file should be loaded before loading debugtalk.py
|
# thus .env file should be loaded before loading debugtalk.py
|
||||||
dot_env_path = dot_env_path or os.path.join(project_working_directory, ".env")
|
dot_env_path = dot_env_path or os.path.join(project_working_directory, ".env")
|
||||||
project_mapping["env"] = load_dot_env_file(dot_env_path)
|
project_meta["env"] = load_dot_env_file(dot_env_path)
|
||||||
|
|
||||||
if debugtalk_path:
|
if debugtalk_path:
|
||||||
# load debugtalk.py functions
|
# load debugtalk.py functions
|
||||||
@@ -327,11 +327,11 @@ def load_project_data(test_path, dot_env_path=None):
|
|||||||
debugtalk_functions = {}
|
debugtalk_functions = {}
|
||||||
|
|
||||||
# locate PWD and load debugtalk.py functions
|
# locate PWD and load debugtalk.py functions
|
||||||
project_mapping["PWD"] = project_working_directory
|
project_meta["PWD"] = project_working_directory
|
||||||
project_mapping["functions"] = debugtalk_functions
|
project_meta["functions"] = debugtalk_functions
|
||||||
project_mapping["test_path"] = os.path.abspath(test_path)[len(project_working_directory) + 1:]
|
project_meta["test_path"] = os.path.abspath(test_path)[len(project_working_directory) + 1:]
|
||||||
|
|
||||||
return project_mapping
|
return project_meta
|
||||||
|
|
||||||
|
|
||||||
def load_cases(path: str, dot_env_path: str = None):
|
def load_cases(path: str, dot_env_path: str = None):
|
||||||
@@ -345,10 +345,10 @@ def load_cases(path: str, dot_env_path: str = None):
|
|||||||
dot_env_path (str): specified .env file path
|
dot_env_path (str): specified .env file path
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
dict: tests mapping, include project_mapping and testcases.
|
dict: tests mapping, include project_meta and testcases.
|
||||||
each testcase is corresponding to a file.
|
each testcase is corresponding to a file.
|
||||||
{
|
{
|
||||||
"project_mapping": {
|
"project_meta": {
|
||||||
"PWD": "XXXXX",
|
"PWD": "XXXXX",
|
||||||
"functions": {},
|
"functions": {},
|
||||||
"env": {}
|
"env": {}
|
||||||
@@ -389,7 +389,7 @@ def load_cases(path: str, dot_env_path: str = None):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
tests_mapping = {
|
tests_mapping = {
|
||||||
"project_mapping": load_project_data(path, dot_env_path)
|
"project_meta": load_project_data(path, dot_env_path)
|
||||||
}
|
}
|
||||||
|
|
||||||
def __load_file_content(path):
|
def __load_file_content(path):
|
||||||
|
|||||||
@@ -14,38 +14,38 @@ class TestModuleLoader(unittest.TestCase):
|
|||||||
self.assertNotIn("is_py3", module_functions)
|
self.assertNotIn("is_py3", module_functions)
|
||||||
|
|
||||||
def test_load_debugtalk_module(self):
|
def test_load_debugtalk_module(self):
|
||||||
project_mapping = buildup.load_project_data(os.path.join(os.getcwd(), "httprunner"))
|
project_meta = buildup.load_project_data(os.path.join(os.getcwd(), "httprunner"))
|
||||||
self.assertNotIn("alter_response", project_mapping["functions"])
|
self.assertNotIn("alter_response", project_meta["functions"])
|
||||||
|
|
||||||
project_mapping = buildup.load_project_data(os.path.join(os.getcwd(), "tests"))
|
project_meta = buildup.load_project_data(os.path.join(os.getcwd(), "tests"))
|
||||||
self.assertIn("alter_response", project_mapping["functions"])
|
self.assertIn("alter_response", project_meta["functions"])
|
||||||
|
|
||||||
is_status_code_200 = project_mapping["functions"]["is_status_code_200"]
|
is_status_code_200 = project_meta["functions"]["is_status_code_200"]
|
||||||
self.assertTrue(is_status_code_200(200))
|
self.assertTrue(is_status_code_200(200))
|
||||||
self.assertFalse(is_status_code_200(500))
|
self.assertFalse(is_status_code_200(500))
|
||||||
|
|
||||||
def test_load_debugtalk_py(self):
|
def test_load_debugtalk_py(self):
|
||||||
project_mapping = buildup.load_project_data("tests/data/demo_testcase.yml")
|
project_meta = buildup.load_project_data("tests/data/demo_testcase.yml")
|
||||||
project_working_directory = project_mapping["PWD"]
|
project_working_directory = project_meta["PWD"]
|
||||||
debugtalk_functions = project_mapping["functions"]
|
debugtalk_functions = project_meta["functions"]
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
project_working_directory,
|
project_working_directory,
|
||||||
os.path.join(os.getcwd(), "tests")
|
os.path.join(os.getcwd(), "tests")
|
||||||
)
|
)
|
||||||
self.assertIn("gen_md5", debugtalk_functions)
|
self.assertIn("gen_md5", debugtalk_functions)
|
||||||
|
|
||||||
project_mapping = buildup.load_project_data("tests/base.py")
|
project_meta = buildup.load_project_data("tests/base.py")
|
||||||
project_working_directory = project_mapping["PWD"]
|
project_working_directory = project_meta["PWD"]
|
||||||
debugtalk_functions = project_mapping["functions"]
|
debugtalk_functions = project_meta["functions"]
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
project_working_directory,
|
project_working_directory,
|
||||||
os.path.join(os.getcwd(), "tests")
|
os.path.join(os.getcwd(), "tests")
|
||||||
)
|
)
|
||||||
self.assertIn("gen_md5", debugtalk_functions)
|
self.assertIn("gen_md5", debugtalk_functions)
|
||||||
|
|
||||||
project_mapping = buildup.load_project_data("httprunner/__init__.py")
|
project_meta = buildup.load_project_data("httprunner/__init__.py")
|
||||||
project_working_directory = project_mapping["PWD"]
|
project_working_directory = project_meta["PWD"]
|
||||||
debugtalk_functions = project_mapping["functions"]
|
debugtalk_functions = project_meta["functions"]
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
project_working_directory,
|
project_working_directory,
|
||||||
os.getcwd()
|
os.getcwd()
|
||||||
@@ -57,7 +57,7 @@ class TestSuiteLoader(unittest.TestCase):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpClass(cls):
|
def setUpClass(cls):
|
||||||
cls.project_mapping = buildup.load_project_data(os.path.join(os.getcwd(), "tests"))
|
cls.project_meta = buildup.load_project_data(os.path.join(os.getcwd(), "tests"))
|
||||||
cls.tests_def_mapping = buildup.tests_def_mapping
|
cls.tests_def_mapping = buildup.tests_def_mapping
|
||||||
|
|
||||||
def test_load_teststep_api(self):
|
def test_load_teststep_api(self):
|
||||||
@@ -135,7 +135,7 @@ class TestSuiteLoader(unittest.TestCase):
|
|||||||
path = os.path.join(
|
path = os.path.join(
|
||||||
os.getcwd(), 'tests/api/create_user.yml')
|
os.getcwd(), 'tests/api/create_user.yml')
|
||||||
tests_mapping = loader.load_cases(path)
|
tests_mapping = loader.load_cases(path)
|
||||||
project_mapping = tests_mapping["project_mapping"]
|
project_meta = tests_mapping["project_meta"]
|
||||||
api_list = tests_mapping["apis"]
|
api_list = tests_mapping["apis"]
|
||||||
self.assertEqual(len(api_list), 1)
|
self.assertEqual(len(api_list), 1)
|
||||||
self.assertEqual(api_list[0]["request"]["url"], "/api/users/$uid")
|
self.assertEqual(api_list[0]["request"]["url"], "/api/users/$uid")
|
||||||
@@ -149,7 +149,7 @@ class TestSuiteLoader(unittest.TestCase):
|
|||||||
self.assertEqual(testcases[0]["config"]["name"], '123t$var_a')
|
self.assertEqual(testcases[0]["config"]["name"], '123t$var_a')
|
||||||
self.assertIn(
|
self.assertIn(
|
||||||
"sum_two",
|
"sum_two",
|
||||||
tests_mapping["project_mapping"]["functions"]
|
tests_mapping["project_meta"]["functions"]
|
||||||
)
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
testcases[0]["config"]["variables"]["var_c"],
|
testcases[0]["config"]["variables"]["var_c"],
|
||||||
@@ -164,10 +164,10 @@ class TestSuiteLoader(unittest.TestCase):
|
|||||||
path = os.path.join(
|
path = os.path.join(
|
||||||
os.getcwd(), 'tests/data/demo_testcase_layer.yml')
|
os.getcwd(), 'tests/data/demo_testcase_layer.yml')
|
||||||
tests_mapping = loader.load_cases(path)
|
tests_mapping = loader.load_cases(path)
|
||||||
project_mapping = tests_mapping["project_mapping"]
|
project_meta = tests_mapping["project_meta"]
|
||||||
testcases_list = tests_mapping["testcases"]
|
testcases_list = tests_mapping["testcases"]
|
||||||
self.assertIn('device_sn', testcases_list[0]["config"]["variables"])
|
self.assertIn('device_sn', testcases_list[0]["config"]["variables"])
|
||||||
self.assertIn("gen_md5", project_mapping["functions"])
|
self.assertIn("gen_md5", project_meta["functions"])
|
||||||
self.assertIn("base_url", testcases_list[0]["config"])
|
self.assertIn("base_url", testcases_list[0]["config"])
|
||||||
test_dict0 = testcases_list[0]["teststeps"][0]
|
test_dict0 = testcases_list[0]["teststeps"][0]
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
@@ -184,7 +184,7 @@ class TestSuiteLoader(unittest.TestCase):
|
|||||||
path = os.path.join(
|
path = os.path.join(
|
||||||
os.getcwd(), 'tests/testsuites/create_users.yml')
|
os.getcwd(), 'tests/testsuites/create_users.yml')
|
||||||
tests_mapping = loader.load_cases(path)
|
tests_mapping = loader.load_cases(path)
|
||||||
project_mapping = tests_mapping["project_mapping"]
|
project_meta = tests_mapping["project_meta"]
|
||||||
testsuites_list = tests_mapping["testsuites"]
|
testsuites_list = tests_mapping["testsuites"]
|
||||||
|
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
@@ -231,13 +231,13 @@ class TestSuiteLoader(unittest.TestCase):
|
|||||||
|
|
||||||
def test_load_project_tests(self):
|
def test_load_project_tests(self):
|
||||||
buildup.load_project_data(os.path.join(os.getcwd(), "tests"))
|
buildup.load_project_data(os.path.join(os.getcwd(), "tests"))
|
||||||
self.assertIn("gen_md5", self.project_mapping["functions"])
|
self.assertIn("gen_md5", self.project_meta["functions"])
|
||||||
self.assertEqual(self.project_mapping["env"]["PROJECT_KEY"], "ABCDEFGH")
|
self.assertEqual(self.project_meta["env"]["PROJECT_KEY"], "ABCDEFGH")
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
os.path.basename(self.project_mapping["PWD"]),
|
os.path.basename(self.project_meta["PWD"]),
|
||||||
"tests"
|
"tests"
|
||||||
)
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
os.path.basename(self.project_mapping["test_path"]),
|
os.path.basename(self.project_meta["test_path"]),
|
||||||
"tests"
|
"tests"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ class TestLoaderCheck(unittest.TestCase):
|
|||||||
self.assertFalse(check.is_test_content(data_structure))
|
self.assertFalse(check.is_test_content(data_structure))
|
||||||
|
|
||||||
data_structure = {
|
data_structure = {
|
||||||
"project_mapping": {
|
"project_meta": {
|
||||||
"PWD": "XXXXX",
|
"PWD": "XXXXX",
|
||||||
"functions": {},
|
"functions": {},
|
||||||
"env": {}
|
"env": {}
|
||||||
|
|||||||
@@ -1047,14 +1047,14 @@ def _extend_with_testcase(test_dict, testcase_def_dict):
|
|||||||
test_dict.update(testcase_def_dict)
|
test_dict.update(testcase_def_dict)
|
||||||
|
|
||||||
|
|
||||||
def __prepare_config(config, project_mapping, session_variables_set=None):
|
def __prepare_config(config, project_meta, session_variables_set=None):
|
||||||
""" parse testcase/testsuite config.
|
""" parse testcase/testsuite config.
|
||||||
"""
|
"""
|
||||||
# get config variables
|
# get config variables
|
||||||
raw_config_variables = config.pop("variables", {})
|
raw_config_variables = config.pop("variables", {})
|
||||||
|
|
||||||
override_variables = utils.deepcopy_dict(project_mapping.get("variables", {}))
|
override_variables = utils.deepcopy_dict(project_meta.get("variables", {}))
|
||||||
functions = project_mapping.get("functions", {})
|
functions = project_meta.get("functions", {})
|
||||||
|
|
||||||
if isinstance(raw_config_variables, str) and function_regex_compile.match(
|
if isinstance(raw_config_variables, str) and function_regex_compile.match(
|
||||||
raw_config_variables):
|
raw_config_variables):
|
||||||
@@ -1091,7 +1091,7 @@ def __prepare_config(config, project_mapping, session_variables_set=None):
|
|||||||
return prepared_config
|
return prepared_config
|
||||||
|
|
||||||
|
|
||||||
def __prepare_testcase_tests(tests, config, project_mapping, session_variables_set=None):
|
def __prepare_testcase_tests(tests, config, project_meta, session_variables_set=None):
|
||||||
""" override tests with testcase config variables, base_url and verify.
|
""" override tests with testcase config variables, base_url and verify.
|
||||||
test maybe nested testcase.
|
test maybe nested testcase.
|
||||||
|
|
||||||
@@ -1107,13 +1107,13 @@ def __prepare_testcase_tests(tests, config, project_mapping, session_variables_s
|
|||||||
Args:
|
Args:
|
||||||
tests (list):
|
tests (list):
|
||||||
config (dict):
|
config (dict):
|
||||||
project_mapping (dict):
|
project_meta (dict):
|
||||||
|
|
||||||
"""
|
"""
|
||||||
config_variables = config.get("variables", {})
|
config_variables = config.get("variables", {})
|
||||||
config_base_url = config.get("base_url", "")
|
config_base_url = config.get("base_url", "")
|
||||||
config_verify = config.get("verify", True)
|
config_verify = config.get("verify", True)
|
||||||
functions = project_mapping.get("functions", {})
|
functions = project_meta.get("functions", {})
|
||||||
|
|
||||||
prepared_testcase_tests = []
|
prepared_testcase_tests = []
|
||||||
session_variables_set = set(config_variables.keys()) | (session_variables_set or set())
|
session_variables_set = set(config_variables.keys()) | (session_variables_set or set())
|
||||||
@@ -1169,7 +1169,7 @@ def __prepare_testcase_tests(tests, config, project_mapping, session_variables_s
|
|||||||
test_dict["config"].setdefault("verify", config_verify)
|
test_dict["config"].setdefault("verify", config_verify)
|
||||||
|
|
||||||
# 3, testcase_def config => testcase_def test_dict
|
# 3, testcase_def config => testcase_def test_dict
|
||||||
test_dict = _parse_testcase(test_dict, project_mapping, session_variables_set)
|
test_dict = _parse_testcase(test_dict, project_meta, session_variables_set)
|
||||||
if not test_dict:
|
if not test_dict:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@@ -1231,7 +1231,7 @@ def __prepare_testcase_tests(tests, config, project_mapping, session_variables_s
|
|||||||
return prepared_testcase_tests
|
return prepared_testcase_tests
|
||||||
|
|
||||||
|
|
||||||
def _parse_testcase(testcase, project_mapping, session_variables_set=None):
|
def _parse_testcase(testcase, project_meta, session_variables_set=None):
|
||||||
""" parse testcase
|
""" parse testcase
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@@ -1247,13 +1247,13 @@ def _parse_testcase(testcase, project_mapping, session_variables_set=None):
|
|||||||
try:
|
try:
|
||||||
prepared_config = __prepare_config(
|
prepared_config = __prepare_config(
|
||||||
testcase["config"],
|
testcase["config"],
|
||||||
project_mapping,
|
project_meta,
|
||||||
session_variables_set
|
session_variables_set
|
||||||
)
|
)
|
||||||
prepared_testcase_tests = __prepare_testcase_tests(
|
prepared_testcase_tests = __prepare_testcase_tests(
|
||||||
testcase["teststeps"],
|
testcase["teststeps"],
|
||||||
prepared_config,
|
prepared_config,
|
||||||
project_mapping,
|
project_meta,
|
||||||
session_variables_set
|
session_variables_set
|
||||||
)
|
)
|
||||||
return {
|
return {
|
||||||
@@ -1275,7 +1275,7 @@ def _parse_testcase(testcase, project_mapping, session_variables_set=None):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def __get_parsed_testsuite_testcases(testcases, testsuite_config, project_mapping):
|
def __get_parsed_testsuite_testcases(testcases, testsuite_config, project_meta):
|
||||||
""" override testscases with testsuite config variables, base_url and verify.
|
""" override testscases with testsuite config variables, base_url and verify.
|
||||||
|
|
||||||
variables priority:
|
variables priority:
|
||||||
@@ -1311,7 +1311,7 @@ def __get_parsed_testsuite_testcases(testcases, testsuite_config, project_mappin
|
|||||||
},
|
},
|
||||||
"base_url": "http://127.0.0.1:5000"
|
"base_url": "http://127.0.0.1:5000"
|
||||||
}
|
}
|
||||||
project_mapping (dict):
|
project_meta (dict):
|
||||||
{
|
{
|
||||||
"env": {},
|
"env": {},
|
||||||
"functions": {}
|
"functions": {}
|
||||||
@@ -1320,7 +1320,7 @@ def __get_parsed_testsuite_testcases(testcases, testsuite_config, project_mappin
|
|||||||
"""
|
"""
|
||||||
testsuite_base_url = testsuite_config.get("base_url")
|
testsuite_base_url = testsuite_config.get("base_url")
|
||||||
testsuite_config_variables = testsuite_config.get("variables", {})
|
testsuite_config_variables = testsuite_config.get("variables", {})
|
||||||
functions = project_mapping.get("functions", {})
|
functions = project_meta.get("functions", {})
|
||||||
parsed_testcase_list = []
|
parsed_testcase_list = []
|
||||||
|
|
||||||
for testcase_name, testcase in testcases.items():
|
for testcase_name, testcase in testcases.items():
|
||||||
@@ -1373,7 +1373,7 @@ def __get_parsed_testsuite_testcases(testcases, testsuite_config, project_mappin
|
|||||||
parsed_config_variables_copied,
|
parsed_config_variables_copied,
|
||||||
parameter_variables
|
parameter_variables
|
||||||
)
|
)
|
||||||
parsed_testcase_copied = _parse_testcase(testcase_copied, project_mapping)
|
parsed_testcase_copied = _parse_testcase(testcase_copied, project_meta)
|
||||||
if not parsed_testcase_copied:
|
if not parsed_testcase_copied:
|
||||||
continue
|
continue
|
||||||
parsed_testcase_copied["config"]["name"] = parse_lazy_data(
|
parsed_testcase_copied["config"]["name"] = parse_lazy_data(
|
||||||
@@ -1383,7 +1383,7 @@ def __get_parsed_testsuite_testcases(testcases, testsuite_config, project_mappin
|
|||||||
parsed_testcase_list.append(parsed_testcase_copied)
|
parsed_testcase_list.append(parsed_testcase_copied)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
parsed_testcase = _parse_testcase(parsed_testcase, project_mapping)
|
parsed_testcase = _parse_testcase(parsed_testcase, project_meta)
|
||||||
if not parsed_testcase:
|
if not parsed_testcase:
|
||||||
continue
|
continue
|
||||||
parsed_testcase_list.append(parsed_testcase)
|
parsed_testcase_list.append(parsed_testcase)
|
||||||
@@ -1391,13 +1391,13 @@ def __get_parsed_testsuite_testcases(testcases, testsuite_config, project_mappin
|
|||||||
return parsed_testcase_list
|
return parsed_testcase_list
|
||||||
|
|
||||||
|
|
||||||
def _parse_testsuite(testsuite, project_mapping):
|
def _parse_testsuite(testsuite, project_meta):
|
||||||
testsuite.setdefault("config", {})
|
testsuite.setdefault("config", {})
|
||||||
prepared_config = __prepare_config(testsuite["config"], project_mapping)
|
prepared_config = __prepare_config(testsuite["config"], project_meta)
|
||||||
parsed_testcase_list = __get_parsed_testsuite_testcases(
|
parsed_testcase_list = __get_parsed_testsuite_testcases(
|
||||||
testsuite["testcases"],
|
testsuite["testcases"],
|
||||||
prepared_config,
|
prepared_config,
|
||||||
project_mapping
|
project_meta
|
||||||
)
|
)
|
||||||
return parsed_testcase_list
|
return parsed_testcase_list
|
||||||
|
|
||||||
@@ -1410,7 +1410,7 @@ def parse_tests(tests_mapping):
|
|||||||
tests_mapping (dict): project info and testcases list.
|
tests_mapping (dict): project info and testcases list.
|
||||||
|
|
||||||
{
|
{
|
||||||
"project_mapping": {
|
"project_meta": {
|
||||||
"PWD": "XXXXX",
|
"PWD": "XXXXX",
|
||||||
"functions": {},
|
"functions": {},
|
||||||
"variables": {}, # optional, priority 1
|
"variables": {}, # optional, priority 1
|
||||||
@@ -1467,7 +1467,7 @@ def parse_tests(tests_mapping):
|
|||||||
}
|
}
|
||||||
|
|
||||||
"""
|
"""
|
||||||
project_mapping = tests_mapping.get("project_mapping", {})
|
project_meta = tests_mapping.get("project_meta", {})
|
||||||
testcases = []
|
testcases = []
|
||||||
|
|
||||||
for test_type in tests_mapping:
|
for test_type in tests_mapping:
|
||||||
@@ -1476,14 +1476,14 @@ def parse_tests(tests_mapping):
|
|||||||
# load testcases of testsuite
|
# load testcases of testsuite
|
||||||
testsuites = tests_mapping["testsuites"]
|
testsuites = tests_mapping["testsuites"]
|
||||||
for testsuite in testsuites:
|
for testsuite in testsuites:
|
||||||
parsed_testcases = _parse_testsuite(testsuite, project_mapping)
|
parsed_testcases = _parse_testsuite(testsuite, project_meta)
|
||||||
for parsed_testcase in parsed_testcases:
|
for parsed_testcase in parsed_testcases:
|
||||||
testcases.append(parsed_testcase)
|
testcases.append(parsed_testcase)
|
||||||
|
|
||||||
elif test_type == "testcases":
|
elif test_type == "testcases":
|
||||||
for testcase in tests_mapping["testcases"]:
|
for testcase in tests_mapping["testcases"]:
|
||||||
testcase["type"] = "testcase"
|
testcase["type"] = "testcase"
|
||||||
parsed_testcase = _parse_testcase(testcase, project_mapping)
|
parsed_testcase = _parse_testcase(testcase, project_meta)
|
||||||
if not parsed_testcase:
|
if not parsed_testcase:
|
||||||
continue
|
continue
|
||||||
testcases.append(parsed_testcase)
|
testcases.append(parsed_testcase)
|
||||||
@@ -1499,7 +1499,7 @@ def parse_tests(tests_mapping):
|
|||||||
"path": api_content.pop("path", None),
|
"path": api_content.pop("path", None),
|
||||||
"type": api_content.pop("type", "api")
|
"type": api_content.pop("type", "api")
|
||||||
}
|
}
|
||||||
parsed_testcase = _parse_testcase(testcase, project_mapping)
|
parsed_testcase = _parse_testcase(testcase, project_meta)
|
||||||
if not parsed_testcase:
|
if not parsed_testcase:
|
||||||
continue
|
continue
|
||||||
testcases.append(parsed_testcase)
|
testcases.append(parsed_testcase)
|
||||||
|
|||||||
@@ -967,7 +967,7 @@ class TestParser(unittest.TestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def test_parse_parameters_mix(self):
|
def test_parse_parameters_mix(self):
|
||||||
project_mapping = loader.load_project_data(os.path.join(os.getcwd(), "tests"))
|
project_meta = loader.load_project_data(os.path.join(os.getcwd(), "tests"))
|
||||||
|
|
||||||
parameters = [
|
parameters = [
|
||||||
{"user_agent": ["iOS/10.1", "iOS/10.2", "iOS/10.3"]},
|
{"user_agent": ["iOS/10.1", "iOS/10.2", "iOS/10.3"]},
|
||||||
@@ -975,7 +975,7 @@ class TestParser(unittest.TestCase):
|
|||||||
{"username-password": "${parameterize(data/account.csv)}"}
|
{"username-password": "${parameterize(data/account.csv)}"}
|
||||||
]
|
]
|
||||||
cartesian_product_parameters = parser.parse_parameters(
|
cartesian_product_parameters = parser.parse_parameters(
|
||||||
parameters, functions_mapping=project_mapping["functions"])
|
parameters, functions_mapping=project_meta["functions"])
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
len(cartesian_product_parameters),
|
len(cartesian_product_parameters),
|
||||||
3 * 2 * 3
|
3 * 2 * 3
|
||||||
@@ -1119,7 +1119,7 @@ class TestParser(unittest.TestCase):
|
|||||||
|
|
||||||
def test_parse_tests_variable_with_function(self):
|
def test_parse_tests_variable_with_function(self):
|
||||||
tests_mapping = {
|
tests_mapping = {
|
||||||
"project_mapping": {
|
"project_meta": {
|
||||||
"functions": {
|
"functions": {
|
||||||
"sum_two": sum_two,
|
"sum_two": sum_two,
|
||||||
"gen_random_string": gen_random_string
|
"gen_random_string": gen_random_string
|
||||||
@@ -1172,7 +1172,7 @@ class TestParser(unittest.TestCase):
|
|||||||
|
|
||||||
def test_parse_tests_variable_not_found(self):
|
def test_parse_tests_variable_not_found(self):
|
||||||
tests_mapping = {
|
tests_mapping = {
|
||||||
"project_mapping": {
|
"project_meta": {
|
||||||
"functions": {
|
"functions": {
|
||||||
"sum_two": sum_two
|
"sum_two": sum_two
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ class Runner(object):
|
|||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
>>> tests_mapping = {
|
>>> tests_mapping = {
|
||||||
"project_mapping": {
|
"project_meta": {
|
||||||
"functions": {}
|
"functions": {}
|
||||||
},
|
},
|
||||||
"testcases": [
|
"testcases": [
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ class HttpRunner(object):
|
|||||||
test.__doc__ = test_runner.config.name
|
test.__doc__ = test_runner.config.name
|
||||||
return test
|
return test
|
||||||
|
|
||||||
project_meta = tests.project_mapping
|
project_meta = tests.project_meta
|
||||||
testcases = tests.testcases
|
testcases = tests.testcases
|
||||||
|
|
||||||
prepared_testcases: List[unittest.TestSuite] = []
|
prepared_testcases: List[unittest.TestSuite] = []
|
||||||
@@ -169,7 +169,7 @@ class HttpRunner(object):
|
|||||||
""" run testcase/testsuite data
|
""" run testcase/testsuite data
|
||||||
"""
|
"""
|
||||||
tests = TestsMapping.parse_obj(tests_mapping)
|
tests = TestsMapping.parse_obj(tests_mapping)
|
||||||
self.test_path = tests.project_mapping.test_path
|
self.test_path = tests.project_meta.test_path
|
||||||
|
|
||||||
if self.save_tests:
|
if self.save_tests:
|
||||||
utils.dump_json_file(
|
utils.dump_json_file(
|
||||||
@@ -254,7 +254,7 @@ class HttpRunner(object):
|
|||||||
tests_mapping = loader.load_cases(path, dot_env_path)
|
tests_mapping = loader.load_cases(path, dot_env_path)
|
||||||
|
|
||||||
if mapping:
|
if mapping:
|
||||||
tests_mapping["project_mapping"]["variables"] = mapping
|
tests_mapping["project_meta"]["variables"] = mapping
|
||||||
|
|
||||||
return self.run_tests(tests_mapping)
|
return self.run_tests(tests_mapping)
|
||||||
|
|
||||||
@@ -275,7 +275,7 @@ class HttpRunner(object):
|
|||||||
if loader.is_test_path(path_or_tests):
|
if loader.is_test_path(path_or_tests):
|
||||||
return self.run_path(path_or_tests, dot_env_path, mapping)
|
return self.run_path(path_or_tests, dot_env_path, mapping)
|
||||||
elif loader.is_test_content(path_or_tests):
|
elif loader.is_test_content(path_or_tests):
|
||||||
project_working_directory = path_or_tests.get("project_mapping", {}).get("PWD", os.getcwd())
|
project_working_directory = path_or_tests.get("project_meta", {}).get("PWD", os.getcwd())
|
||||||
loader.init_pwd(project_working_directory)
|
loader.init_pwd(project_working_directory)
|
||||||
return self.run_tests(path_or_tests)
|
return self.run_tests(path_or_tests)
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ class ProjectMeta(BaseModel):
|
|||||||
|
|
||||||
|
|
||||||
class TestsMapping(BaseModel):
|
class TestsMapping(BaseModel):
|
||||||
project_mapping: ProjectMeta # TODO: rename to project_meta
|
project_meta: ProjectMeta
|
||||||
testcases: List[TestCase]
|
testcases: List[TestCase]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user