import re def log_parser(log_file): prefix = "" pattern_pre = '(^test [0-9]+)...(.*?)' regex_pre = re.compile(pattern_pre, re.MULTILINE) pattern = '^(FAIL|PASS|SKIP+?): (test [0-9]+) .*' regex = re.compile(pattern, re.MULTILINE) suffix_msg = "does not exist" end_msg = "TESTDONE:" case_list = dict() test_log = open(log_file, 'r') line = test_log.readline() while line: if end_msg in line: break # match pass/fail case with formate msg matchs = regex.search(line) if matchs: groups = matchs.groups() case_name = groups[1].strip() case_list[case_name] = [case_name, groups[0], ""] # match cases with org msg matchs_pre = regex_pre.search(line) if matchs_pre: groups_pre = matchs_pre.groups() case_name = groups_pre[0].strip() if suffix_msg in line: # match skip cases case_list[case_name] = [case_name, "SKIP", ""] else: nextline = test_log.readline() if "OK" in nextline: # match pass cases case_list[case_name] = [case_name, "PASS", ""] else: # match fail cases case_list[case_name] = [case_name, "FAIL", ""] line=test_log.readline() test_log.close() return case_list