def runCase(): global casepath, resultpath r = Reader() w = Writer() r.open_excel(casepath) #打开表,默认为第一个sheet w.copy_open(casepath, resultpath) sheetname = r.get_sheets() #根据表格的配置,创建不同的对象,例如表中第2行第2个字段为WEB,即创建WEB()对象 way = r.getparameter('1', '1') if way == 'APP': obj = APP(None) elif way == 'HTTP': obj = HTTP(w) elif way == 'SOAP': obj = SOAP(w) elif way == 'WEB': obj = WEB() w.set_sheet(sheetname[0]) w.write(2, 3, str( datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))) # StartTime for sheet in sheetname: #设置读写都是当前的sheet页面 r.set_sheet(sheet) w.set_sheet(sheet) w.clo = 7 #写入的列数以固定,所以设置列数为第8列,!第一列为0 for i in range(r.rows): line = r.readline() w.row = i #读到第几行就写入第几行 print(line) if len(line[0]) > 0 or len(line[1]) > 0: continue else: # 接口类型设置2 func = get_func(obj, line) L = get_args(func) run(func, L, line) w.set_sheet(sheetname[0]) w.write(2, 4, str( datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))) #EndTime w.save_close()
def get_res(self, result_path): #用于记录执行结果,逻辑行为,只要分组中出现一个失败,则认为改分组结果失败 self.sumarry.clear() status = 'Fail' #标识是否有失败 flag = True #统计测试用例的用例总数 totalcount = 0 #统计所有用例中通过用例的条数 totalpass = 0 reader = Reader() reader.open_excel(result_path) #获取所有sheet页面 sheetname = reader.get_sheets() for n in sheetname: #从第一个页面开始解析 reader.set_sheet(n) #获取当前sheeet的总行数,用来遍历 row = reader.rows #设置从第二行开始读 reader.r = 1 #遍历sheet里面所有用例 for i in range(1, row): line = reader.readline() #查找记录了分组信息的行 #如果第一列(分组信息)和第二列(类名或者用例名)不同时为空,则不是用例,执行非用例操作 # if not (line[0] == '' and line[1] == ''): if len(line[0]) > 0 or len(line[1]) > 0: pass #非用例行判断借宿 #第一列信息和第二列信息均为空的行,这时开始进行用例数、通过数、状态的统计 else: #判断执行结果列,如果为空,将flag置为false,是为改行有误,不纳入用例数量计算 if len(line) < 6 or len(line[7]) == '': flag = False #执行结果不为空,则将用例统计数自增 else: totalcount += 1 #如果通过,则通过数和总通过数均自增 if line[7] == 'PASS': totalpass += 1 else: #出现了用例执行结果不是pass的情况,则视为当前分组执行失败 flag = False #for循环结束 #所有用例执行概况 #计算执行通过率 #如果flag = True if flag: status = 'Pass' #计算通过率 try: p = int(totalpass * 10000 / totalcount) passrate = p / 100 except Exception as e: passrate = 0.0 logger.exception(e) #设置默认第一个sheet,用来读取runtype,title,StartTime,EndTime reader.set_sheet(sheetname[0]) self.sumarry['runtype'] = str(reader.getparameter('1', '1')) #请求方式 self.sumarry['title'] = str(reader.getparameter('1', '2')) #标题 self.sumarry['StartTime'] = str(reader.getparameter('2', '3')) #开始时间 self.sumarry['EndTime'] = str(reader.getparameter('2', '4')) # 结束时间 self.sumarry['casecount'] = str(totalcount) #用例总数 self.sumarry['passrate'] = str(passrate) + '%' #通过率 self.sumarry['status'] = status #结果 return self.sumarry