接口自动化多层嵌套json数据处理代码实例


Posted in Python onNovember 20, 2020

最近在做接口自动化测试,响应的内容大多数是多层嵌套的json数据,在对响应数据进行校验的时候,可以通过(key1.key2.key3)形式获取嵌套字典值的方法获取响应值,再和预期值比较

keys_list = keys.split('.')
  #以“.”为间隔,将字符串分裂为多个字符串,其实字符串为字典的键,保存在列表keys_list里
  if isinstance(date,dict):
    #如果传入的数据为字典
    dictionary = dict(date)
    #初始化字典
    for i in keys_list:
      #按照keys_list顺序循环键值
      try:
        if dictionary.get(i) != None:
          dict_values = dictionary.get(i)
        #如果键对应的值不为空,返回对应的值
        elif dictionary.get(i) == None:
          dict_values = dictionary.get(int(i))
        #如果键对应的值为空,将字符串型的键转换为整数型,返回对应的值
      except:
        return default
          #如果字符串型的键转换整数型错误,返回None
      dictionary = dict_values
    return dictionary
  else: 
    #如果传入的数据为非字典
    try:
      dictionary = dict(eval(date))
      #如果传入的字符串数据格式为字典格式,转字典类型,不然返回None
      if isinstance(dictionary,dict):
        for i in keys_list:
          #按照keys_list顺序循环键值
          try:
            if dictionary.get(i) != None:
              dict_values = dictionary.get(i)
            #如果键对应的值不为空,返回对应的值
            elif dictionary.get(i) == None:
              dict_values = dictionary.get(int(i))
            #如果键对应的值为空,将字符串型的键转换为整数型,返回对应的值
          except:
            return default
              #如果字符串型的键转换整数型错误,返回None
          dictionary = dict_values
        return dictionary
    except:
      return default

运行结果:

一:字典类型数据。

接口自动化多层嵌套json数据处理代码实例

二:字典类型数据,包含的键为数字。

接口自动化多层嵌套json数据处理代码实例

三:json类型的字符串。

接口自动化多层嵌套json数据处理代码实例

有个朋友分享过这段代码,大家可以试试。

class obj(object):
  def __init__(self, d):
    for a, b in d.items():
      if isinstance(b, (list, tuple)):
        setattr(self, a, [obj(x) if isinstance(x, dict) else x for x in b])
      else:
        setattr(self, a, obj(b) if isinstance(b, dict) else b)

d = {'a':1, 'b':{'c':2}, 'd':[{'e':1}]}

res = obj(d)
print res.a
print res.b.c
print res.d[0].e

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现爬虫下载美女图片
Jul 14 Python
Python3控制路由器——使用requests重启极路由.py
May 11 Python
Python爬虫爬取一个网页上的图片地址实例代码
Jan 16 Python
python 文件转成16进制数组的实例
Jul 09 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
Jul 26 Python
pip安装py_zipkin时提示的SSL问题对应
Dec 29 Python
python的一些加密方法及python 加密模块
Jul 11 Python
python线程中的同步问题及解决方法
Aug 29 Python
基于python的列表list和集合set操作
Nov 24 Python
Python环境下安装PyGame和PyOpenGL的方法
Mar 25 Python
python实时监控logstash日志代码
Apr 27 Python
Keras实现支持masking的Flatten层代码
Jun 16 Python
如何设置PyCharm中的Python代码模版(推荐)
Nov 20 #Python
Django vue前后端分离整合过程解析
Nov 20 #Python
基于Python的图像阈值化分割(迭代法)
Nov 20 #Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
Nov 20 #Python
Pyqt助手安装PyQt5帮助文档过程图解
Nov 20 #Python
python IP地址转整数
Nov 20 #Python
Python django框架 web端视频加密的实例详解
Nov 20 #Python
You might like
ThinkPHP中ajax使用实例教程
2014/08/22 PHP
PHP与Web页面的交互示例详解二
2020/08/04 PHP
JavaScript 选中文字并响应获取的实现代码
2011/08/28 Javascript
JavaScript将相对地址转换为绝对地址示例代码
2013/07/19 Javascript
js时间比较示例分享(日期比较)
2014/03/05 Javascript
javascript获取浏览器类型和版本的方法(js获取浏览器版本)
2014/03/13 Javascript
Javascript实现获取窗口的大小和位置代码分享
2014/12/04 Javascript
60个很实用的jQuery代码开发技巧收集
2014/12/15 Javascript
基于javascript制作微信聊天面板
2020/08/09 Javascript
解决wx.onMenuShareTimeline出现的问题
2016/08/16 Javascript
angular-ui-sortable实现可拖拽排序列表
2016/12/28 Javascript
JSON字符串和JSON对象相互转化实例详解
2017/01/05 Javascript
jquery设置css样式的多种方法(总结)
2017/02/21 Javascript
如何在AngularJs中调用第三方插件库
2017/05/21 Javascript
详解angularjs的数组传参方式的简单实现
2017/07/28 Javascript
详解JavaScript的BUG和错误
2018/05/07 Javascript
vue项目打包部署到服务器的方法示例
2018/08/27 Javascript
JQuery中queue方法用法示例
2019/01/31 jQuery
JS前端知识点总结之页面加载事件,数组操作,DOM节点操作,循环和分支
2019/07/04 Javascript
[07:49]2014DOTA2国际邀请赛 Newbee夺冠后采访xiao8坦言奖金会上交
2014/07/23 DOTA
在Django框架中伪造捕捉到的URLconf值的方法
2015/07/18 Python
详解用Python处理HTML转义字符的5种方式
2017/12/27 Python
python实现播放音频和录音功能示例代码
2018/12/30 Python
使用python 打开文件并做匹配处理的实例
2019/01/02 Python
Python使用numpy模块实现矩阵和列表的连接操作方法
2019/06/26 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
2019/08/05 Python
python用线性回归预测股票价格的实现代码
2019/09/04 Python
python3中rank函数的用法
2019/11/27 Python
Python Tornado核心及相关原理详解
2020/06/24 Python
python操作ini类型配置文件的实例教程
2020/10/30 Python
爱尔兰领先的在线体育用品零售商:theGAAstore
2018/04/16 全球购物
大三学生入党思想汇报
2014/01/02 职场文书
《藤野先生》教学反思
2014/02/19 职场文书
退学证明范本3篇
2014/10/29 职场文书
出纳试用期自我评价
2015/03/10 职场文书
创新创业项目计划书该怎样写?
2019/08/13 职场文书