Requests接口测试(四)
Python序列化和反序列化
啥是序列化?啥是反序列化?这两个词听起来优点高大上的意思,其实呢不然,很简单的可以理解为:
- 序列化:将python的数据对象编码转换为json格式的字符串
- 反序列化:将json格式的字符串解码为python的数据对象
在python中提供了json库,我们将json导入,查看json库下面有哪些方法:
>>> import json
>>> print (json.__all__)
['dump', 'dumps', 'load', 'loads', 'JSONDecoder', 'JSONEncoder']
>>>
我们通过上面的例子可以知道json库里面常用的方法有
['dump', 'dumps', 'load', 'loads', 'JSONDecoder', 'JSONEncoder']
有的小伙伴可能不知道什么是json这里有个传送门去了解下哈:https://baike.baidu.com/item/JSON/2462549?fr=aladdin
ok,那么我们接下来进行序列化的代码演示,通过json进行序列化json格式字符串,请看下面的代码:
import json dict1={'name':"fighter",
'age':28,
'address':'shenzhen'} print ('未序列化前的数据类型为:',type(dict1))
print ('未序列化前的数据:',dict1)
str1 = json.dumps(dict1) #将python数据对象序列化操作变成字符串
print ('序列化后的数据类型为:',type(str1))
print ('序列化后的数据为:',str1)
输出结果:
C:\Python34\python3.exe E:/Project_case/demo1.py
未序列化前的数据类型为: <class 'dict'> #-----------字典类型
未序列化前的数据: {'address': 'shenzhen', 'name': 'fighter', 'age': 28}
序列化后的数据类型为: <class 'str'> #-----------字符串类型
序列化后的数据为: {"address": "shenzhen", "name": "fighter", "age": 28}
然后我们在将序列化后得到的结果反序列化操作:
import json #导入json库 #定义字典
dict1={'name':"fighter",
'age':28,
'address':'shenzhen'} print ('未序列化前的数据类型为:',type(dict1))
print ('未序列化前的数据:',dict1) #对python对象进行序列化操作
print ('begin对python对象进行序列化操作------------>')
str1 = json.dumps(dict1)
print ('序列化后的数据类型为:',type(str1))
print ('序列化后的数据为:',str1) #对str1进行反序列化操作
print ('begin对str1对象进行反序列化操作------------>')
dict2 = json.loads(str1)
print ('反序列化后的数据类型:',type(dict2))
print ('反序列化后的数据:',dict2)
输出结果:
C:\Python34\python3.exe E:/Project_case/demo1.py
未序列化前的数据类型为: <class 'dict'>
未序列化前的数据: {'name': 'fighter', 'age': 28, 'address': 'shenzhen'}
begin对python对象进行序列化操作------------>
序列化后的数据类型为: <class 'str'>
序列化后的数据为: {"name": "fighter", "age": 28, "address": "shenzhen"}
begin对str1对象进行反序列化操作------------>
反序列化后的数据类型: <class 'dict'>
反序列化后的数据: {'name': 'fighter', 'age': 28, 'address': 'shenzhen'}
最后,我们在结合requests库,来查看一下json数据,具体代码如下:
import json,requests #导入json库/requests库 r = requests.get('http://wthrcdn.etouch.cn/weather_mini?city=深圳')
print (r.text,'数据类型:',type(r.text)) #对数据进行反序列化操作
dic = json.loads(r.text)
print (dic,'数据类型:',type(dic))
查看反序列化前,正常响应结果:
{"data":{"yesterday":{"date":"18日星期日","high":"高温 23℃","fx":"无持续风向","low":"低温 17℃","fl":"<![CDATA[<3级]]>","type":"多云"},"city":"深圳","aqi":"","forecast":[{"date":"19日星期一","high":"高温 25℃","fengli":"<![CDATA[<3级]]>","low":"低温 18℃","fengxiang":"无持续风向","type":"阵雨"},{"date":"20日星期二","high":"高温 26℃","fengli":"<![CDATA[<3级]]>","low":"低温 17℃","fengxiang":"无持续风向","type":"多云"},{"date":"21日星期三","high":"高温 21℃","fengli":"<![CDATA[3-4级]]>","low":"低温 14℃","fengxiang":"东风","type":"小雨"},{"date":"22日星期四","high":"高温 17℃","fengli":"<![CDATA[3-4级]]>","low":"低温 13℃","fengxiang":"东风","type":"小雨"},{"date":"23日星期五","high":"高温 19℃","fengli":"<![CDATA[<3级]]>","low":"低温 13℃","fengxiang":"无持续风向","type":"阴"}],"ganmao":"天气转凉,空气湿度较大,较易发生感冒,体质较弱的朋友请注意适当防护。","wendu":""},"status":1000,"desc":"OK"} 数据类型: <class 'str'>
反序列化后输出的结果:
{'status': 1000, 'desc': 'OK', 'data': {'forecast': [{'date': '19日星期一', 'high': '高温 25℃', 'low': '低温 18℃', 'fengxiang': '无持续风向', 'type': '阵雨', 'fengli': '<![CDATA[<3级]]>'}, {'date': '20日星期二', 'high': '高温 26℃', 'low': '低温 17℃', 'fengxiang': '无持续风向', 'type': '多云', 'fengli': '<![CDATA[<3级]]>'}, {'date': '21日星期三', 'high': '高温 21℃', 'low': '低温 14℃', 'fengxiang': '东风', 'type': '小雨', 'fengli': '<![CDATA[3-4级]]>'}, {'date': '22日星期四', 'high': '高温 17℃', 'low': '低温 13℃', 'fengxiang': '东风', 'type': '小雨', 'fengli': '<![CDATA[3-4级]]>'}, {'date': '23日星期五', 'high': '高温 19℃', 'low': '低温 13℃', 'fengxiang': '无持续风向', 'type': '阴', 'fengli': '<![CDATA[<3级]]>'}], 'ganmao': '天气转凉,空气湿度较大,较易发生感冒,体质较弱的朋友请注意适当防护。', 'aqi': '', 'wendu': '', 'yesterday': {'date': '18日星期日', 'high': '高温 23℃', 'low': '低温 17℃', 'fl': '<![CDATA[<3级]]>', 'type': '多云', 'fx': '无持续风向'}, 'city': '深圳'}} 数据类型: <class 'dict'>
Requests接口测试(四)的更多相关文章
- requests接口测试-requests的安装
requests接口测试-requests的安装 安装常见问题 提示连接不上,443问题 一般是因为浏览器设置了代理,关闭代理. 网络加载慢,设置国内镜像地址 1.pip安装 2.pycharm安装 ...
- Python+Requests接口测试教程(1):Fiddler抓包工具
本书涵盖内容:fiddler.http协议.json.requests+unittest+报告.bs4.数据相关(mysql/oracle/logging)等内容.刚买须知:本书是针对零基础入门接口测 ...
- Python+Requests接口测试教程(2):
开讲前,告诉大家requests有他自己的官方文档:http://cn.python-requests.org/zh_CN/latest/ 2.1 发get请求 前言requests模块,也就是老污龟 ...
- Python+Requests接口测试教程(2):requests
开讲前,告诉大家requests有他自己的官方文档:http://cn.python-requests.org/zh_CN/latest/ 2.1 发get请求 前言requests模块,也就是老污龟 ...
- Requests接口测试-对cookies的操作处理(一)
大家都对cookie都不陌生,我们本篇文章使用requests结合cookie进行实例演示.我们使用一个接口项目地址,因为接口项目涉及到隐私问题,所以这里接口的地址我暂时不会给大家开放,但是我会给大家 ...
- unittest,requests——接口测试脚本及报告
用unittest管理两个利用requests模块,做百度搜索的简单接口测试用例,之后自动输出报告 # encoding=utf-8import requests,unittest,HTMLTestR ...
- Requests接口测试-对cookies的操作处理(二)
我们继续来讨论一下cookie这方面的内容,我们都知道cookie是数据,一般的话在我接口测试中,数据都是要和代码进行分离的.本篇内容,我们队cookie内容进行处理,我们把登陆成功后的cookie写 ...
- Requests接口测试(五)
使用python+requests编写接口测试用例 好了,有了前几章的的基础,写下来我把前面的基础整合一下,来一个实际的接口测试练习吧. 接口测试流程 1.拿到接口的URL地址 2.查看接口是用什么方 ...
- Requests接口测试(一)
接口测试概念 接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点.测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关 ...
随机推荐
- ①SpringCloud前序知识-CAP原则
本文主要介绍SpringCloud里头一些常见的原理.定理等相关SpringCloud的技术知识 一.CAP原则 CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性). ...
- java的日期加减
在mysql里面
- The type javax.xml.rpc.ServiceException cannot be resolved.It is indirectly
The type javax.xml.rpc.ServiceException cannot be resolved.It is indirectly 博客分类: 解决方案_Java 问题描述:T ...
- 异常:org.springframework.http.converter.HttpMessageNotReadableException
spring(springboot.springmvc)出现标题的异常一般是由于controller的入参失败引起的. 介绍下常规入参的两种格式: ,这种方式的入参主要是接受key-value的参数, ...
- php调试时echo,print_r(),var_dump()的区别
简单说: var_dump() 能打印出类型 print_r() 只能打出值echo() 是正常输出... 需要精确调试的时候用 var_dump();一般查看的时候用 print_r() 另外 , ...
- nginx相关关键词
nginx在unix系统中会以daemon(守护进程)方式在后台运行; nginx默认模式是多线程的; nginx会有一个master进程和多个worker进程,master进程主要用来管理worke ...
- PHP命名空间带来的干扰
有时候,不想受命名空间约束,就可以整一个全局类. protected function sendDayuSms($tel,$code,$template_type,$product = "[ ...
- redirect uri 参数错误 怎么办
这种情况,多数是因为请求地址不合法所致. 去公众号中添加合法的地址. 这种地址需要满足一些条件. 设置地址 满足的条件 保证可以访问到安全文件 如果访问不到的话,将无法保存 这里是文件存放位置 经过这 ...
- JCE无限制权限策略文件
JCE无限制权限策略文件,里面是对应jdk6和jdk7的文件 官网下载地址是 JDK6:http://www.oracle.com/technetwork/java/javase/downloads/ ...
- mac常用命令(随时更新)
mac 强制退出快捷键 1.使用键盘快捷键强制退出处于活跃状态的Mac程序 快捷键:Command+Option+Shift+Esc 这样按住一两秒钟,就可以强制退出当前程序了,算是最方便的一种方法. ...