关于接口自动化的实施步骤

接口用例的编写:
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('\n'.join(result_all))
        assert result_all == []
    else:
        assert result_all == []

 

posted on 2021-03-11 10:43  老吃鸡  阅读(630)  评论(0编辑  收藏  举报

导航