接口自动化系列教程----应用中心

it2022-05-05  122

接口自动化思路看这里 码云地址:https://gitee.com/AutoApi/apiauto 上一篇分享了整体的思路和架构。本文详细介绍应用层主要提供的服务。 应用层主要包含的功能及备注: 1、接口中心服务 介绍 主要提供接口请求服务,返回接口请求结果。主要代码展示

Interface(session,url, param=None,parammode='data', method='post', headers=None,verify=False, Response=True): """ 封装的http请求方法,接受session url, param, method, verify, headers 发起http请求并返回接口返回的json :param session: requests session 对象 :param url: 请求地址 :param param: 请求参数 :param parammode:请求参数传入方式 data/json :param method: 请求方式 默认post :param verify: ssl检验 默认关 :param headers: http headers :param Response: 是否json格式response标志 :return: 接口返回内容/None if method == 'POST': logger.debug(f'请求方法为:%s'%method) if parammode=='data': logger.debug(f'请求参数类型为:%s' % parammode) res = session.post(url, data=param, verify=verify, headers=headers) elif parammode=='json': logger.debug(f'请求参数类型为:%s' % parammode) res = session.post(url, json=param, verify=verify, headers=headers) elif method == 'GET': logger.debug(f'请求方法为:%s' % method) res = session.get(url, params=param, verify=verify, headers=headers) return returnJson

2、校验中心服务 介绍 主要提供预期结果和实际结果请求服务,返回比对结果。 主要代码展示

def KeyExist(dict1,dict2): n = 0 if dict1=={}: return False for key in dict1.keys(): if key in dict2.keys(): pass n=n+1 if n==len(dict1): return True else: return False #判断dict2是否包含dict1 def Compare_ListDict(dick1, dick2): flag = False n = 0 keyexist=KeyExist(dick1, dick2) if keyexist ==True: for i in dick1.keys(): n=n+1 if dick1[i] != dick2[i]: break elif n==len(dick1): flag = True elif dick1=={}: flag = True else: pass return flag """判断sql结果是否为()""" def JudgeSqlEmpty(sql,env): ''' :param sql: 需要执行sql :param env: 执行环境 :return: 执行结果:true或者false ''' try: result=DBmananger(env).callMysql(sql) logger.debug(result) except Exception as e: logger.error(e) result=() if result==(): return False else: return True

3、数据处理服务 主要提供excle读、写、格式化等服务。 主要代码展示

def AssembleCase(filepath,newexcelPath): ''' 测试用例组装工厂 :return: 测试用例 ''' #新增同名excel、sheet test = ExcelHander(filepath)#实例化 add_sheet = test.sheet_names#获取sheetname列表:['sheet1','sheet2'] test.CreateExcel(newexcelPath, add_sheet)#创建excel及sheet(cope原excel新建空的execle) #给excel填充数据 for i in range(len(add_sheet)): test.CopeExcel( filepath, newexcelPath, i) #按sheet分组,组装request数据 wb = xlrd.open_workbook(newexcelPath) # 加载新excel sheet_names = wb.sheet_names() # 获取excel所有sheet名集合形如:['sheet1', 'sheet2', 'sheet3'] caselist=[] for i in range(len(sheet_names)): caselist.append(test.ExcelDick(sheet_names[i]))#返回所有sheet集合,形如ExcelDick[{'sheetName':[{列名:values},{列名:values}]},{'sheetName':[{列名:values},None] #接口请求数据 return caselist def excleFormat(filepath): ''' filepath 格式化excle :return: excel表头宋体斜体加粗背景色blue 12号 6e6fff 其他内容宋体背景色无 11号 ffffff 成功的 宋体背景色绿色 11号 23ff00 失败 宋体背景色绿色 11号 ff0f06 ''' wb = xlrd.open_workbook(filepath)#加载 sheet_names = wb.sheet_names() # 获取excel所有sheet名集合形如:['test', 'test2', 'test3'] #######字体 if sheet_names==[]: logger.debug('excel是空sheet') pass else: for i,SheetName in enumerate(sheet_names) : table = wb.sheet_by_name(SheetName) logger.debug('获取第%s个sheet=%s'%(i,SheetName)) # 获取总行数 rowNum = table.nrows logger.debug('行数:%s'%(rowNum)) # 获取总列数 colNum = table.ncols logger.debug('列数:%s' % (colNum)) name='Times New Roman' if rowNum<1: logger.debug('空sheet') pass else: for m in list(range(1, rowNum + 1)): for n in list(range(97, 97 + colNum)): # 字母a=97 if m==1: n = chr(n) postition = '%s%d' % (n, m) color='6e6fff' bold=True italic=True size=12 logger.debug('格式第一行数据') wordFormat(filepath, postition, size, name, bold, italic, i) fgColor='6e6fff' backFormat(filepath,m, ord(n)-96, fgColor, i) else: n = chr(n) postition = '%s%d' % (n, m) color = '6e6fff' bold = False italic = False size = 11 logger.debug('格式化%s行数据'%(m)) wordFormat(filepath, postition, size, name, bold, italic, i) cell_value = table.cell_value(m-1,10) print(m-1) print(cell_value) if cell_value=='TRUE'or cell_value==1 : fgColor='23ff00' logger.debug('获取到结果:TRUE') backFormat(filepath,m, 11, fgColor, i) elif cell_value=='FLASE' or cell_value==0: fgColor = 'ff0f06' logger.debug('获取到结果:FLASE') backFormat(filepath,m, 11, fgColor, i) else: logger.error('行号:%s ' % (m - 1)) logger.error('没有获取到结果:%s'
转载请注明原文地址: https://win8.8miu.com/read-2738.html

最新回复(0)