1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

python+pytest接口自动化之session对话维持的完成

序言

你好,我是本际云服务器推荐网的小编小本本。在app测试的过程中,我们经常需要处理登录状态的问题。我们可以通过Cookie绕开登录,也可以使用session对话维持机制来维持登录状态。今天,我想讲一下python+pytest接口自动化中如何实现session对话维持。

python+pytest接口自动化之session对话维持的完成

一、session(对话)

什么是session?session其实就是对话。我们来看一下对话的生命周期,就大概能够明白什么是session了:首先,当手机客户端(大多是电脑浏览器)请求某个网站服务器时,会建立对话;其次,手机客户端可以请求该网站服务器的其他资源;最后,手机客户端关闭或者对话超时,对话结束。

二、对话维持

对话维持的目的就是为了保证同一个用户上传的相关请求能够在同一个会话中不被中断。利用session机制,我们可以将登录信息等重要参数保存在session中,在后续请求其他资源时,会自动使用session中的参数来请求,而无需重新登录。

具体实现机理如下:当服务软件初次请求该网站服务器时,网络服务器会创建一个session,该session目标时会存放特定用户会话需要的特性及配置信息(如客户信息或登录状态等),并储存在网络服务器中。

创建session时,会给予其一个sessionID,该sessionID能被放置在set-cookie中伴随着请求返回给手机客户端,并储存在当地的cookie中。

当下次手机客户端请求其他资源时,网络服务器就可以通过cookie中的sessionID来查找之前创建的session目标,如果找到且未过期,则说明是来自同一用户的请求。

三、python开展session对话维持

在接口自动化测试中,我们可以使用session来维持登录状态,从而不必每次请求插口都要重新登录。下面,以查询TesterHome网站中的消息通知和私人信息为例,讲解如何在python接口自动化中使用session维持登录状态。

注意:

  • 在此处我先尝试请求登录接口,然后使用该session请求其他接口,结果还是要求先登录,说明该网站的方法难以实现。
  • 由于登录后自动跳转到主页,所以在这里我们先请求主页接口,然后使用该session请求其他接口。

1、首先,使用Fiddler抓包软件获取登录成功后请求主页接口后的cookie。

2、获取cookie后,使用请求主页接口时的cookie创建session对象。

“`python
import requests

# 请求头
headers = {
“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
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)
“`

3、使用上面的session对象,请求消息通知和私人信息接口。

4、完整源代码如下所示:

“`python
import requests

# 请求头
headers = {
“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
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,因为sessionID是存放在cookie中的。

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/5784.html