python之requests模块学习笔记(1)

发送请求
requests API支持的HTTP请求类型:get, post, put, delete, head, options
传递URL
当url作为查询字符串传递数据时,如果手工构建url( http://httpbin.org/get?key=value)
当查询url过长时这样构建很明显时很麻烦的。(可以参见百度搜索某内容时的url)。
应对这种情况,requests允许你以一个字符串字典来提供这些参数,可传入到params参数。
字典中为None的键都不会被添加进url中
响应内容
requests能够自动解码来自服务端给到的内容,大多数unicode字符集能够被无缝地解码
当你的请求发出后,requests会基于HTTP的头部信息对响应编码进行推测。当访问r.text时,
requests会使用其推测的编码。并且也可以使用r.encoding来访问它。
二进制响应内容
requests支持你用字节的形式访问请求响应体,对于非文本的请求,可以使用r.content
 
json格式响应内容
说到想响应体,json格式的响应内容相信大家并不陌生,在进行接口测试中,json的响应格式是我们
经常见到的一种,而强大的requests也自带了json解码器
 
python之requests模块学习笔记(1)_第1张图片
 
 
json解码失败时,r.json()就会抛出异常,例如面对响应内容为401这一类的问题,r.json()
返回给你的会是ValueError: No JSON object could be decoded 异常。
 
但是能够成功调用r.json()这一类的方法,也不并代表这次响应是成功的,例如有时候失败的
响应中,也会返回一些失败的细节在一个json对象中(比如500),这样的话json是能够被
成功解码返回的。所以要验证请求是否成功,还是使用r.raise_for_status()或者check 你的
r.status_code是否和你的期望值相同吧。在接口自动化测试中,就可以以status_code作为断言
依据,判断某个接口是否接入正常,再取响应体的内容来进行下一步的断言。
 
当然requests似乎没有restassured框架这么强大,处理json格式的响应内容更加简略。也许是笔者
目前水平有限,日后如果有新的发现和研究会进行更正
 
 
原始响应内容
在某些特殊的业务场景中,我们可能需要获取来自服务器 的原始套接字响应内容,对于这种场景,
requests也给出了很好的方法,你可以通过r.raw来获取,但是这样做的前提是,你需要在请求中
设置了stream=true这个参数。而且raw也给出了read()方法,让你获取固定长度的内容。
github.com/timeline.json这个url请求已经失效了,如果想练手的话可以使用httpbin.org或者github
官网给出的新的请求文档来实现下面的demo。
python之requests模块学习笔记(1)_第2张图片
 
 
当然,一般这样的业务场景,我们更加应该的是把文本流保存到文件中。例如官方给出的demo:
使用response.iter_content能够帮助你更好了处理要使用到raw的场景,当需要使用到字节流下载的
场景是,上面这种方式是官方给出的推荐方式。而且我们能够自由的调整大小,方便我们来处理用例
场景。chunk_size即为你想要定义chunk对象的大小。
 
 
 
 
 
今天就先做这么多笔记,希望能够坚持下去。读完文档再自己写出来,确实能够对自己吸收知识有很大的帮助!

转载于:https://www.cnblogs.com/nuanyang233/p/8381038.html

你可能感兴趣的:(python之requests模块学习笔记(1))