python接口测试:自动保存cookies

接口测试中遇到上一个请求返回响应包含cookie(如下图登录请求的响应结果)。需将cookies保存下来,后续请求自动带入,否则会提示未登录

python requests的cookie类型是<class 'requests.cookies.RequestsCookieJar'>

查看cookie类型的方式:

 

在很多时候,发送请求后,服务端会对发送请求方进行身份识别,如果请求中缺少识别信息或存在错误的识别信息,

会造成识别失败。 如一些需要用户登录以后才能访问的页面。

import requests
myaddress_url='http://xxx.com/api/v1/myaddress'
myaddress=requests.get(myaddress_url)
print(myaddress.status_code)
print(myaddress.text)

-----结果-----
401
未授权的访问, 请重新登陆

在用户登录的时候,服务器端会向请求方发送一些资料,存在本地,例如cookies,在接下来的某些请求中,都需要带上cookies,服务器通过cookies内容来辨别使用者。

那么在python中,是如何在请求中带入cookies信息的呢,看下面:

import requests
login_url='http://xxx.com/api/v1/user/login'
userinfo={"ua":"username","pw":"password"}
login=requests.post(login_url,json=userinfo)
cookies=login.cookies    
                            #获取登录后的cookies内容
myaddress_url='http://xxxx/api/v1/myaddress'
myaddress=requests.get(myaddress_url,cookies=cookies)    #在请求中带入cookies
print(myaddress.status_code)
print(myaddress.text)

-----结果-----
200
{........}

带入了cookies内容后,可以正常的获取到想要的响应内容。

在此处虽然可以请求成功,但需要获取到cookies内容及每次都要发送cookies内容,不是非常方便,因此,接下来我们介绍另外一种方法

使用session类来发送请求:

import requests

login_url='http://xxxx/api/v1/user/login'
userinfo={"ua":"username","pw":"password"}
myaddress_url='http://xxx/api/v1/myaddress'
test_session=requests.session()                           #使用session类生成一个对象
login=test_session.post(login_url,json=userinfo)  
myaddress=test_session.get(myaddress_url)
print(myaddress.status_code)
print(myaddress.text)

-----结果-----
200
{...}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值