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 de53da5962
commit 6a68207aa9
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":
tests_mapping.setdefault("testcases", []).append(loaded_content)
elif loaded_content["type"] == "api":
tests_mapping.setdefault("api", []).append(loaded_content)
tests_mapping.setdefault("apis", []).append(loaded_content)
if os.path.isdir(path):
files_list = load_folder_files(path)

View File

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

View File

@@ -85,7 +85,7 @@ def stringify_summary(summary):
for index, suite_summary in enumerate(summary["details"]):
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"):
meta_datas = record['meta_datas']

View File

@@ -317,6 +317,17 @@ class TestHttpRunner(ApiServerUnittest):
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):
for testcase_file_path in self.testcase_file_path_list:
self.runner.run(testcase_file_path)

View File

@@ -322,7 +322,7 @@ class TestSuiteLoader(unittest.TestCase):
os.getcwd(), 'tests/api/create_user.yml')
tests_mapping = loader.load_tests(path)
project_mapping = tests_mapping["project_mapping"]
api_list = tests_mapping["api"]
api_list = tests_mapping["apis"]
self.assertEqual(len(api_list), 1)
self.assertEqual(api_list[0]["request"]["url"], "/api/users/$uid")