在使用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. activity状态保存的bundl对象存放位置的思考

    我们知道,当activity被异常终止时,可以把一些信息保存到bundle对象中,在下次启动时恢复. 那么,这个bundle对象是保存在哪里的呢? 这种状态保存的方法针对的是activity而不是进程 ...

  2. ViewPager+Fragment基本使用方法(附源码)

    ViewPager+Fragment可以做出多页面滑动效果,让我们的应用程序界面操作起来更加灵活 对于ViewPager和Fragment组件还不熟悉的朋友,可以先看看相关的资料. 首先在activi ...

  3. docker卸载与安装

    sudo apt remove docker.io 报错如下: Reading package lists... Done Building dependency tree Reading state ...

  4. 使用java以及jdbc不使用第三方库执行sql文件脚本

    使用java以及jdbc不使用第三方库执行sql文件脚本 2017年02月15日 15:51:45 阅读数:660 使用java执行sql脚本的方法 解析sql脚本,删除不必要的注释和空行 将语句按分 ...

  5. 多线程学习-基础( 十)一个synchronized(){/*代码块*/}简单案例分析

    一.提出疑惑 上一篇文章中,分析了synchronized关键字的用法.但是好像遗漏了一种情况. 那就是: synchronized(obj){/*同步块代码*/} 一般有以下几种情况: (1)syn ...

  6. 模仿添加QQ好友桌面快捷方式

    /** * * @param context * @param tname 桌面快捷方式的名字 * @param icon 好友头像 */ public static void addShortCut ...

  7. margin,CSS边距重叠

    CSS外边距叠加就是margin-collapse,边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距,水平边 距永远不会重合. 重叠结果计算规则: 两个相邻的外边距都是正数时,折叠结果是它 ...

  8. VS报错之混合模式程序集是针对“v1.1.4322”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。

    看到一个kinect大牛编写的一个水果忍者的体感游戏版本,让我为自己一直以来只用现有的网页游戏来模拟kinect体感游戏控制感到惭愧,没办法,我还是菜鸟.学习一段后自己模仿星际大战这个游戏,自己写了一 ...

  9. iOS应用推荐

    RSS阅读器 Inoreader ***客户端 SuperWingy OpenWingy(已下架) 书签 Pocket 语音备忘录 Voice-Memos 编程语言学习 SoloLearn 社交 Tw ...

  10. 21天网站建设实录 (雨辰资讯) 高清pdf扫描版​

    <21天网站建设实录>以网页设计师的项目开发为背景,以“阿里里在线购物”商业网站的开发过程为流程,通过21天的任务期限,以一天一项任务.一天掌握一项技能项目实战的学习模式,全面讲解了一个网 ...