大佬教程收集整理的这篇文章主要介绍了Python接口自动化测试之cookie、session应用,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在上一篇Python接口自动化测试系列文章:Python接口自动化-requests模块之post请求c;介绍了post源码c;data、json参数应用场景及实战。
以下介绍cookie、session原理及在接口自动化中的应用。
http 协议是一种无状态协议c;即每次服务端接收到客户端的请求时c;都是一个全新的请求c;服务器并不知道客户端的历史请求记录;Session 和 Cookie 的主要目的就是为了弥补 http 的无状态特性。
如果我们测试的接口有依赖关系怎么办呢(比如购物支付时c;需要先登录)c;这时我们就要用到cookie和session技术来保持客户端与服务器端连接的状态。
1、cookie介绍
cookie是服务器发送到用户浏览器并保存在本地的一小块数据c;它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常c;它用于告知服务端两个请求是否来自同一浏览器c;如保持用户的登录状态。
2、cookie原理
① Cookie技术会根据从服务器端发送的响应报文内的一个叫做Set-Cookie的首部字段信息c;通知客户端保存Cookie。
② 客户端再向服务器端发送请求的时候c;客户端会在请求报文中加入Cookie值后发送出去。服务器端会检查客户端发送的请求中有没有Cookie值c;然后对比服务器上的记录c;最后确定是哪一个客户端c;之前的信息状态是什么。
这样一来c;服务器就能够分辨出发送请求的客户端究竟是哪一个了。
1、session介绍
session是一种在服务端记录用户信息的技术c;是在无状态的http协议下c;服务端记录用户状态时用于标识具体用户的机制。它是在服务端保存的用来跟踪用户的状态的数据结构c;可以保存在文件、数据库或者集群中。
2、session原理
Session是存放在服务器端、用来存放用户数据的(类似于HashTable结构)。
当浏览器第一次发送请求时c;服务器自动生成了一个HashTable和一个Session ID用来唯一标识这个HashTablec;并将其通过响应发送到浏览器。
当浏览器第二次发送请求c;会将前一次服务器响应中的Session ID放在请求中一并发送到服务器上c;服务器从请求中提取出Session IDc;并和保存的所有Session ID进行对比c;找到这个用户对应的HashTablec;以此来达到共享数据的目的。
1. 存储位置不同:Cookie是将用户数据通过加密的方式保存在客户端c;大多数情况Cookie存储在浏览器;Session是用于控制客户端和服务端的连接c;Session存储在服务器;
2. 存储容量不同:单个Cookie保存的数据不得超过4kbc;一个站点最多20个Cookiec;Session一般情况下没有上限c;不过建议不要存放太多东西c;否则影响性能;
3. 存取方式不同:Cookie只能用ASCII字符串c;通过编码方式获取Unicode字符或者二进制数据c;不好存储复杂的信息c;而Session能存储任何类型的数据;
4. 隐私策略/安全性不同:Cookie放在客户端c;可以进行Cookie欺骗c;所以不安全c;Session放在服务端c;更加安全;
5. 有效期不同:Cookie可以设置属性达到长期有效c;Session依赖于JSESSIONID的Cookiec;Cookie JSESSIONID的过期时间默认为-1c;只需要关闭窗口Session就会失效c;就算不依赖Cookiec;用UrL重写也不能完成c;如果Session超时时间过长c;容易导致内存溢出;
6. 服务器压力不同:Cookie保存在本地c;不存在服务端压力c;Session保存在服务端c;每个用户产生一个Sessionc;当访问增多c;会比较占用服务器的性能c;如果主要考虑到减轻服务器性能方面c;应当使用COokie。
现在有登录、充值两个接口c;在未登录时c;直接调用充值接口。
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, 'R_308_11845@sg': '抱歉c;请先登录。'}
这时候c;今天的主角cookie和session闪亮登场了。
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())
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详解及应用
感谢每一个认真阅读我文章的人c;看着粉丝一路的上涨和关注c;礼尚往来总是要有的c;虽然不是什么很值钱的东西c;如果你用得到的话可以直接拿走:
① 2000多本Python电子书(主流和经典的书籍应该都有了)
② Python标准库资料(最全中文版)
③ 项目源码(四五十个有趣且经典的练手项目及源码)
④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)
⑤ Python学习路线图(告别不入流的学习)
在我的QQ技术交流群里(技术交流和资源共享c;广告进来腿给你打断)
可以自助拿走c;群号953306497(备注“csdn111”)群里的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。
以上是大佬教程为你收集整理的Python接口自动化测试之cookie、session应用全部内容,希望文章能够帮你解决Python接口自动化测试之cookie、session应用所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。