一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就接着来谈谈关于软件测试中的“requests请求如何保持登录状态”。
有些接口的调用需要处于登录状态,可以在调用接口的时候手工传入cookie信息,或者用session保持会话,这一章节给大家讲讲requests请求如何保持登录状态。
1. requests-cookies参数
request请求cookies参数:
字典格式,可以放cookie信息
发送请求时,需要带cookie信息:
cookies={"ECSCP_ID":"cf306022f9f921c97ee70b907f6be4e63c96aae2"}
response = requests.get(url,cookies=cookies)
代码示例:登陆获取cookie,然后再传入后续接口的调用中
import requests
#登录
url = 'http://localhost/ecshop/user.php'
param = {
"username":'user001',
"password":'user001',
"act":"act_login",
"submit":None
}
res1 = requests.post(url,data=param)
#获取cookies
cookies = res1.headers["Set-Cookie"]
#截取出需要的cookie
c1 = cookies.split(';')
for c in c1:
if "ECS_ID" in c:
print(c)
break
c2 = c.split('=')
print(c2)
#设置cookie参数
cookie = {c2[0]:c2[1]}
#查询订单接口
url = "http://localhost/ecshop/user.php?act=order_list"
res2 = requests.get(url,cookies=cookie)
print(res2.text)
2. requests.session()进行会话的保持
代码演示:requests.session()对象,在同一个对话里,前面登陆,后面接口调用时会自动带上相关信息。这样就不需要我们手工传入某些数据了
import requests
s = requests.session()
#登录
url = 'http://localhost/ecshop/user.php'
param = {
"username":'user001',
"password":'user001',
"act":"act_login",
"submit":None
}
s.post(url,data=param)
#查询订单
url = "http://localhost/ecshop/user.php?act=order_list"
res = s.get(url)
print(res.text)