import pytest import plugins.agl_test_utils as utils import plugins.agl_test_conf as conf import plugins.agl_test_log as log import plugins.agl_test_report as report class AGLBaseTest: name: str case_info_list = dict() def __init__(self, name: str): self.name=name utils.create_dir(self.name) def get_name(self): return self.name def get_temp_logdir(self): return conf.TMP_LOGS_DIR + self.name def get_temp_logfile(self): return conf.get_log_file(self.name) def get_logfile(self): return conf.get_log_file(self.name) def get_workdir(self): return conf.WORK_DIR + self.name + "/resource/" def get_spec_path(self): return conf.WORK_DIR + self.name + "/spec.json" def append_one_caseinfo(name, value, status): self.case_info_list[name] = [name, value, status] def get_all_caseinfo(self): return self.case_info_list def get_caseinfo_by_name(self, name): return self.case_info_list[name] def update_caseinfo_by_name(self, name, case_info): self.case_info_list[name] = case_info def log_process(self): logfile = self.get_logfile() self.case_info_list = log.log_process(logfile) def init_case_status(self): for key in self.case_info_list: case_info = self.case_info_list[key] case_info[2] = "skipped" #if (case_info[1] == "TEST-PASS"): # case_info[2] = "passed" #if (case_info[1] == "TEST-FAIL"): # case_info[2] = "failed" #if (case_info[1] == "TEST-SKIP"): # case_info[2] = "skipped" self.update_caseinfo_by_name(key, case_info) def log_report_json(self): #Get case status list #case_status format # { # 'test_id': 'status', # 'test_id': 'status' # } case_status = report.format_caselist(self.case_info_list) #Get the summary status of the test set. #summary format #{ # 'collected': collected_num, # 'passed': passed_num, # 'failed': failed_num, # 'skipped": skipped_num # } summary = report.format_summary(self.case_info_list) #Get test set status test_set_status = self.get_test_set_status(summary) #Format data for json log data = report.format_json_data(self.name, test_set_status, summary, case_status) report.write_data_to_file(data) #Get test set status #default output: # passed: there is no failed case # failed: there is one or more failed case # skipped: all case is skipped or no case is run def get_test_set_status(self, summary): #Judge whether the test set passes test_set_status = None if (summary["collected"] == summary["skipped"]): test_set_status = "skipped" elif (summary["failed"] == 0): test_set_status = "passed" else: test_set_status = "failed" return test_set_status def log_report(self): self.log_report_json() #Package log file report.log_compress(self.name) #Write json data to html report.change_json_to_html(self.name) def precheck(self): return True;