zoukankan      html  css  js  c++  java
  • 关于接口自动化的实施步骤

    接口用例的编写:
    1.单个接口的正常用例(各个参数正常各类型传值)
    2.单个接口的异常用例(各个常见的错误码报错)
    3.相互关联接口的组合调用(走业务流程)
    4.简单验证code,msg
    5.对结果进行校验,可以校验如下内容:
    (1)字段有/无数据的校验
    (2)返回数据的条数
    (3)数据字段的类型
    (4)数组长度,字典的值


    ---------------------------------------------------
    4个阶段:
    1.基本正常用例+先完成简单的验证码验证(覆盖所有接口)
    2.对异常用例进行完善
    3.接口之间相互调用(跑业务流程)
    4.接口进行数据校验

    ------------------------------------------------------

    接口编写原则:
    1.各个用例保证独立性,不相互依赖
    2.用例可以重复的跑

    校验两个json是否一致:

    def verify_data(resdata,expdata,ignorkey=[]):
        logging.info("-" * 100)
        logging.info("响应数据:{0}".format(resdata))
        logging.info("期望数据:{0}".format(expdata))
        logging.info("-" * 100)
        result_all = []
        def compare(resdata,expdata,key):
                # 判断他们的类型是否相同
            if type(resdata) == type(expdata):
                if isinstance(resdata,dict):
                    # 判断是key否是一致
                    resdiff = set(resdata.keys()).difference(set(expdata.keys()))
                    if resdiff:
                        result_all.append(f"节点:{key} 缺少key-->{resdiff}")        
                    for k in resdata.keys():
                        key = k
                        if k not in resdiff and k not in ignorkey:
                            compare(resdata.get(key),expdata.get(key),key)
                elif isinstance(resdata,list):
                    # 判断长度
                    if len(resdata) == len(expdata):
                        for index,values in enumerate(zip(resdata,expdata)):
                            compare(values[0],values[1],key+str(index))
                    else:
                        result_all.append(f"节点:{key} 长度不一致-->res: {resdata}, exp: {expdata}")
                else:
                    if resdata == expdata:
                        pass
                    # 期望值填“*” 时忽略
                    elif expdata == "*":
                        pass
                    elif resdata != expdata:
                        result_all.append(f"节点:{key} 值不一致-->res: {resdata}, exp: {expdata}")
            else:
                if expdata != "*":
                    result_all.append(f"节点:{key} 类型不一致-->res: {type(resdata)}, exp: {type(expdata)}")
    
        compare(resdata,expdata,key="root")
        if result_all:
            logging.error('
    '.join(result_all))
            assert result_all == []
        else:
            assert result_all == []
    鸡肉是我的最爱!
  • 相关阅读:
    angularjs中的jqlite的认识理解及操作使用
    轻谈Normalize.css
    oppo R9 WLAN使用代理图解
    前端小炒的win7使用笔记(收藏篇)
    git操作方便,简单使用的客户端sourcetree 安装配置所遇问题总结
    关于js中对事件绑定与普通事件的理解
    IT最新最火的网络词汇*2*(文章来源电商)
    Git笔记之初识vi编辑器
    番茄钟工作法--我们天生爱分享
    探讨"点"语法的奥秘
  • 原文地址:https://www.cnblogs.com/laochiji/p/14516404.html
Copyright © 2011-2022 走看看