场景:用户登陆后会本地会保存cookie,cookie是用来跟服务端验证此用户已经登陆过的重要信息,但是如何获取并在其他请求时将此cookie传递给服务器呢?
在线程组下面之直接添加HTTP Cookie管理器,Jmeter会自动将线程组下面的cookie值保存并在此线程组中其他API中传递的,首先,要确保jmeter.properties中CookieManager.save.cookies=true
![image.png](https://i-blog.csdnimg.cn/blog_migrate/771582d9b7db102ab16f1aed0d533258.webp?x-image-process=image/format,png)
image.png
那么,跨线程间怎么传递cookie?
获取参数值->设置为全局变量->调用参数,下面详细介绍一下操作步骤
-
通过抓包工具(Fiddler,Charles,network)等可知道cookie是在响应Header或者响应文本中返回可客户端的
响应信息
- 添加正则表达式获取cookie值,需要检查的响应字段需要选择【信息头】
Set-Cookie: PHPSESSID=(.*); path=/; HttpOnly
![正则式提取器](https://i-blog.csdnimg.cn/blog_migrate/2986fbddfd53e0b37d7a9310f972d1e4.webp?x-image-process=image/format,png)
正则式提取器
- 添加BeanShell PostProcessor,并将正则表达式提取器中的值设置为全局变量
${__setProperty(newPHPSESSID,${PHPSESSID},)};
![BeanShell PostProcessor](https://i-blog.csdnimg.cn/blog_migrate/ed368e976d1f9284c0e54fe1dae11a77.webp?x-image-process=image/format,png)
BeanShell PostProcessor
- 在其他需要调用的线程下添加HTTP Cookie管理器,并取出环境变量值
${__property(newPHPSESSID,,)}
![HTTP Cookie管理器](https://i-blog.csdnimg.cn/blog_migrate/f6817187c5f6ba89d478212a84fcbc65.webp?x-image-process=image/format,png)
HTTP Cookie管理器
-
最后运行线程组就ok了,接口A请求头中有cookie信息了
结果树
参考文档:
Jmeter如何保持cookie,让所有请求都能用同一个cookie,免去提取JSESSIONID
Jmeter获取Cookie并传递到下一个线程---跨线程后cookie找不到了
jmeter手动添加cookie及线程间cookie共享的2种方法