在使用python3 request做接口测试的时候,想获取response的json中的某个值做断言时,发现request好像没有相关的方法

所以只好自己找写一个了。在我看来,json就是一个字典,只不过是字典里面嵌套着字典、列表,列表里面有嵌套着字典。

所以我们跟根据上面的思路来解决这个问题。首先josn就是一个字典,所以第一个判断就是它是不是字典,是的话就用dict.items()

输入key和values,然后再判断values类型,如果是list,那就把list每个值取出来,再做判断。如此自我调用,实现取值。

class getvales():
def getdict(dict1, values):
global values1,va #定义全局变量
values1 = values
for k, v in dict1.items(): #把字典的key和values变成数组
if k == values:
va = v elif list is type(v): #判断类型是不是list
getvales.getlsit(v) elif type(v) is dict:
getvales.getdict(v, values1) else:
print(str(k) + ":----" + str(v)) return va def getlsit(list1):
for i in list1:
if list is type(i):
getvales.getlsit(i) elif dict is type(i):
getvales.getdict(i, values1)
else:
print(list1) if __name__ == "__main__":
dict1 = {'result': {'content': [
{'areaCode': '4XXXXXXX00', 'branchFee': 100.0, 'checkStatus': 'check_no', 'completionRate48': False,
'consignee': '刘先生', 'consigneeTel': '1XXXXXXXX64', 'countdown': 0, 'createDate': '2017-12-01 14:52:52',
'goods': '布皮艺沙发', 'id': 'WAQ2Wm2AjlEdwlRU', 'installFee': 40.0, 'items': 1, 'jingdong': False,
'jingdongConfirm': False, 'matchType': '人工匹配', 'matchingFailureReason': '此单xXXXXXX后再做安排',
'msfCheck': '未核销', 'orderSourceCode': '', 'orgName': '一智XXXXXXXX业部', 'packingNumber': 2, 'payArrive': 0.0,
'payCash': 0.0, 'payMonth': 120.0, 'payReturn': 0.0, 'payType': '月结', 'pickUpAddress': 'XXXXXXX库',
'pickUpTel': '13532120095', 'pickUpTime': '', 'readOnly': False, 'receiveAddress': '广东省广州市增城区XXXX',
'remark': '', 'replaceCharge': 0.0, 'serviceType': '配送到家并安装', 'shipper': 'XXXXX有限公司', 'taskStatus': '待分配',
'taskStatusShow': '待分配', 'taskType': '调度任务', 'tmail': False, 'trunkEndDate': '2017-12-01 15:27:06',
'volumes': 1.3, 'waybillId': '1zt18824149564', 'weights': 0.0, 'worker': 'XXX', 'workerTel': '13XXXXXXXX37'}],
'first': True, 'last': True, 'number': 0, 'numberOfElements': 1, 'size': 10, 'totalElements': 1,
'totalPages': 1}}
abc = getvales.getdict(dict1, "waybillId")
print(abc)

python3 提取http请求response中的某个值的更多相关文章

  1. WebAPi获取请求头中对应键值

    /// <summary> /// 依据键获取请求头中值数据 /// </summary> /// <param name="request"> ...

  2. 【Jmeter】jmeter提取response中的返回值,并保存到本地文件--BeanShell后置处理器

    有个需求,需要在压测环境中,创建几十万的账号数据,然后再根据创建结果,查询到某些账号信息. 按照之前我的做法,直接Python调用API,然后再数据库查询: 但是近期所有开发人员的数据库访问权限被限制 ...

  3. 获取请求 header 中指定字段的值

    private function getHeader($name) {//获取请求头中$name的值 $name = 'HTTP_' . $name; foreach ($_SERVER as $ke ...

  4. Jmeter----A接口response中body的某一个参数传递给B接口request的body中使用(参数的传递)

    示例:将接口"获取待办列表"response中body的id值传递给接口"删除待办"request的body中使用: 操作步骤如下: 第一步:给"获取 ...

  5. Jmeter 正则表达式提取Response Headers,Response Body里的值

    实践过程中遇到需要提取Response Headers,Response Body里的值 一.获取Response Body的值,这里采用json提取器形式 1.Response Body返回值,如下 ...

  6. request 和response 中的setCharacterEncoding区别

    response和request的setCharacterEncoding 一.request.setCharacterEncoding():是设置从request中取得的值或从数据库中取出的值. 指 ...

  7. HTTP请求头中各字段解释

    Accept : 浏览器(或者其他基于HTTP的客户端程序)可以接收的内容类型(Content-types),例如 Accept: text/plain Accept-Charset:浏览器能识别的字 ...

  8. shiro + jwt 实现 请求头中的 rememberMe 时间限制功能

    前言: 上一篇提出, 通过修改 rememberMe 的编码来实现 rememberMe的功能的设想, 事后我去尝试实现了一番, 发现太麻烦, 还是不要那么做吧. 程序还是要越简单越好. 那功能总是要 ...

  9. shiro 获取请求头中的 rememberMe

    前言: 上一篇提到了, 将 sessionId 放到请求头中去, 那rememberMe是否也可以放到请求头中去呢. 其实不管是sessionId还是rememberMe, shiro都会默认往coo ...

随机推荐

  1. Codeforces 1076E Vasya and a Tree(树状数组)或dfs

    题意:给你一颗以1为根节点的树,初始所有节点的权值为0,然后有m个操作,每个操作将点x的所有距离不超过d的节点权值+1,问经过m次操作后每个节点权值是多少? 思路:如果是一个序列,就可以直接用树状数组 ...

  2. ReentrantLock简单实现2

    ReentrantLock: /** * ReentrantLock测试逻辑类 */ public class MyService { private Lock lock = new Reentran ...

  3. 【转】PEAR安装、管理及使用

    PEAR安装   linux下只要你安装的是PHP 4.3.0以上的版本,默认安装都是支持PEAR的,除非你使用了”--WITHOUT-PEAR”选项,修改PHP.INI文件,在INCLUDE_PAT ...

  4. Jsp入门第二天

    1. JSP 指令: JSP指令(directive)是为JSP引擎而设计的. 它们并不直接产生任何可见输出, 而只是告诉引擎如何处理JSP页面中的其余部分. 2. 在目前的JSP 2.0中,定义了p ...

  5. jemalloc和内存管里

    netty的buffer引入了缓冲池.该缓冲池实现使用了jemalloc的思想.为了看懂这块代码学写了内容分配的知识.这里讲的内存分配是堆的内存分配,其他内容本文不会涉及. 内存分配是面向虚拟内存的而 ...

  6. tftp命令详解

    TFTP协议简介TFTP是用来下载远程文件的最简单网络协议,它其于UDP协议而实现.嵌入式linux的tftp开发环境包括两个方面: 一是linux服务器端的tftp-server支持,二是嵌入式目标 ...

  7. Hyper-V 中遇到错误 'vm' could not initialize

    不知道前面做了什么操作,但当我启动我的虚拟机时遇到了'vm' could not initialize的错误,如下图: 在几番尝试未果后,找到了如下解决方法: 以管理员模式启动cmd,执行命令 net ...

  8. 使用canvas压缩图片 并上传

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. linux 进程间通信机制(IPC机制)一总览

    1.作用:进程间通信机制(Inter Process Communication,IPC),这些IPC机制的存在使UNIX在进程通信领域手段相当丰富,也使得程序员在开发一个由多个进程协作的任务组成的系 ...

  10. mysql服务启动不了解决方法

    sudo lsof |grep deleted  找占用大的kill一下,  一般是tomcat log和zookeeper的out比较吃磁盘 du -h --max-depth=1 / 今天作死,想 ...