接口自动化测试,返回值深层完全断言大法

简介: 接口自动化测试,返回值深层完全断言大法

今日写了一个对http接口测试中的返回值,json格式 进行深层断言的方法。话不多说,直接上码,觉得好的可以留言支持我一下。在此感谢selenium_python群的第一个高手大师兄蜗牛哥 和 众多高手提供的初始版本。

def compare_json_data(A, B, xpath='.'):
    if isinstance(A, list) and isinstance(B, list):
        for i in range(len(A)):
            try:
                compare_json_data(A[i], B[i], xpath + '[%s]'%str(i))
            except:
                print '▇▇▇▇▇ A中的%s[%s]未在B中找到'%(xpath,i)
    if isinstance(A, dict) and isinstance(B, dict):
        for i in A:
            try:
                B[i]
            except:
                print '▇▇▇▇▇ A中的%s/%s 未在B中找到'%(xpath,i)
                continue
            if not (isinstance(A.get(i), (list, dict)) or isinstance(B.get(i), (list, dict))):
                if type(A.get(i)) != type(B.get(i)):
                    print '▇▇▇▇▇ 类型不同参数在[A]中的绝对路径:  %s/%s  ►►► A is %s, B is %s '%(xpath,i,type(A.get(i)),type(B.get(i)))
                elif A.get(i) != B.get(i):
                    print '▇▇▇▇▇ 仅内容不同参数在[A]中的绝对路径:  %s/%s  ►►► A is %s, B is %s ' % (xpath, i, A.get(i), B.get(i))
                continue
            compare_json_data(A.get(i), B.get(i), xpath + '/' + str(i))
        return
    if type(A) != type(B):
        print '▇▇▇▇▇ 类型不同参数在[A]中的绝对路径:  %s  ►►► A is %s, B is %s ' % (xpath, type(A), type(B))
    elif A != B and type(A) is not list:
        print '▇▇▇▇▇ 仅内容不同参数在[A]中的绝对路径:  %s  ►►► A is %s, B is %s ' % (xpath, A, B)
#俩个字典,传进去,包含了多种情况。
A= {'b':[1,2,5,8],'c':3,'d':2,'f':[1,2,3],'g':[1,2,3,[2,'2',2]],'h':'5','i':None,'j':False,'k':{'l':{'m':[{'n':12}]}}}
B= {'b':[1,2,'3'],'c':2,'e':'4','f':[1,2,3,5],'g':[1,2,3,[1,2]],'h':[1,2],'i':None,'j':True,'k':{'l':{'m':[{'n':2}]}}}
compare_json_data(A,B)
这版本目前只是把所有的不一样的地方都print出来,具体要做成什么样来融合进各位自己的框架中,就看着改,比如发现某参数类型不一样,找不到,就不用继续运行来,直接断言失败或人工触发异常。断言失败,需要传回俩个值,通过self.assert(之类的断言方法) 来判断最终用例执行情况。引发异常就把print改成assert 。
下面上 执行结果。
测试数据:
A={‘b’:[1,2,5,8],’c’:3,’d’:2,’f’:[1,2,3],’g’:[1,2,3,[2,’2’,2]],’h’:’5’,’i’:None,’j’:False,’k’:{‘l’:{‘m’:[{‘n’:12}]}}}
B={‘b’:[1,2,’3’],’c’:2,’e’:’4’,’f’:[1,2,3,5],’g’:[1,2,3,[1,2]],’h’:[1,2],’i’:None,’j’:True,’k’:{‘l’:{‘m’:[{‘n’:2}]}}}

微信图片_20220609151936.jpg

相关文章
|
3月前
|
测试技术
接口自动化不是救命稻草
接口自动化不是救命稻草
14 1
|
3月前
|
JSON 搜索推荐 网络协议
玩转curl指令—测试简单的HTTP接口
玩转curl指令—测试简单的HTTP接口
62 0
|
3月前
|
资源调度 测试技术 Linux
一款接口自动化神器—开源接口测试平台Lim(Less is More)
一款接口自动化神器—开源接口测试平台Lim(Less is More)
133 2
|
3月前
|
安全 测试技术 持续交付
接口自动化测试的基本流程
接口自动化测试的基本流程
|
3月前
|
监控 安全 测试技术
《Eolink 征文活动- -RESTful接口全解测试-全方位了解Eolink-三神技超亮点》
《Eolink 征文活动- -RESTful接口全解测试-全方位了解Eolink-三神技超亮点》
66 0
|
8天前
|
测试技术 API 网络架构
Python的api自动化测试 编写测试用例
【4月更文挑战第18天】使用Python进行API自动化测试,可以结合`requests`库发送HTTP请求和`unittest`(或`pytest`)编写测试用例。以下示例: 1. 安装必要库:`pip install requests unittest` 2. 创建`test_api.py`,导入库,定义基础URL。 3. 创建继承自`unittest.TestCase`的测试类,包含`setUp`和`tearDown`方法。 4. 编写测试用例,如`test_get_users`,检查响应状态码和内容。 5. 运行测试:`python -m unittest test_api.py`
13 2
|
2月前
|
数据采集 数据处理 开发工具
argparse是你的好帮手:快速编写自动化脚本、测试脚本、数据处理脚本
argparse是你的好帮手:快速编写自动化脚本、测试脚本、数据处理脚本
|
3月前
|
开发框架 JSON .NET
初学者不会写接口怎么办?微软Visual Studio 2022无脑式API接口创建——Swagger一键导入APIKit快速测试
初学者不会写接口怎么办?微软Visual Studio 2022无脑式API接口创建——Swagger一键导入APIKit快速测试
82 0
|
3月前
|
JSON 前端开发 测试技术
接口管理测试繁琐复杂?何不试试Eolink
接口管理测试繁琐复杂?何不试试Eolink
26 0
|
3月前
|
存储 测试技术 Python
带有参数依赖的接口该如何测试?
带有参数依赖的接口该如何测试?