——————·今天距2021年260天·——————

这是ITester软件测试小栈第112次推文

在上一篇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())

总结:本文主要介绍cookie、session原理及在自动化过程中如何利用cookie、session保持会话状态。

下一篇:python自动化测试-token详解及应用

以上

That‘s all

更多系列文章

敬请期待

ITester软件测试小栈

往期内容宠幸

快来星标 置顶 关注我

后台

回复

资源

取干货

回复2020与我共同成长

想要获取相关资料和软件 ?

测试交流Q群:727998947

python自动化接口测试中的cookies怎么实现_Python接口自动化之cookie、session应用相关推荐

  1. python自动化接口测试中的cookies怎么实现_python接口自动化测试--requests cookies处理...

    Cookies与会话对象 如果某个响应中包含一些Cookie,你可以快速访问它们: import requests print(r.cookies['NID']) print(tuple(r.cook ...

  2. python的实现和测试是啥意思_Python接口自动化测试之pytest与unittest区别

    引言 我们在使用python做接口测试的时候,搭建的接口测试框架都是python的单元测试框架,而python的单元测试框架很多unittest.pytest.nose等 什么是单元测试 我们知道软件 ...

  3. python读取每一行文字二十四_python接口自动化(二十四)--unittest断言——中(详解)...

    简介 上一篇通过简单的案例给小伙伴们介绍了一下unittest断言,这篇我们将通过结合和围绕实际的工作来进行unittest的断言.这里以获取城市天气预报的接口为例,设计了 2 个用例,一个是查询北京 ...

  4. 用python画风车_python接口自动化()一)(实现一款简单的接口自动化框架)

    python接口自动化一(设计一款自己的接口自动化框架) 一.起因: 前面学习过了python接口requests来进行接口测试,但是在框架选择上还是选择的unittest.当接口数量不怎么多时还好, ...

  5. .net session 有效时间_Python中requests模拟登录的三种方式(携带cookie/session进行请求网站)...

    这篇文章主要介绍了python中requests模拟登录的三种方式(携带cookie/session进行请求网站),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋 ...

  6. python网站设计中接口的作用_python接口自动化(三)--如何设计接口测试用例(详解)...

    简介 上篇我们已经介绍了什么是接口测试和接口测试的意义.在开始接口测试之前,我们来想一下,如何进行接口测试的准备工作.或者说,接口测试的流程是什么?有些人就很好奇,接口测试要流程干嘛?不就是拿着接口文 ...

  7. python 从excel中抓取数据_python接口自动化(三)——从excel中获取数据

    python接口自动化(三)--从excel中获取数据 1.按照之前的设计思路,我们需要从excel中去获取测试用例,所我们先封装一个获取数据的工具 from Data.with_config imp ...

  8. python接口测试框架与自动化实战_Python接口自动化从设计到开发,测试框架实战与自动化进阶视频课程...

    Python接口自动化从设计到开发,测试框架实战与自动化进阶视频课程21套高级软件测试,性能测试,功能测试,自动化测试,接口测试,移动端测试,手机测试,WEB测试,渗透测试,测试用例设计,黑盒测试,白 ...

  9. soapui工具_python接口自动化(四)--接口测试工具介绍(详解)

    简介 "工欲善其事必先利其器",通过前边几篇文章的介绍,大家大致对接口有了进一步的认识.那么接下来让我们看看接口测试的工具有哪些. 目前,市场上有很多支持接口测试的工具.利用工具进 ...

最新文章

  1. grep 使用 nsr 实现查找
  2. SELECT-OPTIONS对象
  3. 计算两个日期之间有多少天多少小时多少分钟
  4. a标签点击事件_html常用标签
  5. 论文小综 | Neuro-Symbolic Reasoning in NLP
  6. Mongodb3.4 复制集及分片配置
  7. Flink – SlotSharingGroup
  8. JAVA计算机毕业设计在线教学质量评价系统Mybatis+系统+数据库+调试部署
  9. python OJ 绝对值最大
  10. 7-3 jmu-python-凯撒密码加密算法 (10分):编写一个凯撒密码加密程序,接收用户输入的文本和密钥k,对明文中的字母a-z和字母A-Z替换为其后第k个字母。
  11. 电视盒子做文件共享服务器,【当贝市场】智能电视盒子和PC电脑文件共享教程...
  12. android手表文件管理,watch文件管理器APP安卓版下载-watch文件管理器华为手表版v1.1.0 免费版-007游戏网...
  13. 软考报名资格审核要多久?证明材料要哪些?
  14. win10黑屏假死怎么解决
  15. c++中的sort函数
  16. 什么是优秀的用户体验:解读40个优秀界面设计
  17. WAYS TO UPDATE YOUR DEVICE
  18. InstallShield打包源码公布
  19. 新出生的机器狗,打滚1小时后自己掌握走路,吴恩达开山大弟子最新成果
  20. Mad Scientist[USACO]

热门文章

  1. Windows Server入门系列34 用户配置文件
  2. AccEAP架构介绍(1)---实体的设计
  3. Scrum立会报告+燃尽图(十月三十日总第二十一次)
  4. php 远程下载图片到本地
  5. 表格排序——tablesorter.js使用(支持中文排序)
  6. thrift使用小记_CUDev-ChinaUnix博客
  7. v-model双向绑定原理_Vue数据绑定
  8. c语言dll注入,教大家写一个远程线程的DLL注入,其实还是蛮简单的……………………...
  9. python里面的类和对象_Python中类和对象在内存中是如何保存?
  10. android 渐变卡片,手机SIM卡的进化史,从有到无,渐变虚拟eSIM卡