接口自动化多层嵌套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基础教程之基本内置数据类型介绍
Feb 20 Python
Python实现检测服务器是否可以ping通的2种方法
Jan 01 Python
python统计日志ip访问数的方法
Jul 06 Python
python+requests+unittest API接口测试实例(详解)
Jun 10 Python
关于Python数据结构中字典的心得
Dec 04 Python
django中静态文件配置static的方法
May 20 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
Jun 27 Python
python matplotlib库绘制散点图例题解析
Aug 10 Python
python 爬取学信网登录页面的例子
Aug 13 Python
python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析
Sep 05 Python
用python解压分析jar包实例
Jan 16 Python
python tkinter之顶层菜单、弹出菜单实例
Mar 04 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
一个简易需要注册的留言版程序
2006/10/09 PHP
php array_intersect()函数使用代码
2009/01/14 PHP
php中比较简单的导入phpmyadmin生成的sql文件的方法
2011/06/28 PHP
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
2014/07/04 PHP
php微信公众平台配置接口开发程序
2016/09/22 PHP
jquery ui dialog实现弹窗特效的思路及代码
2013/08/03 Javascript
实现图片预加载的三大方法及优缺点分析
2014/11/19 Javascript
PHP中使用微秒计算脚本执行时间例子
2014/11/19 Javascript
jquery插件hiAlert实现网页对话框美化
2015/05/03 Javascript
js下将金额数字每三位一逗号分隔
2016/02/19 Javascript
Angular2平滑升级到Angular4的步骤详解
2017/03/29 Javascript
JavaScript实现设置默认日期范围为最近40天的方法分析
2017/07/12 Javascript
深入理解ES7的async/await的用法
2017/09/09 Javascript
Node.js Buffer模块功能及常用方法实例分析
2019/01/05 Javascript
vue使用showdown并实现代码区域高亮的示例代码
2019/10/17 Javascript
node后端服务保活的实现
2019/11/10 Javascript
JavaScript观察者模式原理与用法实例详解
2020/03/10 Javascript
python实现图片压缩代码实例
2019/08/12 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
2019/12/11 Python
python读取ini配置文件过程示范
2019/12/23 Python
PYQT5 vscode联合操作qtdesigner的方法
2020/03/24 Python
详解python如何引用包package
2020/06/07 Python
AmazeUI 点击元素显示全屏的实现
2020/08/25 HTML / CSS
main 函数执行以前,还会执行什么代码
2013/04/17 面试题
口腔工艺技术专业毕业生自荐信
2013/09/27 职场文书
合同专员岗位职责
2013/12/18 职场文书
主持人演讲稿范文
2013/12/28 职场文书
开工庆典邀请函范文
2014/01/16 职场文书
给老师的检讨书
2014/02/11 职场文书
教师通用专业自荐书范文
2014/02/11 职场文书
电子商务系毕业生自荐信
2014/05/29 职场文书
中学生检讨书1000字
2014/10/28 职场文书
幼儿学前班评语
2014/12/29 职场文书
少先大队干部竞选稿
2015/11/20 职场文书
节水宣传标语口号
2015/12/26 职场文书
悬疑名作《朋友游戏》动画无字ED宣传片 新角色公开
2022/04/13 日漫