iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python接口自动化之cookie、session应用详解
  • 218
分享到

Python接口自动化之cookie、session应用详解

2024-04-02 19:04:59 218人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录一、cookie1、cookie介绍2、cookie原理二、session1、session介绍2、session原理1. 存储位置不同:2. 存储容量不同:3. 存取方式不同:

在上一篇python接口自动化测试系列文章:Python接口自动化之浅析requests模块post请求,介绍了post源码,data、JSON参数应用场景及实战。

以下介绍cookie、session原理及在接口自动化中的应用。

Http 协议是一种无状态协议,即每次服务端接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录;

Session 和 Cookie 的主要目的就是为了弥补 HTTP 的无状态特性。

如果我们测试的接口有依赖关系怎么办呢(比如购物支付时,需要先登录),这时我们就要用到cookie和session技术来保持客户端与服务器端连接的状态。

一、cookie

1、cookie介绍

cookie是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。

2、cookie原理

① Cookie技术会根据从服务器端发送的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。

② 客户端再向服务器端发送请求的时候,客户端会在请求报文中加入Cookie值后发送出去。服务器端会检查客户端发送的请求中有没有Cookie值,然后对比服务器上的记录,最后确定是哪一个客户端,之前的信息状态是什么。

这样一来,服务器就能够分辨出发送请求的客户端究竟是哪一个了。

二、session

1、session介绍

session是一种在服务端记录用户信息的技术,是在无状态的HTTP协议下,服务端记录用户状态时用于标识具体用户的机制。它是在服务端保存的用来跟踪用户的状态的数据结构,可以保存在文件、数据库或者集群中。

2、session原理

Session是存放在服务器端、用来存放用户数据的(类似于HashTable结构)。

当浏览器第一次发送请求时,服务器自动生成了一个HashTable和一个Session ID用来唯一标识这个HashTable,并将其通过响应发送到浏览器。

当浏览器第二次发送请求,会将前一次服务器响应中的Session ID放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的所有Session ID进行对比,找到这个用户对应的HashTable,以此来达到共享数据的目的。

三、cookie和session区别

1. 存储位置不同:

Cookie是将用户数据通过加密的方式保存在客户端,大多数情况Cookie存储在浏览器;Session是用于控制客户端和服务端的连接,Session存储在服务器;

2. 存储容量不同:

单个Cookie保存的数据不得超过4kb,一个站点最多20个Cookie,Session一般情况下没有上限,不过建议不要存放太多东西,否则影响性能;

3. 存取方式不同:

Cookie只能用ASCII字符串,通过编码方式获取Unicode字符或者二进制数据,不好存储复杂的信息,而Session能存储任何类型的数据;

4. 隐私策略/安全性不同:

Cookie放在客户端,可以进行Cookie欺骗,所以不安全,Session放在服务端,更加安全;

5. 有效期不同:

Cookie可以设置属性达到长期有效,Session依赖于jsESSIONID的Cookie,Cookie JSESSIONID的过期时间默认为-1,只需要关闭窗口Session就会失效,就算不依赖Cookie,用UrL重写也不能完成,如果Session超时时间过长,容易导致内存溢出;

6. 服务器压力不同:

Cookie保存在本地,不存在服务端压力,Session保存在服务端,每个用户产生一个Session,当访问增多,会比较占用服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用Cookie。

现在有登录、充值两个接口,在未登录时,直接调用充值接口。


import requests
url = 'http://127.0.0.1:8000/recharge'
payload = {
    "mobilephone":"1530272****",
    "amount":100
}
recharge_res = requests.post(url,data=payload)
print(recharge_res.json())

请求结果:提示请先登录。

{'status': 0, 'code': None, 'data': None, 'msg': '抱歉,请先登录。'}

这时候,今天的主角cookie和session闪亮登场了。

四、cookie应用


import requests
 # 登录接口
url = 'http://127.0.0.1:8000/user/login'
payload = {
    "mobilephone":"1530272****",
    "pwd":"123456"
}
login_res = requests.post(url,data=payload)
print(login_res.json())
# 获取响应结果的cookies
cookies = login_res.cookies
print(cookies)
 # 充值接口
url = 'http://127.0.0.1:8000/recharge'
payload = {
    "mobilephone":"1530272****",
    "amount":100
}
# 充值接口请求时携带cookies
recharge_res = requests.post(url,data=payload,cookies=cookies)
print(recharge_res.json())

五、session应用


import requests
 
# 登录接口
url = 'http://127.0.0.1:8000/user/login'
payload = {
    "mobilephone":"1530272****",
    "pwd":"123456"
}
# 创建session会话管理
session = requests.session()
login_res = session.post(url,data=payload)
print(login_res.json())
 
# 充值接口
url = 'http://127.0.0.1:8000/recharge'
payload = {
    "mobilephone":"1530272****",
    "amount":100
}
recharge_res = session.post(url,data=payload)
print(recharge_res.json())

到此这篇关于Python接口自动化之cookie、session应用详解的文章就介绍到这了,更多相关Python接口自动化cookie、session应用内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python接口自动化之cookie、session应用详解

本文链接: https://www.lsjlt.com/news/133461.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python接口自动化之cookie、session应用详解
    目录一、cookie1、cookie介绍2、cookie原理二、session1、session介绍2、session原理1. 存储位置不同:2. 存储容量不同:3. 存取方式不同:...
    99+
    2024-04-02
  • Python接口自动化之文件上传/下载接口详解
    目录〇、前言一、文件上传接口1. 接口文档2. 代码实现二、文件下载接口1. 接口文档2. 代码实现总结〇、前言 文件上传/下载接口与普通接口类似,但是有细微的区别。 如果需要发送文...
    99+
    2024-04-02
  • Python接口自动化之接口依赖
    目录一、场景说明二、token处理思路三、JsonPath基本用法1、JsonPath介绍2、JsonPath语法3、JsonPath源码4、JsonPath实战四、token依赖实...
    99+
    2024-04-02
  • python+pytest接口自动化之session会话保持的实现
    目录前言一、session(会话)二、会话保持三、python进行session会话保持总结前言 在接口测试的过程中,经常会遇到有些接口需要在登录的状态下才能请求,否则会提示请登录,...
    99+
    2024-04-02
  • 〖Python接口自动化测试实战篇④〗- 接口自动化测试详解
    订阅 Python全栈白宝书-零基础入门篇 可报销!白嫖入口-请点击我。推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 Python全栈白宝书专栏,免费阶段订...
    99+
    2023-09-04
    自动化 python自动化测试实战 自动化测试 接口测试 接口自动化测试
  • python接口自动化之正则用例参数化的示例详解
    目录前言一、正则表达式语法1.1表示单字符1.2表示数量1.2.1匹配分组1.3 表示边界二、贪婪模式三、re模块3.1 re.findall()3.2re.search()3.3 ...
    99+
    2024-04-02
  • 接口自动化测试用例详解
    phpunit 接口自动化测试系列 Post接口自动化测试用例 Post方式的接口是上传接口,需要对接口头部进行封装,所以没有办法在浏览器下直接调用,但是可以用Curl命令的-d参数传递接口需要的参数...
    99+
    2023-09-02
    自动化 测试用例 php 自动化测试 软件测试
  • Python-接口自动化(三)
      (三)函数   1、函数 函数的语法: 1 def 函数名(): 2 3 函数体     a、函数的关键字是def,函数体就是你希望这个函数帮你实现什么功能,函数名命名需要遵循的原则是以小写字母分开,由数字字母数字...
    99+
    2023-01-31
    接口 Python
  • Python-接口自动化(六)
      (七)接口   1、接口:外部系统与本系统之间以及系统内部的各个子系统间,以约定标准提供的服务,包括对外提供的接口/对外提供的接口。 不同的请求协议:http  webservice  dubbo  socket http请求分为:...
    99+
    2023-01-31
    接口 Python
  • Python-接口自动化(一)
      一、python语言特点 1、易于学习:python有相对较少的关键字,结构简单,有一个明确定义的语法,学起来比较简单;   2、易于阅读:python代码定义的更清晰;   3、易于维护:python的成功在于它的源代码是相当容易...
    99+
    2023-01-31
    接口 Python
  • Python-接口自动化(十)
    (十一)ddt 1、利用ddt实现数据驱动,ddt是第三方模块,在终端输入pip install ddt 进行安装 导入:from ddt import ddt,data,unpack a、如果unpack后的参数少于5个可以使用 推荐...
    99+
    2023-01-31
    接口 Python
  • python+requests接口自动化
    文章来源:https://my.oschina.net/u/3041656/blog/820023         前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和j...
    99+
    2023-01-31
    接口 python requests
  • Python-接口自动化(七)
    (八)requests模块 1、requests是用python语言编写,属于第三方库,基于urllib,采用Apache2 Licensed开源协议的HTTP库,它比urllib更加方便,可以节约我们大量的工作,完全满足HTTP测试需...
    99+
    2023-01-31
    接口 Python
  • Python-接口自动化(九)
    (十)python操作Excel读/写测试数据 1、夹心饼干 setUp:在每一条测试用例执行之前执行 tearDown:在每一条测试用例执行之后执行 上面的这两个东东就叫做夹心饼干,在必要的时候写, 比如说在执行测试用例之前你有数据需...
    99+
    2023-01-31
    接口 Python
  • Python接口自动化浅析Token应用原理
    目录一、Token基本概念及原理1、Token作用2、什么是Token3、Token运行原理4、Token认证优点5、Token和 Cookie、Session 的选型二、Token...
    99+
    2024-04-02
  • 详解Python自动化之文件自动化处理
    一、生成随机的测验试卷文件 假如你是一位地理老师, 班上有 35 名学生, 你希望进行美国各州首府的一个小测验。不妙的是,班里有几个坏蛋, 你无法确信学生不会作弊。你希望随机调整问...
    99+
    2024-04-02
  • Java+TestNG接口自动化入门详解
    目录一、环境准备:(根据自己电脑配置来选择安装版本,我的电脑是64位,所以此处选择64位安装)二、环境安装:三、TestNG接口自动化实现四、创建自己的第一个接口自动化脚本五、批量执...
    99+
    2024-04-02
  • python自动化之re模块详解
    目录一、re是什么?二、re 模块的作用三、re模块的使用1、常用方法2、 元字符3、多字符匹配4、分组匹配5、match()方法的使用6、 search():在字符串中搜索,返回搜...
    99+
    2024-04-02
  • python自动化测试之Selenium详解
    目录1.安装2.基础操作2.1 声明浏览器对象2.2 访问网页2.3 查找单个节点2.4 查找多个节点3.等待3.1 显式等待3.2 隐式等待总结1.安装 完成自动化测试,需要配置三...
    99+
    2024-04-02
  • Python接口自动化 之用例读取方法总结
    目录1. Python第三方库xlrdxlrd代码演示2. Python第三方库pandaspandas代码演示3. Python第三方库yamlyaml代码演示总结前言: 在软件测...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作