add load_project_tests

This commit is contained in:
debugtalk
2018-08-10 20:40:04 +08:00
parent d45fd10772
commit ba7bdc7be3
2 changed files with 34 additions and 33 deletions

View File

@@ -826,11 +826,11 @@ def load_api_folder(api_folder_path=None):
return api_definition_mapping
def load_test_folder(test_folder_path=None, test_type="testcase"):
""" load testcases/testsuites definitions from folder.
def load_test_folder(test_folder_path=None):
""" load testcases definitions from folder.
Args:
test_folder_path (str): testcases/testsuites files folder.
test_folder_path (str): testcases files folder.
testcase file should be in the following format:
[
@@ -849,25 +849,8 @@ def load_test_folder(test_folder_path=None, test_type="testcase"):
}
]
testsuite file should be in the following format:
[
{
"config": {
"def": "create_and_check",
"request": {},
"validate": []
}
},
{
"test": {
"suite": "get_user", # TODO: repalce suite with testcase
"validate": []
}
}
]
Returns:
dict: testcases/testsuites definition mapping.
dict: testcases definition mapping.
{
"tests/testcases/setup.yml": [
@@ -885,16 +868,8 @@ def load_test_folder(test_folder_path=None, test_type="testcase"):
"""
test_definition_mapping = {}
if not test_folder_path:
if test_type == "testcase":
# TODO: replace suite with testcases
dir_name = "suite"
elif test_type == "testsuite":
# TODO: replace testcases with testsuites
dir_name = "testcases"
test_folder_path = os.path.join(os.getcwd(), dir_name)
# TODO: replace suite with testcases
test_folder_path = test_folder_path or os.path.join(os.getcwd(), "suite")
test_items_mapping = load_folder_content(test_folder_path)
for test_file_path, items in test_items_mapping.items():
@@ -913,11 +888,9 @@ def load_test_folder(test_folder_path=None, test_type="testcase"):
testcase["config"].update(block)
if "def" not in block:
# testsuite
test_definition_mapping[test_file_path] = testcase
continue
# testcase
testcase_def = block.pop("def")
function_meta = parser.parse_function(testcase_def)
func_name = function_meta["func_name"]
@@ -934,6 +907,27 @@ def load_test_folder(test_folder_path=None, test_type="testcase"):
return test_definition_mapping
def load_project_tests(folder_path=None):
""" load api, testcases and debugtalk.py module.
Args:
folder_path (str): folder path.
If not set, defautls to current working directory.
Returns:
dict: project tests mapping.
"""
folder_path = folder_path or os.getcwd()
return {
"debugtalk": load_debugtalk_module(folder_path),
"tests": {
"api": load_api_folder(os.path.join(folder_path, "api")),
"testcases": load_test_folder(os.path.join(folder_path, "suite"))
}
}
def load(path):
""" main interface for loading testcases

View File

@@ -495,3 +495,10 @@ class TestSuiteLoader(unittest.TestCase):
testsuites_definition_mapping[testsute_path]["config"]["name"],
"smoketest"
)
def test_load_project_tests(self):
project_dir = os.path.join(os.getcwd(), "tests")
project_tests = loader.load_project_tests(project_dir)
self.assertEqual(project_tests["debugtalk"]["variables"]["SECRET_KEY"], "DebugTalk")
self.assertIn("get_token", project_tests["tests"]["api"])
self.assertIn("setup_and_reset", project_tests["tests"]["testcases"])