接口自动化多层嵌套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利用标准库如何获取本地IP示例详解
Nov 01 Python
django的登录注册系统的示例代码
May 14 Python
Flask入门之上传文件到服务器的方法示例
Jul 18 Python
python使用xlrd和xlwt读写Excel文件的实例代码
Sep 05 Python
python实现多层感知器
Jan 18 Python
python学生管理系统开发
Jan 30 Python
Python常见数据类型转换操作示例
May 08 Python
如何使用python爬虫爬取要登陆的网站
Jul 12 Python
基于python实现学生信息管理系统
Nov 22 Python
Pytorch evaluation每次运行结果不同的解决
Jan 02 Python
详解如何在PyCharm控制台中输出彩色文字和背景
Aug 17 Python
Python headers请求头如何实现快速添加
Nov 03 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
新的一年,新的期待:DC在2020年的四部动画电影
2020/01/01 欧美动漫
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
2019/05/29 PHP
使用PHP开发留言板功能
2019/11/19 PHP
js类的静态属性和实例属性的理解
2009/10/01 Javascript
js实现的标题栏新消息闪烁提示效果
2014/06/06 Javascript
详解JavaScript的Polymer框架中的通知交互
2015/07/29 Javascript
JQUERY的AJAX请求缓存里的数据问题处理
2016/02/23 Javascript
jquery自定义插件开发之window的实现过程
2016/05/06 Javascript
Form表单上传文件(type="file")的使用
2017/08/03 Javascript
vue-router3.0版本中 router.push 不能刷新页面的问题
2018/05/10 Javascript
详解搭建es6+devServer简单开发环境
2018/09/25 Javascript
Vue中的Props(不可变状态)
2018/09/29 Javascript
AngularJS $http post 传递参数数据的方法
2018/10/09 Javascript
vue中使用cookies和crypto-js实现记住密码和加密的方法
2018/10/18 Javascript
js中的深浅拷贝问题简析
2019/05/10 Javascript
微信小程序文字显示换行问题
2019/07/28 Javascript
IE11下CKEditor在Bootstrap Modal中下拉问题的解决
2019/09/25 Javascript
Vue实现移动端拖拽交换位置
2020/07/29 Javascript
详解Python中的__init__和__new__
2014/03/12 Python
Python实现检测服务器是否可以ping通的2种方法
2015/01/01 Python
Python 操作MySQL详解及实例
2017/04/30 Python
python中使用正则表达式的连接符示例代码
2017/10/10 Python
python调用Delphi写的Dll代码示例
2017/12/05 Python
Python实现图片转字符画的代码实例
2019/02/22 Python
使用python的pyplot绘制函数实例
2020/02/13 Python
如何基于线程池提升request模块效率
2020/04/18 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
2020/06/29 Python
python基于selenium爬取斗鱼弹幕
2021/02/20 Python
css3 border-image使用说明
2010/06/23 HTML / CSS
英国豪华真皮和布艺沙发销售网站:Darlings of Chelsea
2018/01/05 全球购物
阿根廷在线宠物商店:Puppis
2018/03/23 全球购物
英国领先的在线高尔夫商店:Scottsdale Golf
2019/08/26 全球购物
英国豪华装饰照明品牌的在线零售商:Inspyer Lighting
2019/12/10 全球购物
质量承诺书格式
2014/05/20 职场文书
2014乡镇干部对照检查材料思想汇报
2014/09/26 职场文书