2023还不懂Jmeter接口测试实战-Cookies的同志,请看这里!全网没有比这更详细的教程!
创始人
2025-06-01 03:47:10

这里介绍的Jmeter接口测试的的实战,如果文章内容没遇看懂的话,我这边推荐一套视频版本的项目实战教程,这套课程在B站学习人数达到了上10000人!

2023年B站最新Jmeter接口测试实战教程,精通接口自动化测试只需要这一套视频_哔哩哔哩_bilibili2023年B站最新Jmeter接口测试实战教程,精通接口自动化测试只需要这一套视频共计16条视频,包括:1.【Jmeter】什么是接口测试?为什么要做接口测试?、2.【Jmeter】接口架构设计分类以及接口协议、3.【Jmeter】Jmeter界面介绍和常用组件详解等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1Ux4y1L7Lj/?spm_id_from=333.337.search-card.all.click

 场景:

接口测试时常都需要登录,请求方式(post), 登录常用的方法有通过获取token, 获取session, 获取cookie, 等等. 这几种都有一个共同的特点, 有效期(expires).

 Session是建立连接后session有效, 断开连接session失效, token有效期是服务端控制, cookie是用户浏览访问时被创建的,由服务器发送给客户端使用, 有效期长短和服务器相关, 不同的web服务器默认值略有差异, 在一个临时会话周期内,cookie一般不会被持久化, 也就是关闭浏览器或者退出登录cookie失效.

如何获取token, 我们之前的推文(Jmeter接口测试-正则表达式)里已经介绍过, 今天来讲cookie, 使用cookie既然有有效期,那退出或者其他情况使cookie失效了, 在接口测试脚本中要一直去修改为最新的cookie, 不是很恼人的一件事情吗?  有没有办法一劳永逸呢, 答案是肯定的.

实战:

还是从实例入手, 首先我们找一个已经跑通的接口(原先cookie获取是在自定义变量里写死cookie值, 然后再传给cookie manager), 在结果树的请求->request Body中查找信息

从图中可以看出, cookie data有几个信息组成

  • username

  • SESSION

  • SERVERID

那这些信息去哪里获取呢?

使用chrome的开发者工具查看, 在application标签下很容易就能找到上述信息

有了以上这些信息,那接下来的事情就好办了, 两种方式添加

1. http cookie manager(推荐)

2. http 信息管理器

在cookie 管理中添加需要存储的cookie

然后把原先用自定义变量里的cookie值删除(写死的cookie值), 用这个方法去获取cookie给同域名下的其他API使用, 即可非常轻松的执行需要登录的API, 细心的同学会发现 cookie data里还有username和SESSION 怎么没用到, 我这个实例中这两个不用也可以正常执行, 如果有需要自行加上即可, 至此有趣的cookie可一劳永逸的使用, 不必再为cookie过期而烦恼了, 不知道你学会了没有, 在实际测试场景中,类似这样的问题时常困扰着我们, 如何巧妙的使用方法去解决(偷懒法则), 学会偷懒的技术工程师才是一个合格的工程师. 

一、jmeter的http cookies管理器使用

作用:
1 发送请求,经常要校验cookies信息
2 录制的时使用的cookie管理器,只能在指定的域下面使用,如果服务器地址切换,发现发送请求时,就会出现no cookies
使用方法
1 使用badboy录制的脚本都带了cookie管理器
2 使用jmeter的代理录制脚本,提前设置好cookie管理器再进行录制
3 自己设置cookie管理器
前两种的cookie管理器都有域名的限制,有时需要自己进行修改

我一般使用代理录制脚本,自己添加cookie管理器的方式进行

步骤:

1 录制脚本


2 修改cookie管理器,如果没有域名切换的话,可以不用自己配置的
1)使用开发者工具,或者firefox的firebug插件获取cookie信息。建议使用firebug这个配置和jmeter几乎一样。据说可以直接导入到jmeter,但是我没有导入成功,就自己配置了。
下面是开发者工具所看到的cookie信息

并不是所有的都需要配置发送到服务器。我的只配置了sf_session就ok了
域就是服务器的ip

这样后面发送的所有请求都会自带上这个cookie信息。这里面的cookie可以通过正则表达式进行提起,设置成变量

二、jmeter的http cookies管理器使用

Cookie管理器,会默认把服务端返回的cookie数据记录下来
步骤:
1 先添加http cookie管理器,这时jmeter就会自动记录下服务端返回的cookie信息
由于数据是保存在cookie里面,没法通过正则表达式去提取

2 其实这个时候,jmeter发送请求,会默认把cookie信息带上,能解决大部分问题

 3 但是我们这时又想用到cookie里面的某一个值的时候,就需要修改jmeter的设置了
在jmeter的安装bin路径下,
修改:jmeter.properties

#CookieManager behaviour - should Cookies be stored as #variables?
#Default is false
CookieManager.save.cookies=true //这个把前面的#去掉,

4 调用cookie里面某一个值

${COOKIE_某一个值名称}
如上面的 sf_session就可以直接用${COOKIE_sf_session}调用。和自定义变量完全一样

注意点:必须是请求服务端以后,cookie管理器里面才会有数据,一般是登陆时服务端返回会带回cookie。之前cookie会一直为空
下面是我demo的截图

 提取成功图片:
前置bs没有cookie值
后置的bs有了cookie值

三、jmeter直接用cookie管理器保存登录后的cookie信息

最近遇到的问题是,登录需要验证码,验证码每次都变且无规律,所以录制登录接口就没办法录制了。于是就想着能不能直接在cookie管理器中保存我登录后的信息,其他接口直接调用这个参数呢?经过试验,有的系统可以,有的不可以,不可以的还没找到原因和解决办法,先写可以使用的步骤吧。

1、打开火狐浏览器,登录要保存cookie信息的网页并登录成功;

2、打开调试模式,切换到存储,打开cookie,然后右侧红框区域内的所有数据就是cookie信息;

3、把这个表里的所有数据的名称、域名、路径、值都一一写到cookie管理器里,如下图jmeter的这个位置 

4、然后,在jmeter中,添加http请求,把cookie管理器中的这些参数,都当成参数传过去,假如cookie管理器中只有一个参数JSESSIONID,写接口时,就需要把JSESSIONID当成一个参数传过去,如下图 

5、这样就可以不需要登录,直接调用登录的cookie信息了 

四、个人自己操作实例:

1、谷歌浏览器打开调试,然后提交登录,获取session

 2、添加HTTP Cookie管理器,把session添加进去: 

 3、添加响应断言 

 4、执行,返回custname_0表示成功,custname_2表示失败 

 新增客商有规则需要校验,导致提交重复信息会失败,只有第一次才会成功  

注意:如果是在同一个线程组,根本不需要添加两个cookies的参数值,只需要添加一个无参数值的空的http cookie管理器,去掉下图的两个SESSIONID变量值 

下面是增加权限的截图: 

相关内容

热门资讯

【实验报告】实验一 图像的... 实验目的熟悉Matlab图像运算的基础——矩阵运算;熟悉图像矩阵的显示方法࿰...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
大模型落地比趋势更重要,NLP... 全球很多人都开始相信,以ChatGPT为代表的大模型,将带来一场NLP领...
Linux学习之端口、网络协议... 端口:设备与外界通讯交流的出口 网络协议:   网络协议是指计算机通信网...
kuernetes 资源对象分... 文章目录1. pod 状态1.1 容器启动错误类型1.2 ImagePullBackOff 错误1....
STM32实战项目-数码管 程序实现功能: 1、上电后,数码管间隔50ms计数; 2、...
TM1638和TM1639差异... TM1638和TM1639差异说明 ✨本文不涉及具体的单片机代码驱动内容,值针对芯...
Qt+MySql开发笔记:Qt... 若该文为原创文章,转载请注明原文出处 本文章博客地址:https://h...
Java内存模型中的happe... 第29讲 | Java内存模型中的happen-before是什么? Java 语言...
《扬帆优配》算力概念股大爆发,... 3月22日,9股封单金额超亿元,工业富联、鸿博股份、鹏鼎控股分别为3.0...
CF1763D Valid B... CF1763D Valid Bitonic Permutations 题目大意 拱形排列࿰...
SQL语法 DDL、DML、D... 文章目录1 SQL通用语法2 SQL分类3 DDL 数据定义语言3.1 数据库操作3.2 表操作3....
文心一言 VS ChatGPT... 3月16号,百度正式发布了『文心一言』,这是国内公司第一次发布类Chat...
CentOS8提高篇5:磁盘分...        首先需要在虚拟机中模拟添加一块新的硬盘设备,然后进行分区、格式化、挂载等...
Linux防火墙——SNAT、... 目录 NAT 一、SNAT策略及作用 1、概述 SNAT应用环境 SNAT原理 SNAT转换前提条...
部署+使用集群的算力跑CPU密... 我先在开头做一个总结,表达我最终要做的事情和最终环境是如何的,然后我会一...
Uploadifive 批量文... Uploadifive 批量文件上传_uploadifive 多个上传按钮_asing1elife的...
C++入门语法基础 文章目录:1. 什么是C++2. 命名空间2.1 域的概念2.2 命名...
2023年全国DAMA-CDG... DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义...
php实现助记词转TRX,ET... TRX助记词转地址网上都是Java,js或其他语言开发的示例,一个简单的...
【分割数据集操作集锦】毕设记录 1. 按要求将CSV文件转成json文件 有时候一些网络模型的源码会有data.json这样的文件里...
Postman接口测试之断言 如果你看文字部分还是不太理解的话,可以看看这个视频,详细介绍postma...
前端学习第三阶段-第4章 jQ... 4-1 jQuery介绍及常用API导读 01-jQuery入门导读 02-JavaScri...
4、linux初级——Linu... 目录 一、用CRT连接开发板 1、安装CRT调试工具 2、连接开发板 3、开机后ctrl+c...
Urban Radiance ... Urban Radiance Fields:城市辐射场 摘要:这项工作的目标是根据扫描...
天干地支(Java) 题目描述 古代中国使用天干地支来记录当前的年份。 天干一共有十个,分别为:...
SpringBoot雪花ID长... Long类型精度丢失 最近项目中使用雪花ID作为主键,雪花ID是19位Long类型数...
对JSP文件的理解 JSP是java程序。(JSP本质还是一个Servlet) JSP是&#...
【03173】2021年4月高... 一、单向填空题1、大量应用软件开发工具,开始于A、20世纪70年代B、20世纪 80年...
LeetCode5.最长回文子... 目录题目链接题目分析解题思路暴力中心向两边拓展搜索 题目链接 链接 题目分析 简单来说࿰...