python接口自动化测试二:requests库常用属性和方法
requests官方文档:https://requests.readthedocs.io/zh_CN/latest/
requests发送请求的方式和支持的请求:
一、发送请求
1:简单示例
发送一个get请求(post、put···其他方法发送方式一样),返回response对象
由源码可看出,查询字符串参数给一个字典,传给params参数
import requests
url = 'http://127.0.0.1:8080/test'
query_str = {'username': 'aaa'}
response = requests.get(url=url, params=query_str)
print(response.json()) # 响应体从json转为python对象(字典)
2.requests.request方法
由以上方法可以看出调requests.get、requests.post···其实都是调的requests.request方法,只不过是穿进去的请求方法
常用的一些参数:
method: 请求方法,字符串格式的get、post、put、delete···
url: 字符串格式的 host + 接口地址 + 以?开头,&分隔的url参数
headers:头部信息,字典格式
cookies:请求时要携带的cookie,字典格式
data:form-data参数,字典格式,request自动处理请求头的content-type
json:json参数,字典格式,request自动处理请求头的content-type
files:文件流,字典格式,request自动处理请求头的content-type
timeout:请求超时时间,秒
allow_redirects:是否允许重定向,True为允许,默认为True
proxies:发送请求时,使用的代理
verify:是否校验证书,True为要校验,默认为True,发送HTTPS请求时,设置为False即可
使用示例:请求中需要什么参数刘加什么参数即可
二:响应对象
发送请求后接口会返回一个响应对象,和请求对象一样,也拥有头部信息、主体信息、url····
1.requests提供的响应对象的属性
.ok # 请求是否成功
.encoding # 返回的编码格式
.status_code # 打印状态码,若有重定向,返回的是重定向之后的代码
.request # 请求方法
.url # 如果没有重定向,就是请求的url,如果有重定向,就是重定向后的url
.history # 此次请求经历的重定向的url
.headers # 以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None
.cookies # 获取cookie
.raw #原始响应体
.text # 响应体转为文本
.content # 字节方式的响应体,会自动解码 gzip 和 deflate 压缩
.elapsed # 接口响应时间对象
由于.elapsed是datetime对象,所以可以使用各种单位的取值
2.requests提供的处理响应对象的方法
.raise_for_status() #失败请求(非2开头、非3开头)抛出异常
.json() # Requests中内置的JSON解码器 ,把响应体的json转成python的字典
三:保持会话
当有多个请求,都需要同样的身份校验(cookie)的时候,可以先声明session,并且在此session中设置头部信息,后面的请求都是用这个session即可
requests.request的实现其实也是使用的requests.session
使用示例