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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

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类型的字符串。

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

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

​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/216860.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Enabling Application Engine Tracing 启用应用程序引擎跟踪

Enabling Application Engine Tracing 启用应用程序引擎跟踪 By default, all Application Engine traces are turned off. To see a trace or a combination of traces, set trace options before you run a program. 默认情况下,所有应用程序引擎跟踪都处于关闭…

自动化测试基础知识:什么是自动化测试?需要学习哪些知识与工具!

1、自动化测试概念 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常, 在设计了测试用例并通过评审之后,由测 试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。简言之,自动化测试…

12.12 作业

1, 源代码: #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);speerornew QTextToSpeech(this);idstartTimer(1000);//每隔一秒&#xf…

LLM之RAG理论(一)| CoN:腾讯提出笔记链(CHAIN-OF-NOTE)来提高检索增强模型(RAG)的透明度

论文地址:https://arxiv.org/pdf/2311.09210.pdf 检索增强语言模型(RALM)已成为自然语言处理中一种强大的新范式。通过将大型预训练语言模型与外部知识检索相结合,RALM可以减少事实错误和幻觉,同时注入最新知识。然而&…

【无标题】重生奇迹mu召唤萤石魂石最强搭配

荧光宝石搭配: 1、每个装备上都会有不同的孔洞,所镶嵌的3个宝石都是不相同的。 2、宝石也分为很多的种类。选择比较困难。 推荐搭配: 如果有宝石等级比较高,那么就选择高的来搭配。最好的搭配是就是同样的属性搭配一套&#x…

优雅玩转实验室服务器(一)登录服务器

这篇文章更加偏向于使用python程序进行研究的朋友们 原料 Windows主机实验室Linux服务器(可以访问互联网)一点点耐心 step.0 windows terminal is all you need 别跟我说什么putty,什么winscp,我就是单推Win11自带的软件——win…

005、Softmax损失

之——softmax与交叉熵 杂谈 我们常用到softmax函数与交叉熵的结合作为损失函数以监督学习,这里做一个小小的总结。 正文 1.softmax的基本改进 所谓softmax就是在对接全连接层输出时候把输出概率归一化,最基础的就是这样: 效果就是这样&…

【Android嵌入式开发及实训课程实验】【项目1】 图形界面——计算器项目

【项目1】 图形界面——计算器项目 需求分析界面设计实施1、创建项目2、 界面实现实现代码1.activity_main.xml2.Java代码 - MainActivity.java 3、运行测试 注意点结束~ 需求分析 开发一个简单的计算器项目,该程序只能进行加减乘除运算。要求界面美观,…

【异常解决】SpringBoot + Maven 在 idea 下启动报错 Unable to start embedded Tomcat(已解决)

Unable to start embedded Tomcat(已解决) 一、背景介绍二、原因分析2.1 网络上整理2.2 其他原因 三、解决方案 一、背景介绍 spring boot(v2.5.14) maven idea 启动项目 之前项目一直启动的好好的,都能正常运行。重启的时候突然就不能启…

汽车服务行业分析:预计2028年将达到38亿元

在推进加快检验机构建设同时,综合评估检验机构数量、分布和检测能力,探索试点汽车 4S 店开展检验,提供维修、保养、车检一体化服务。汽车服务主要是指围绕汽车展开的一系列服务活动,包括维修、美容、金融等,除具有一般…

Wireshark中的http协议包分析

Wireshark可以跟踪网络协议的通讯过程,本节通过http协议,在了解Wireshark使用的基础上,重温http协议的通讯过程。 TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于 字节流…

【C++】类与对象(下)

本文目录 1. 再谈构造函数1.1 构造函数体赋值1.2 初始化列表1.3 explicit关键字 2. static成员2.1 概念2.2 特性 3. 友元3.1 友元函数3.2 友元类 4. 内部类5. 匿名对象6. 拷贝对象时的一些编译器优化7. 再次理解类和对象 1. 再谈构造函数 1.1 构造函数体赋值 在创建对象时&am…

山西电力市场日前价格预测【2023-12-09】

1.日前价格预测 预测说明: 如上图所示,预测明日(2023-12-09)山西电力市场全天平均日前电价为366.40元/MWh。其中,最高日前电价为629.26元/MWh,预计出现在08:00。最低日前电价为216.58元/MWh,预…

Tomcat部署及优化

1. Tomcat 简介 Tomcat 是 Java 语言开发的,Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,是 Apache 软件基金会的 Jakarta 项目中的一个核心项目,由 Apache、Sun 和其他一些公司及个人共同开发而成。 Tomcat 属于轻量级应用服务器…

【数据结构】堆的模拟实现

前言:前面我们学习了顺序表、单链表、栈、队列,今天我们就开始新的学习吧,今天我们将进入堆的学习!(最近博主处于低谷期)一起加油吧各位。 💖 博主CSDN主页:卫卫卫的个人主页 💞 👉 专栏分类:数据结构 &…

【代码随想录】刷题笔记Day34

前言 考过概率论,发过一场烧,兜兜转转又一月,轻舟已撞万重山,赶紧刷题 贪心算法理论基础 贪心的本质:局部最优→全局最优无套路,常识性推导 举反例 455. 分发饼干 - 力扣(LeetCode&#xf…

小黑独自去逛城墙和夫子庙,夜泊秦淮被雨淋,南京马拉松323刷新自己最好成绩,开始参加部里公务员培训的leetcode之旅:12. 整数转罗马数字

小黑代码 class Solution:def intToRoman(self, num: int) -> str:# 定义字符数组和数字数组chars [M, CM, D, CD, C, XC, L, XL, X, IX, V, IV,I]nums [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]total numres # 遍历每个符号for i in range(13):# 依次进…

自炫锁2-b

1. 自旋锁 自旋锁也是为实现保护共享资源而提出一种锁机制。其实,自旋锁与互斥锁比较类似,它们都是为了解决对某项资源的互斥使用。 无论是互斥锁,还是自旋锁,在任何时刻,最多只能有一个保持者,也就说&…

进程(IPC)_D3(2023-12-12)

XMind(分图版)

三层交换原理

三层交换机出现的背景 早期的网络中一般使用二层交换机来搭建局域网,而不同局域网之间的网络互通由路由器来完成。那时的网络流量,局域网内部的流量占了绝大部分,而网络间的通信访问量比较少,使用少量路由器已经足够应付了。 但…