def aggregate(self, tests_results): """ aggregate results Args: tests_results (list): list of (testcase, result) """ self.exception_stage = "aggregate results" self.summary = { "success": True, "stat": {}, "time": {}, "platform": report.get_platform(), "details": [] } for tests_result in tests_results: testcase, result = tests_result testcase_summary = report.get_summary(result) self.summary["success"] &= testcase_summary["success"] testcase_summary["name"] = testcase.config.get("name") testcase_summary["base_url"] = testcase.config.get( "request", {}).get("base_url", "") in_out = utils.get_testcase_io(testcase) utils.print_io(in_out) testcase_summary["in_out"] = in_out report.aggregate_stat(self.summary["stat"], testcase_summary["stat"]) report.aggregate_stat(self.summary["time"], testcase_summary["time"]) self.summary["details"].append(testcase_summary)
def _aggregate(self, tests_results): """ aggregate results Args: tests_results (list): list of (testcase, result) """ summary = { "success": True, "stat": { "testcases": { "total": len(tests_results), "success": 0, "fail": 0 }, "teststeps": {} }, "time": {}, "platform": report.get_platform(), "details": [] } for tests_result in tests_results: testcase, result = tests_result testcase_summary = report.get_summary(result) if testcase_summary["success"]: summary["stat"]["testcases"]["success"] += 1 else: summary["stat"]["testcases"]["fail"] += 1 summary["success"] &= testcase_summary["success"] testcase_summary["name"] = testcase.config.get("name") in_out = utils.get_testcase_io(testcase) utils.print_io(in_out) testcase_summary["in_out"] = in_out report.aggregate_stat(summary["stat"]["teststeps"], testcase_summary["stat"]) report.aggregate_stat(summary["time"], testcase_summary["time"]) summary["details"].append(testcase_summary) return summary
def run(self, path_or_testcases, mapping=None): """ start to run test with variables mapping. Args: path_or_testcases (str/list/dict): YAML/JSON testcase file path or testcase list path: path could be in several type - absolute/relative file path - absolute/relative folder path - list/set container with file(s) and/or folder(s) testcases: testcase dict or list of testcases - (dict) testset_dict - (list) list of testset_dict [ testset_dict_1, testset_dict_2 ] mapping (dict): if mapping specified, it will override variables in config block. Returns: instance: HttpRunner() instance """ # loader testcases_list = self.load_tests(path_or_testcases) # parser parsed_testcases_list = self.parse_tests(testcases_list) # initialize unittest_runner, test_suite = self.__initialize(parsed_testcases_list) # aggregate self.summary = { "success": True, "stat": {}, "time": {}, "platform": report.get_platform(), "details": [] } # execution for testcase in test_suite: testcase_name = testcase.config.get("name") logger.log_info("Start to run testcase: {}".format(testcase_name)) result = unittest_runner.run(testcase) testcase_summary = report.get_summary(result) self.summary["success"] &= testcase_summary["success"] testcase_summary["name"] = testcase_name testcase_summary["base_url"] = testcase.config.get( "request", {}).get("base_url", "") in_out = utils.get_testcase_io(testcase) utils.print_io(in_out) testcase_summary["in_out"] = in_out report.aggregate_stat(self.summary["stat"], testcase_summary["stat"]) report.aggregate_stat(self.summary["time"], testcase_summary["time"]) self.summary["details"].append(testcase_summary) return self