fix: run api folder, each api should be encapsulated as individual testcase

This commit is contained in:
debugtalk
2018-12-24 12:24:30 +08:00
parent b0155c8f71
commit 32eae9390c
5 changed files with 21 additions and 9 deletions

View File

@@ -770,7 +770,7 @@ def load_tests(path, dot_env_path=None):
elif loaded_content["type"] == "testcase": elif loaded_content["type"] == "testcase":
tests_mapping.setdefault("testcases", []).append(loaded_content) tests_mapping.setdefault("testcases", []).append(loaded_content)
elif loaded_content["type"] == "api": elif loaded_content["type"] == "api":
tests_mapping.setdefault("api", []).append(loaded_content) tests_mapping.setdefault("apis", []).append(loaded_content)
if os.path.isdir(path): if os.path.isdir(path):
files_list = load_folder_files(path) files_list = load_folder_files(path)

View File

@@ -1101,12 +1101,13 @@ def parse_tests(tests_mapping):
_parse_testcase(testcase, project_mapping) _parse_testcase(testcase, project_mapping)
parsed_tests_mapping["testcases"].append(testcase) parsed_tests_mapping["testcases"].append(testcase)
elif test_type == "api": elif test_type == "apis":
# encapsulate api as a testcase # encapsulate api as a testcase
testcase = { for api_content in tests_mapping["apis"]:
"teststeps": tests_mapping["api"] testcase = {
} "teststeps": [api_content]
_parse_testcase(testcase, project_mapping) }
parsed_tests_mapping["testcases"].append(testcase) _parse_testcase(testcase, project_mapping)
parsed_tests_mapping["testcases"].append(testcase)
return parsed_tests_mapping return parsed_tests_mapping

View File

@@ -85,7 +85,7 @@ def stringify_summary(summary):
for index, suite_summary in enumerate(summary["details"]): for index, suite_summary in enumerate(summary["details"]):
if not suite_summary.get("name"): if not suite_summary.get("name"):
suite_summary["name"] = "test suite {}".format(index) suite_summary["name"] = "testcase {}".format(index)
for record in suite_summary.get("records"): for record in suite_summary.get("records"):
meta_datas = record['meta_datas'] meta_datas = record['meta_datas']

View File

@@ -317,6 +317,17 @@ class TestHttpRunner(ApiServerUnittest):
req_resp_data[0]["request"]["url"] req_resp_data[0]["request"]["url"]
) )
def test_run_api_folder(self):
api_folder = "tests/httpbin/api/"
self.runner.run(api_folder)
summary = self.runner.summary
self.assertTrue(summary["success"])
self.assertEqual(summary["stat"]["testsRun"], 2)
self.assertEqual(summary["stat"]["successes"], 2)
self.assertEqual(len(summary["details"]), 2)
self.assertEqual(summary["details"][0]["stat"]["testsRun"], 1)
self.assertEqual(summary["details"][1]["stat"]["testsRun"], 1)
def test_run_testcase_hardcode(self): def test_run_testcase_hardcode(self):
for testcase_file_path in self.testcase_file_path_list: for testcase_file_path in self.testcase_file_path_list:
self.runner.run(testcase_file_path) self.runner.run(testcase_file_path)

View File

@@ -322,7 +322,7 @@ class TestSuiteLoader(unittest.TestCase):
os.getcwd(), 'tests/api/create_user.yml') os.getcwd(), 'tests/api/create_user.yml')
tests_mapping = loader.load_tests(path) tests_mapping = loader.load_tests(path)
project_mapping = tests_mapping["project_mapping"] project_mapping = tests_mapping["project_mapping"]
api_list = tests_mapping["api"] 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")