Jmeter获取Cookie并传递到下一个线程
2016-12-23 18:14
344 查看
Jmeter是测试过程中会被用到的一个测试工具,我们即可用来进行压力的压测,也可以用来对接口进行功能检查,不仅仅是HTTP的结果,还有DB、TCP、FTP等等。当然它还有很多其它有用的功能,比如代理服务器、镜像服务器、telnet等等。今天主要说的是它的Cookie管理器,因为在使用这个功能的时候踩过了坑,也没有找到其他梳理过。
在Jmeter里对Cookie进行存取时需要用到HTTP Cookie管理器组件,具体位置在配置元件列表下,见下图:
![](https://img-blog.csdn.net/20161223175542344?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZml2ZTM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
通常我们都是在一个线程的Sampler里添加,因为每一个线程都应该有一个自己的Cookie管理器,添加成功后Jmeter的 Cookie 管理器的界面如下:
![](https://img-blog.csdn.net/20161223175911763?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZml2ZTM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
上面的图中主要存Cookie的操作,我们直接添加了一个JSESSIONID的cookie,具体的值是从一个变量中取出的;需要注意的是域、路径需要填上,尤其是域;因为Jmeter现版本默认不支持跨域的请求,不填的话设置的Cookie不会被带上。
接下来就是取Cookie的操作,通常取的Cookie都是从Response Header里取的,取的目的一般都是给另一个不同的线程来用,因为如果是同一个线程的不同次迭代的情况那么Jmeter会自动带上,无需我们设置。那取去cookie的步骤有哪些呢?
首先需要修改jmeter.properties文件
找到CookieManager.save.cookies=true并设置为true
保存配置文件重启jmeter
在需要取Cookie的线程里添加一个Http Cookie管理器
可以默认为空,但是一定要添加,否则是不会存储cookie变量的
经过上述几个步骤的操作,我们执行线程之后,获取到的cookie就会被保存在线程变量里,具体的变量名格式为COOKIE_xxxx,其中xxxx为具体的实际cookie名;这样在同一个线程内其它操作组件都是可以直接通过${COOKIE_xxxx}来获取的
提示:
文档中说cookie变量是线程内有效,线程外无效,但是实际测试同一个线程组的其它线程是可以直接访问的
如果是跨线程组的情况,我们还可以有其它的方式来进行cookie变量的共享,最方便的是下面这种方式
因为直接就可以取到也就没试了,原内容出自官网文档,http://jmeter.apache.org/usermanual/best-practices.html,而我踩的坑就是在取cookie的时候没有添加一个空的http cookie管理器,以及尝试了其它一些无效的变量共享的方式。
在Jmeter里对Cookie进行存取时需要用到HTTP Cookie管理器组件,具体位置在配置元件列表下,见下图:
通常我们都是在一个线程的Sampler里添加,因为每一个线程都应该有一个自己的Cookie管理器,添加成功后Jmeter的 Cookie 管理器的界面如下:
上面的图中主要存Cookie的操作,我们直接添加了一个JSESSIONID的cookie,具体的值是从一个变量中取出的;需要注意的是域、路径需要填上,尤其是域;因为Jmeter现版本默认不支持跨域的请求,不填的话设置的Cookie不会被带上。
接下来就是取Cookie的操作,通常取的Cookie都是从Response Header里取的,取的目的一般都是给另一个不同的线程来用,因为如果是同一个线程的不同次迭代的情况那么Jmeter会自动带上,无需我们设置。那取去cookie的步骤有哪些呢?
首先需要修改jmeter.properties文件
找到CookieManager.save.cookies=true并设置为true
保存配置文件重启jmeter
在需要取Cookie的线程里添加一个Http Cookie管理器
可以默认为空,但是一定要添加,否则是不会存储cookie变量的
经过上述几个步骤的操作,我们执行线程之后,获取到的cookie就会被保存在线程变量里,具体的变量名格式为COOKIE_xxxx,其中xxxx为具体的实际cookie名;这样在同一个线程内其它操作组件都是可以直接通过${COOKIE_xxxx}来获取的
提示:
文档中说cookie变量是线程内有效,线程外无效,但是实际测试同一个线程组的其它线程是可以直接访问的
如果是跨线程组的情况,我们还可以有其它的方式来进行cookie变量的共享,最方便的是下面这种方式
import org.apache.jmeter.util.JMeterUtils; String value = JMeterUtils.getPropDefault("name",""); JMeterUtils.setProperty("name", "value");另一种是下面的方式,
if (bsh.shared.myObj == void){ // not yet defined, so create it: myObj = new AnyObject(); } bsh.shared.myObj.process();
因为直接就可以取到也就没试了,原内容出自官网文档,http://jmeter.apache.org/usermanual/best-practices.html,而我踩的坑就是在取cookie的时候没有添加一个空的http cookie管理器,以及尝试了其它一些无效的变量共享的方式。
相关文章推荐
- jmeter不同线程组间的cookie传递
- Jmeter获取不到cookie(备注:前面和后面的几个步骤都可以获取到cookie)
- jmeter学习笔记(2)——上一个请求的结果传递给下一个请求使用
- 通过BeanShell获取UUID并将参数传递给Jmeter
- jmeter传递cookie 值
- jmeter中线程之间传递参数
- Jmeter有关cookie的获取
- jmeter获取cookie认证登录
- jmeter 使用cookie和jdbc获取注册 验证码
- [SoapUI] 获取Cookie,并循环遍历当前Project下所有的Test Suite,Test Case,Test Step,将Cookie传递给这些Test Step
- Jmeter从数据库获取数据当做变量,传递给接下来的接口
- Jmeter 线程之间传递变量
- HttpClient4.5.2 使用cookie保持会话——获取cookie之后如何传递它(2)
- HttpClient4.5.2 使用cookie保持会话——获取cookie之后如何传递它
- JMeter 线程之间传递变量
- jmeter解决不同线程组之间传递参数问题
- jmeter Http cookie 管理器初识 传递登录状态至后面接口
- Jmeter----跨线程传递cookies值
- 如何在ASP.NET中获取随机生成的cookie加密与验证密钥
- 如何在调用线程的时候传递参数