python中session的用法,python中session函数
在接口测试的过程中,经常会遇到一些接口需要登录后才能被请求。主要介绍python pytest接口自动化的会话维护的实现,有兴趣的可以看看。
00-1010前言一、会话二、会话维护三、python对会话维护的总结。
目录
在接口测试的过程中,经常会遇到一些接口需要登录后才能被请求。否则会提示登录,那怎么解决?我们可以通过Cookie绕过登录。其实这也是保持登录的方式之一。所以今天,我想谈谈通过会话保持会话。
前言
会话,即会话。那么什么是对话呢?我们来看看对话的生命周期,大致可以理解为:
启动:客户端(通常是浏览器)-发送第一个请求-一个应用服务器,并成功与对方建立连接,即创建会话;
在会话中:客户机然后请求应用服务器的其他资源;
End:关闭客户端(通常是浏览器)或者会话超时,会话结束。
一、session(会话)
会话保持可以通俗地理解为让同一个用户发送的相关请求停留在同一个会话中而不被断开。例如,如果您使用session成功登录网站,当您使用session对象再次请求该网站的其他页面时,您将默认使用之前在会话中保存的cookie和其他参数进行请求,而无需再次登录。
会话保留的一般原则如下:
当客户机第一次请求应用服务器时,服务器将创建一个会话。会话对象将存储属性和配置信息(如用户信息或登录状态等)。)是特定用户会话所需的,并将保存在服务器中。当创建一个会话时,它将被赋予一个会话ID,该ID将被放在set-cookie中,随请求返回给客户机,并保存在本地cookie中。随后,当客户端请求该应用中的其他资源时,服务器将接收cookie中的会话ID,并根据该ID在内存中搜索先前创建的会话对象。如果可以找到它并且没有过期,则意味着它是来自同一用户的请求。
二、会话保持
在接口自动化测试中,在某些情况下,可以使用session会话保持机制来保持登录状态,这样每次清空接口时就不需要先登录了。
接下来,我们以检查TesterHome网站上的个人通知消息和个人信息为例,说明如何在python接口自动化测试中使用session来保持登录状态。
注意:
这里我先尝试请求登录接口构造会话,然后用会话请求其他接口,仍然提示需要先登录,可见这种方法对于这个网站是不可行的。因为我们是登录后跳转到首页的,这里可以用请求首页的接口来构造会话,然后可以用会话来请求其他接口。1.首先,Fiddler在成功登录后请求主页界面时抓取数据包以获取cookie。
2.通过使用请求主页的接口获取cookie并构造会话对象。
导入请求
标题={
用户代理“:”Mozilla/5.0(Windows NT 10.0;Win64x64) AppleWebKit/537.36 (KHTML,像壁虎一样)Chrome/99 . 0 . 4844 . 51 Safari/537.36 ,
Cookie‘:’就是上面截图所示获取的cookie,也就是你成功登录后跳转时请求首页界面https://testerhome.com/时获取的cookie’
}
#构造一个全局会话对象
S=requests.session()
#使用session对象,即S,模拟登录成功,请求主页界面更新S。
h_url=https://testerhome.com/
h_res=S.get(url=h_url,headers=headers)。文本
在这一步中,session对象S将在成功登录后包含cookie等信息,然后使用session对象请求其他接口,无需再次登录。
3.使用上一步中获得的会话对象查看个人通知消息,
个人信息接口。
# 使用session对象S请求个人通知消息接口n_url = "https://testerhome.com/notifications/personal"
n_res = S.get(url=n_url).text
print(n_res)
# 使用session对象S请求个人信息接口
s_url = "https://testerhome.com/setting"
s_res = S.get(url=s_url).text
print(s_res)
请求个人信息接口,执行结果如下:
4、完整代码如下:
import requestsheaders = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36",
"cookie": 如上面截图所示获取的cookie,即登录成功后跳转时,请求首页接口https://testerhome.com/时的cookie
}
# 构造一个全局session对象
S = requests.session()
# 使用session对象即S模拟登录成功后请求首页接口,更新S
h_url = "https://testerhome.com/"
h_res = S.get(url=h_url, headers=headers).text
# 使用session对象S请求个人通知消息接口
n_url = "https://testerhome.com/notifications/personal"
n_res = S.get(url=n_url).text
print(n_res)
# 使用session对象S请求个人信息接口
s_url = "https://testerhome.com/setting"
s_res = S.get(url=s_url).text
print(s_res)
总结
session与cookie是不同的机制。
相同点:两者都能记录用户的状态,且都是由服务端生成。
不同点:cookie是存储在本地客户端的,而session则存储在服务端。
两者之间存在联系:session会话保持机制需要依赖cookie,因为session ID是存储在cookie中的。
到此这篇关于python+pytest接口自动化之session会话保持的实现的文章就介绍到这了,更多相关python pytest session会话保持内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。