class IsContent: def __init__(self): self.excel=OperationExcel() self.log=MyLog() def isContent(self,row,str2): flag=None if self.excel.getExpect(row=row) in str2: flag=True self.log.infoLog('%s接口通过预期结果断言成功'%self.excel.getCaseID(row)) else: flag=False self.log.errorLog('%s接口通过预期结果断言失败'%self.excel.getCaseID(row)) return flag
class Method: def __init__(self): self.operationJson=OperationJson() self.excel=OperationExcel() self.log=MyLog() def post(self,row,data=None): try: r=requests.post( url=self.excel.getUrl(row), data=data, headers=getHeadersValue(), timeout=6) self.log.infoLog('接口%s请求成功,请求方式:post,请求参数:%s' %(self.excel.getCaseID(row),data)) return r except Exception as e: self.log.errorLog('接口%s请求错误,原因:%s'%(self.excel.getCaseID(row),e)) raise RuntimeError('接口请求发生未知的错误') def get(self,row,params=None): try: r=requests.get(url=self.excel.getUrl(row), params=params, headers=getHeadersValue(), timeout=6) self.log.infoLog('接口%s请求成功,请求方式:get,请求参数:%s' %(self.excel.getCaseID(row),params)) return r except Exception as e: self.log.errorLog('接口%s请求错误,原因:%s'%(self.excel.getCaseID(row),e)) raise RuntimeError('接口请求发生未知错误') def method(self,row,data=None,params=None): method=self.excel.getMethod(row) if method == 'post': r=requests.post( url=self.excel.getUrl(row), data=data, headers=getHeadersInfo(), timeout=6) self.log.infoLog('接口%s请求成功,请求方式:post,请求参数:%s' %(self.excel.getCaseID(row),data)) return r elif method == 'get': r=requests.get( url=self.excel.getUrl(row), params=params, headers=getHeadersInfo(), timeout=6) self.log.infoLog('接口%s请求成功,请求方式:get,请求参数:%s' %(self.excel.getCaseID(row),params)) return r else: self.log.errorLog('接口请求方式不正确')
class OperationExcel: def __init__(self): self.log=MyLog() def getExcel(self): db=xlrd.open_workbook(data_dir('data','data.xls')) sheet=db.sheet_by_index(0) return sheet def get_rows(self): '''获取excel的行数''' return self.getExcel().nrows def get_row_cel(self,row,col): '''获取单元格的内容''' return self.getExcel().cell_value(row,col) def getCaseID(self,row): '''获取测试ID''' return self.get_row_cel(row,getCaseID()) def getUrl(self,row): '''获取请求地址''' return self.get_row_cel(row,getUrl()) def get_request_data(self,row): '''获取请求参数''' return self.get_row_cel(row, get_request_data()) def getMethod(self,row): '''获取请求方式''' return self.get_row_cel(row,getMethod()) def getExpect(self,row): '''获取期望结果''' return self.get_row_cel(row,getExpect()) def getResult(self,row): '''获取实际的结果''' return self.get_row_cel(row,getResult()) def writeResult(self,row,content): '''测试结果写到文件中''' try: col=getResult() work =xlrd.open_workbook(data_dir('data','data.xls')) #打开表 old_content = copy(work) #利用xlutils.copy下的copy函数复制 ws = old_content.get_sheet(0) #获取表单0 ws.write(row,col,content) ##改变(row,col)的值 old_content.save(data_dir("data","data.xls")) #保存文件 self.log.infoLog('测试结果写入excel成功,写入结果:%s' %content) except Exception as e: self.log.errorLog('测试结果写入excel失败,原因:%s'%e) def run_success_result(self): '''获取执行成功的用例数''' pass_count=[] fail_count=None for i in range(1,self.get_rows()): if self.getResult(i)=='pass': pass_count.append(i) return int(len(pass_count)) def run_fail_result(self): '''获取执行失败的用例数''' return int((self.get_rows()-1)-self.run_success_result()) #总数减去成功数 def run_pass_rate(self): '''测试结果通过率''' rate='' if self.run_fail_result()==0: rate='100%' elif self.run_fail_result()!=0: rate=str(int(self.run_success_result()/int(self.get_rows()-1)*100))+'%' return rate