Jmeter中传递cookie值,将请求传给服务器

发表于:2021-1-26 09:43

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:张小Di    来源:简书

#
Jmeter
分享:
场景:用户登陆后会本地会保存cookie,cookie是用来跟服务端验证此用户已经登陆过的重要信息,但是如何获取并在其他请求时将此cookie传递给服务器呢?
在线程组下面之直接添加HTTP Cookie管理器,Jmeter会自动将线程组下面的cookie值保存并在此线程组中其他API中传递的,首先,要确保jmeter.properties中CookieManager.save.cookies=true

那么,跨线程间怎么传递cookie?
获取参数值->设置为全局变量->调用参数,下面详细介绍一下操作步骤

方法一:
通过抓包工具(Fiddler,Charles,network)等可知道cookie是在响应Header或者响应文本中返回可客户端的
响应信息

添加正则表达式获取cookie值,需要检查的响应字段需要选择【信息头】
Set-Cookie: PHPSESSID=(.*); path=/; HttpOnly
其中,
引用名称:数据名称
正则表达式:参看正则式将匹配的数据提取出来
模板:表示使用提取到的第几个值,如:表示取第1个
匹配数字:0代表随机取值,1代表全部取值
缺省值:如果正则表达式未匹配到,即使用该值
正则式提取器

添加BeanShell PostProcessor,并将正则表达式提取器中的值设置为全局变量
${__setProperty(newPHPSESSID,${PHPSESSID},)};
BeanShell PostProcessor

同时,也可通过下面方式在BeanShell PostProcessor设置全局变量:
import org.apache.jmeter.util.JMeterUtils; 
JMeterUtils.setProperty("Cookie", "${PHPSESSID}");

在其他需要调用的线程下添加HTTP Cookie管理器,并取出环境变量值
${__property(newPHPSESSID,,)}
HTTP Cookie管理器

同样,亦可通过添加前置BeanShell PreProcessor处理器,并通过代码取出环境变量,并将它设置为局部变量;而后在线程组下方添加HTTP Cookie管理器并调用此参数
import org.apache.jmeter.util.JMeterUtils;
String value = JMeterUtils.getProperty("Cookie");
vars.put("Cookie",value);
BeanShell PreProcessor

HTTP cookie管理器

最后运行线程组就ok了,接口A请求头中有cookie信息了
结果树

方法2:
除了步骤3中使用的配置元件与方法1不一样外,整体操作类似
步骤3:在其他需要调用的线程下添加HTTP信息头管理器,并取出环境变量值

本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号