From 233f54d3152b27ca9b3d1636a4ea1fd07cf47011 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Mon, 8 Apr 2019 20:52:14 +0800 Subject: [PATCH] remove project_mapping from parse_tests result --- httprunner/api.py | 21 +++++++++++---------- httprunner/parser.py | 15 ++++++--------- httprunner/runner.py | 4 ++-- httprunner/utils.py | 40 ++++++---------------------------------- tests/test_api.py | 31 ++++++++++++++----------------- tests/test_context.py | 8 ++++---- tests/test_parser.py | 43 +++++++++++++++++++++---------------------- tests/test_runner.py | 32 ++++++++++++++++---------------- 8 files changed, 80 insertions(+), 114 deletions(-) diff --git a/httprunner/api.py b/httprunner/api.py index e7817d11..8dc2b7d6 100644 --- a/httprunner/api.py +++ b/httprunner/api.py @@ -36,11 +36,11 @@ class HttpRunner(object): if log_file: logger.setup_logger(log_level, log_file) - def _add_tests(self, tests_mapping): + def _add_tests(self, testcases): """ initialize testcase with Runner() and add to test suite. Args: - tests_mapping (dict): project info and testcases list. + testcases (list): testcases list. Returns: unittest.TestSuite() @@ -74,7 +74,7 @@ class HttpRunner(object): return test test_suite = unittest.TestSuite() - for testcase in tests_mapping["testcases"]: + for testcase in testcases: config = testcase.get("config", {}) test_runner = runner.Runner(config) TestSequense = type('TestSequense', (unittest.TestCase,), {}) @@ -162,19 +162,20 @@ class HttpRunner(object): def run_tests(self, tests_mapping): """ run testcase/testsuite data """ + project_mapping = tests_mapping.get("project_mapping", {}) if self.save_tests: - utils.dump_tests(tests_mapping, "loaded") + utils.dump_logs(tests_mapping, project_mapping, "loaded") # parse tests self.exception_stage = "parse tests" - parsed_tests_mapping = parser.parse_tests(tests_mapping) + parsed_testcases = parser.parse_tests(tests_mapping) if self.save_tests: - utils.dump_tests(parsed_tests_mapping, "parsed") + utils.dump_logs(parsed_testcases, project_mapping, "parsed") # add tests to test suite self.exception_stage = "add tests to test suite" - test_suite = self._add_tests(parsed_tests_mapping) + test_suite = self._add_tests(parsed_testcases) # run test suite self.exception_stage = "run test suite" @@ -189,7 +190,7 @@ class HttpRunner(object): report.stringify_summary(self._summary) if self.save_tests: - utils.dump_summary(self._summary, tests_mapping["project_mapping"]) + utils.dump_logs(self._summary, project_mapping, "summary") report_path = report.render_html_report( self._summary, @@ -289,11 +290,11 @@ def prepare_locust_tests(path): """ tests_mapping = loader.load_tests(path) - parsed_tests_mapping = parser.parse_tests(tests_mapping) + testcases = parser.parse_tests(tests_mapping) locust_tests = [] - for testcase in parsed_tests_mapping["testcases"]: + for testcase in testcases: testcase_weight = testcase.get("config", {}).pop("weight", 1) for _ in range(testcase_weight): locust_tests.append(testcase) diff --git a/httprunner/parser.py b/httprunner/parser.py index 59e43ceb..119edb90 100644 --- a/httprunner/parser.py +++ b/httprunner/parser.py @@ -890,7 +890,7 @@ def __prepare_testcase_tests(tests, config, project_mapping): extract_mapping = utils.ensure_mapping_format(test_dict["extract"]) session_variables.update(extract_mapping) - check_variables_set = set(test_dict["variables"].keys()) \ + check_variables_set = set(test_dict.get("variables", {}).keys()) \ | set(session_variables.keys()) | {"request", "response"} # convert validators to lazy function @@ -1142,10 +1142,7 @@ def parse_tests(tests_mapping): """ project_mapping = tests_mapping.get("project_mapping", {}) - parsed_tests_mapping = { - "project_mapping": project_mapping, - "testcases": [] - } + testcases = [] for test_type in tests_mapping: @@ -1155,12 +1152,12 @@ def parse_tests(tests_mapping): for testsuite in testsuites: parsed_testcases = _parse_testsuite(testsuite, project_mapping) for parsed_testcase in parsed_testcases: - parsed_tests_mapping["testcases"].append(parsed_testcase) + testcases.append(parsed_testcase) elif test_type == "testcases": for testcase in tests_mapping["testcases"]: parsed_testcase = _parse_testcase(testcase, project_mapping) - parsed_tests_mapping["testcases"].append(parsed_testcase) + testcases.append(parsed_testcase) elif test_type == "apis": # encapsulate api as a testcase @@ -1169,6 +1166,6 @@ def parse_tests(tests_mapping): "teststeps": [api_content] } parsed_testcase = _parse_testcase(testcase, project_mapping) - parsed_tests_mapping["testcases"].append(parsed_testcase) + testcases.append(parsed_testcase) - return parsed_tests_mapping + return testcases diff --git a/httprunner/runner.py b/httprunner/runner.py index f0e7ad5e..aaadcc43 100644 --- a/httprunner/runner.py +++ b/httprunner/runner.py @@ -36,8 +36,8 @@ class Runner(object): ] } - >>> parsed_tests_mapping = parser.parse_tests(tests_mapping) - >>> parsed_testcase = parsed_tests_mapping["testcases"][0] + >>> testcases = parser.parse_tests(tests_mapping) + >>> parsed_testcase = testcases[0] >>> test_runner = runner.Runner(parsed_testcase["config"]) >>> test_runner.run_test(parsed_testcase["teststeps"][0]) diff --git a/httprunner/utils.py b/httprunner/utils.py index 73da341c..89e728b5 100644 --- a/httprunner/utils.py +++ b/httprunner/utils.py @@ -579,46 +579,18 @@ def _prepare_dump_info(project_mapping, tag_name): return pwd_dir_path, dump_file_name -def dump_tests(tests_mapping, tag_name): - """ dump loaded/parsed tests data (except functions) to json file. +def dump_logs(json_data, project_mapping, tag_name): + """ dump tests data to json file. the dumped file is located in PWD/logs folder. Args: - tests_mapping (dict): data to dump - tag_name (str): tag name, loaded/parsed + json_data (list/dict): json data to dump + project_mapping (dict): project info + tag_name (str): tag name, loaded/parsed/summary """ - project_mapping = tests_mapping.get("project_mapping", {}) pwd_dir_path, dump_file_name = _prepare_dump_info(project_mapping, tag_name) - - tests_to_dump = { - "project_mapping": {} - } - - for key in project_mapping: - if key == "functions" and project_mapping["functions"]: - tests_to_dump["project_mapping"]["debugtalk.py"] = { - "path": os.path.join(pwd_dir_path, "debugtalk.py"), - "functions": project_mapping["functions"] - } - else: - tests_to_dump["project_mapping"][key] = project_mapping[key] - - if "api" in tests_mapping: - tests_to_dump["api"] = tests_mapping["api"] - elif "testcases" in tests_mapping: - tests_to_dump["testcases"] = tests_mapping["testcases"] - elif "testsuites" in tests_mapping: - tests_to_dump["testsuites"] = tests_mapping["testsuites"] - - dump_json_file(tests_to_dump, pwd_dir_path, dump_file_name) - - -def dump_summary(summary, project_mapping): - """ dump test result summary to json file. - """ - pwd_dir_path, dump_file_name = _prepare_dump_info(project_mapping, "summary") - dump_json_file(summary, pwd_dir_path, dump_file_name) + dump_json_file(json_data, pwd_dir_path, dump_file_name) def get_python2_retire_msg(): diff --git a/tests/test_api.py b/tests/test_api.py index 78aba4ef..d4c23b8a 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -578,8 +578,7 @@ class TestApi(ApiServerUnittest): testcase_path = "tests/testcases/setup.yml" tests_mapping = loader.load_tests(testcase_path) - parsed_tests_mapping = parser.parse_tests(tests_mapping) - parsed_testcases = parsed_tests_mapping["testcases"] + parsed_testcases = parser.parse_tests(tests_mapping) self.assertEqual(len(parsed_testcases), 1) @@ -600,9 +599,9 @@ class TestApi(ApiServerUnittest): testcase_path = "tests/testcases/setup.yml" tests_mapping = loader.load_tests(testcase_path) - parsed_tests_mapping = parser.parse_tests(tests_mapping) + testcases = parser.parse_tests(tests_mapping) runner = HttpRunner() - test_suite = runner._add_tests(parsed_tests_mapping) + test_suite = runner._add_tests(testcases) self.assertEqual(len(test_suite._tests), 1) teststeps = test_suite._tests[0].teststeps @@ -613,8 +612,8 @@ class TestApi(ApiServerUnittest): def test_testcase_complex_verify(self): testcase_path = "tests/testcases/create_and_check.yml" tests_mapping = loader.load_tests(testcase_path) - parsed_tests_mapping = parser.parse_tests(tests_mapping) - teststeps = parsed_tests_mapping["testcases"][0]["teststeps"] + testcases = parser.parse_tests(tests_mapping) + teststeps = testcases[0]["teststeps"] # testcases/setup.yml teststep1 = teststeps[0] @@ -629,18 +628,18 @@ class TestApi(ApiServerUnittest): def test_testcase_simple_run_suite(self): testcase_path = "tests/testcases/setup.yml" tests_mapping = loader.load_tests(testcase_path) - parsed_tests_mapping = parser.parse_tests(tests_mapping) + testcases = parser.parse_tests(tests_mapping) runner = HttpRunner() - test_suite = runner._add_tests(parsed_tests_mapping) + test_suite = runner._add_tests(testcases) tests_results = runner._run_suite(test_suite) self.assertEqual(len(tests_results[0][1].records), 2) def test_testcase_complex_run_suite(self): testcase_path = "tests/testcases/create_and_check.yml" tests_mapping = loader.load_tests(testcase_path) - parsed_tests_mapping = parser.parse_tests(tests_mapping) + testcases = parser.parse_tests(tests_mapping) runner = HttpRunner() - test_suite = runner._add_tests(parsed_tests_mapping) + test_suite = runner._add_tests(testcases) tests_results = runner._run_suite(test_suite) self.assertEqual(len(tests_results[0][1].records), 4) @@ -690,9 +689,7 @@ class TestApi(ApiServerUnittest): testcase_path = "tests/testsuites/create_users.yml" tests_mapping = loader.load_tests(testcase_path) - parsed_tests_mapping = parser.parse_tests(tests_mapping) - - parsed_testcases = parsed_tests_mapping["testcases"] + parsed_testcases = parser.parse_tests(tests_mapping) self.assertEqual(len(parsed_testcases), 2) self.assertEqual(len(parsed_testcases[0]["teststeps"]), 4) @@ -710,9 +707,9 @@ class TestApi(ApiServerUnittest): testcase_path = "tests/testsuites/create_users.yml" tests_mapping = loader.load_tests(testcase_path) - parsed_tests_mapping = parser.parse_tests(tests_mapping) + testcases = parser.parse_tests(tests_mapping) runner = HttpRunner() - test_suite = runner._add_tests(parsed_tests_mapping) + test_suite = runner._add_tests(testcases) self.assertEqual(len(test_suite._tests), 2) tests = test_suite._tests[0].teststeps @@ -722,10 +719,10 @@ class TestApi(ApiServerUnittest): testcase_path = "tests/testsuites/create_users.yml" tests_mapping = loader.load_tests(testcase_path) - parsed_tests_mapping = parser.parse_tests(tests_mapping) + testcases = parser.parse_tests(tests_mapping) runner = HttpRunner() - test_suite = runner._add_tests(parsed_tests_mapping) + test_suite = runner._add_tests(testcases) tests_results = runner._run_suite(test_suite) self.assertEqual(len(tests_results[0][1].records), 4) diff --git a/tests/test_context.py b/tests/test_context.py index 7d0a5ca7..6659ef24 100644 --- a/tests/test_context.py +++ b/tests/test_context.py @@ -146,8 +146,8 @@ class TestContext(ApiServerUnittest): }, "testcases": testcases } - parsed_tests_mapping = parser.parse_tests(tests_mapping) - parsed_testcase = parsed_tests_mapping["testcases"][0] + testcases = parser.parse_tests(tests_mapping) + parsed_testcase = testcases[0] test_runner = runner.Runner(parsed_testcase["config"]) teststep = parsed_testcase["teststeps"][0] test_runner.run_test(teststep) @@ -181,8 +181,8 @@ class TestContext(ApiServerUnittest): tests_mapping = { "testcases": testcases } - parsed_tests_mapping = parser.parse_tests(tests_mapping) - parsed_testcase = parsed_tests_mapping["testcases"][0] + testcases = parser.parse_tests(tests_mapping) + parsed_testcase = testcases[0] test_runner = runner.Runner(parsed_testcase["config"]) teststep = parsed_testcase["teststeps"][0] with self.assertRaises(exceptions.ValidationFailure): diff --git a/tests/test_parser.py b/tests/test_parser.py index c0317811..6513e08c 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -665,8 +665,7 @@ class TestParser(unittest.TestCase): testcases[0]["config"]["variables"]["PROJECT_KEY"], "${ENV(PROJECT_KEY)}" ) - parsed_tests_mapping = parser.parse_tests(tests_mapping) - parsed_testcases = parsed_tests_mapping["testcases"] + parsed_testcases = parser.parse_tests(tests_mapping) self.assertIsInstance(parsed_testcases, list) test_dict1 = parsed_testcases[0]["teststeps"][0] self.assertEqual(test_dict1["variables"]["var_c"].raw_string, "${sum_two($var_a, $var_b)}") @@ -697,8 +696,8 @@ class TestParser(unittest.TestCase): } ] } - parsed_tests_mapping = parser.parse_tests(tests_mapping) - test_dict1_variables = parsed_tests_mapping["testcases"][0]["teststeps"][0]["variables"] + parsed_testcases = parser.parse_tests(tests_mapping) + test_dict1_variables = parsed_testcases[0]["teststeps"][0]["variables"] self.assertEqual(test_dict1_variables["creator"], "user_test_001") self.assertEqual(test_dict1_variables["username"].raw_string, "$creator") @@ -726,8 +725,8 @@ class TestParser(unittest.TestCase): } ] } - parsed_tests_mapping = parser.parse_tests(tests_mapping) - test_dict = parsed_tests_mapping["testcases"][0]["teststeps"][0] + parsed_testcases = parser.parse_tests(tests_mapping) + test_dict = parsed_testcases[0]["teststeps"][0] self.assertEqual(test_dict["request"]["url"], "/api1") self.assertEqual(test_dict["request"]["verify"], True) @@ -754,8 +753,8 @@ class TestParser(unittest.TestCase): } ] } - parsed_tests_mapping = parser.parse_tests(tests_mapping) - test_dict = parsed_tests_mapping["testcases"][0]["teststeps"][0] + parsed_testcases = parser.parse_tests(tests_mapping) + test_dict = parsed_testcases[0]["teststeps"][0] self.assertEqual(test_dict["variables"]["host2"], "https://httprunner.org") parsed_test_dict = parser.parse_lazy_data(test_dict, test_dict["variables"]) self.assertEqual(parsed_test_dict["request"]["url"], "https://httprunner.org/api1") @@ -784,8 +783,8 @@ class TestParser(unittest.TestCase): } ] } - parsed_tests_mapping = parser.parse_tests(tests_mapping) - test_dict = parsed_tests_mapping["testcases"][0]["teststeps"][0] + parsed_testcases = parser.parse_tests(tests_mapping) + test_dict = parsed_testcases[0]["teststeps"][0] parsed_test_dict = parser.parse_lazy_data(test_dict, test_dict["variables"]) self.assertEqual(parsed_test_dict["base_url"], "https://httprunner.org") @@ -829,8 +828,8 @@ class TestParser(unittest.TestCase): } ] } - parsed_tests_mapping = parser.parse_tests(tests_mapping) - test_dict = parsed_tests_mapping["testcases"][0]["teststeps"][0] + parsed_testcases = parser.parse_tests(tests_mapping) + test_dict = parsed_testcases[0]["teststeps"][0] variables = parser.parse_variables_mapping(test_dict["variables"]) self.assertEqual(variables["num3"], 10) self.assertEqual(variables["num2"], 6) @@ -905,8 +904,8 @@ class TestParser(unittest.TestCase): } ] } - parsed_tests_mapping = parser.parse_tests(tests_mapping) - test_dict = parsed_tests_mapping["testcases"][0]["teststeps"][0] + parsed_testcases = parser.parse_tests(tests_mapping) + test_dict = parsed_testcases[0]["teststeps"][0] self.assertEqual(str(test_dict["base_url"]), 'LazyString($host)') self.assertEqual(test_dict["request"]["verify"], True) @@ -930,8 +929,8 @@ class TestParser(unittest.TestCase): } ] } - parsed_tests_mapping = parser.parse_tests(tests_mapping) - test_dict = parsed_tests_mapping["testcases"][0]["teststeps"][0] + parsed_testcases = parser.parse_tests(tests_mapping) + test_dict = parsed_testcases[0]["teststeps"][0] self.assertEqual(test_dict["request"]["verify"], False) def test_parse_tests_verify_config_unset(self): @@ -953,8 +952,8 @@ class TestParser(unittest.TestCase): } ] } - parsed_tests_mapping = parser.parse_tests(tests_mapping) - test_dict = parsed_tests_mapping["testcases"][0]["teststeps"][0] + parsed_testcases = parser.parse_tests(tests_mapping) + test_dict = parsed_testcases[0]["teststeps"][0] self.assertEqual(test_dict["request"]["verify"], True) def test_parse_tests_verify_step_set_false(self): @@ -977,8 +976,8 @@ class TestParser(unittest.TestCase): } ] } - parsed_tests_mapping = parser.parse_tests(tests_mapping) - test_dict = parsed_tests_mapping["testcases"][0]["teststeps"][0] + parsed_testcases = parser.parse_tests(tests_mapping) + test_dict = parsed_testcases[0]["teststeps"][0] self.assertEqual(test_dict["request"]["verify"], False) def test_parse_tests_verify_nested_testcase_unset(self): @@ -1012,8 +1011,8 @@ class TestParser(unittest.TestCase): } ] } - parsed_tests_mapping = parser.parse_tests(tests_mapping) - test_dict = parsed_tests_mapping["testcases"][0]["teststeps"][0] + parsed_testcases = parser.parse_tests(tests_mapping) + test_dict = parsed_testcases[0]["teststeps"][0] self.assertEqual(test_dict["teststeps"][0]["request"]["verify"], False) def test_parse_environ(self): diff --git a/tests/test_runner.py b/tests/test_runner.py index 22fabe46..4b684c1d 100644 --- a/tests/test_runner.py +++ b/tests/test_runner.py @@ -36,8 +36,8 @@ class TestRunner(ApiServerUnittest): for testcase_file_path in testcase_file_path_list: tests_mapping = loader.load_tests(testcase_file_path) - parsed_tests_mapping = parser.parse_tests(tests_mapping) - parsed_testcase = parsed_tests_mapping["testcases"][0] + parsed_testcases = parser.parse_tests(tests_mapping) + parsed_testcase = parsed_testcases[0] test_runner = runner.Runner(parsed_testcase["config"]) test_runner.run_test(parsed_testcase["teststeps"][0]) test_runner.run_test(parsed_testcase["teststeps"][1]) @@ -90,8 +90,8 @@ class TestRunner(ApiServerUnittest): }, "testcases": testcases } - parsed_tests_mapping = parser.parse_tests(tests_mapping) - parsed_testcase = parsed_tests_mapping["testcases"][0] + parsed_testcases = parser.parse_tests(tests_mapping) + parsed_testcase = parsed_testcases[0] test_runner = runner.Runner(parsed_testcase["config"]) end_time = time.time() # check if testcase setup hook executed @@ -139,8 +139,8 @@ class TestRunner(ApiServerUnittest): }, "testcases": testcases } - parsed_tests_mapping = parser.parse_tests(tests_mapping) - parsed_testcase = parsed_tests_mapping["testcases"][0] + parsed_testcases = parser.parse_tests(tests_mapping) + parsed_testcase = parsed_testcases[0] test_runner = runner.Runner(parsed_testcase["config"]) test_runner.run_test(parsed_testcase["teststeps"][0]) test_variables_mapping = test_runner.session_context.test_variables_mapping @@ -187,8 +187,8 @@ class TestRunner(ApiServerUnittest): }, "testcases": testcases } - parsed_tests_mapping = parser.parse_tests(tests_mapping) - parsed_testcase = parsed_tests_mapping["testcases"][0] + parsed_testcases = parser.parse_tests(tests_mapping) + parsed_testcase = parsed_testcases[0] test_runner = runner.Runner(parsed_testcase["config"]) test_runner.run_test(parsed_testcase["teststeps"][0]) @@ -229,8 +229,8 @@ class TestRunner(ApiServerUnittest): }, "testcases": testcases } - parsed_tests_mapping = parser.parse_tests(tests_mapping) - parsed_testcase = parsed_tests_mapping["testcases"][0] + parsed_testcases = parser.parse_tests(tests_mapping) + parsed_testcase = parsed_testcases[0] test_runner = runner.Runner(parsed_testcase["config"]) start_time = time.time() @@ -276,8 +276,8 @@ class TestRunner(ApiServerUnittest): }, "testcases": testcases } - parsed_tests_mapping = parser.parse_tests(tests_mapping) - parsed_testcase = parsed_tests_mapping["testcases"][0] + parsed_testcases = parser.parse_tests(tests_mapping) + parsed_testcase = parsed_testcases[0] test_runner = runner.Runner(parsed_testcase["config"]) start_time = time.time() @@ -290,8 +290,8 @@ class TestRunner(ApiServerUnittest): testcase_file_path = os.path.join( os.getcwd(), 'tests/data/bugfix_type_match.yml') tests_mapping = loader.load_tests(testcase_file_path) - parsed_tests_mapping = parser.parse_tests(tests_mapping) - parsed_testcase = parsed_tests_mapping["testcases"][0] + parsed_testcases = parser.parse_tests(tests_mapping) + parsed_testcase = parsed_testcases[0] test_runner = runner.Runner(parsed_testcase["config"]) test_runner.run_test(parsed_testcase["teststeps"][0]) @@ -333,7 +333,7 @@ class TestRunner(ApiServerUnittest): }, "testcases": testcases } - parsed_tests_mapping = parser.parse_tests(tests_mapping) - parsed_testcase = parsed_tests_mapping["testcases"][0] + parsed_testcases = parser.parse_tests(tests_mapping) + parsed_testcase = parsed_testcases[0] test_runner = runner.Runner(parsed_testcase["config"]) test_runner.run_test(parsed_testcase["teststeps"][0]) \ No newline at end of file