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

接口自动化思路看这里
码云地址: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'%cell_value)

4、邮件发送中心
主要提供邮件发送服务。
5、测试报告中心

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

$团长$

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值