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

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

今日写了一个对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

相关文章
|
20天前
|
JSON JavaScript 测试技术
Postman接口测试工具详解
Postman接口测试工具详解
27 1
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
探索自动化测试的前沿:AI与软件测试的融合
在数字化浪潮中,软件测试作为确保产品质量的关键步骤,正迎来一场革命。本文将深入探讨人工智能(AI)如何革新传统软件测试流程,通过具体案例分析,揭示AI技术在提高测试效率、减少人为错误以及预测潜在缺陷方面的潜力。我们将一窥AI在自动化测试中的应用现状,并展望其对未来软件质量保障的影响。
|
10天前
|
前端开发 数据管理 测试技术
前端自动化测试
前端自动化测试
|
13天前
|
JavaScript 前端开发 测试技术
自动化测试在API测试中的深度应用与实践
【7月更文挑战第8天】自动化测试在API测试中的应用极大地提高了测试效率和质量,为软件的快速迭代和持续交付提供了有力保障。通过合理选择测试工具、制定清晰的测试计划并遵循最佳实践,我们可以充分发挥自动化测试的优势,为软件产品的稳定性和可靠性保驾护航。
|
9天前
|
XML JSON 测试技术
Postman接口测试工具详解
📚 Postman全攻略:API测试神器!📚 发送HTTP请求,管理集合,写测试脚本,集成CI/CD。从安装配置到环境变量、断言、数据驱动测试,一步步教你如何高效测试RESTful API。实战案例包含GET、POST、PUT、DELETE请求。用Newman在命令行跑集合,自动化测试不发愁!👉 [洛秋小站](https://www.luoqiu.site/) 学更多!🚀
21 1
|
16天前
|
数据采集 测试技术
常见测试测量接口的比较:PXI、PXIe、PCI、VXI、GPIB、USB
常见测试测量接口的比较:PXI、PXIe、PCI、VXI、GPIB、USB
17 2
|
19天前
|
测试技术 API 持续交付
【Python自动化测试】文章探讨了Python在测试领域的关键作用,分为三部分
【7月更文挑战第2天】【Python自动化测试】文章探讨了Python在测试领域的关键作用,分为三部分:1) 自动化测试的重要性与Python的易用性、库支持、跨平台和社区优势;2) Unittest作为标准测试框架的基础用法,及Pytest的灵活性与强大功能;3) 实践中包括Selenium的Web UI测试、Requests的API测试,强调测试隔离、持续集成等最佳实践。Python助力高效稳定的软件测试。
26 2
|
5天前
|
监控 网络协议 安全
由于楼层自动化系统的复杂性和多样性,很难给出一个通用的Python代码示例,因为每个系统可能使用不同的硬件、通信协议和软件接口。
由于楼层自动化系统的复杂性和多样性,很难给出一个通用的Python代码示例,因为每个系统可能使用不同的硬件、通信协议和软件接口。
|
10天前
|
JSON 测试技术 数据格式
postman接口测试工具详解
postman接口测试工具详解
|
16天前
|
敏捷开发 监控 Devops
探索自动化测试的利剑:持续集成与持续部署(CI/CD)在软件测试中的应用
在软件开发的快速迭代中,传统的手动测试方法已经无法满足效率和质量的双重需求。本文将深入探讨如何通过实施持续集成(CI)和持续部署(CD)来优化自动化测试流程,提升软件交付速度及质量保证水平。我们将分析CI/CD在测试中的关键作用,并通过实际案例数据展示其对提高测试覆盖率、缩短反馈周期和增强开发协作的积极影响。
32 0

热门文章

最新文章