jmeter学习-使用cookie

1、同一线程组内不同线程共享cookie

1)jmeter默认不会保存cookies,需要加上cookie manager。 加一个空的cookie manager即可以自动保存cookie,并且能够在同一个线程组之间传递cookie。


2)如果变量参数要用到cookie,要把Cookies保存到线程变量中,要定义属性"CookieManager.save.cookies=true"(jmeter .properties中设置)。可以直接通过${COOKIE_xxxx}来获取。

2、手动设置cookie

需要注意的是域、路径必须填上,尤其是域。

JMeter会检查收到的cookies是否对URL有效。这意味着跨域的cookie不能被存储。如果你有窃听行为,或者想要存储跨域cookies,需要在jmeter.poperties中设置:“ CookieManager.check.cookies = false”。


3、跨线程传递变量

利用BeanShell PostProcessor设置全局变量,可以通过JMeterUtils.setProperty和JMeterUtils.getPropDefault方法实现。

1)在生成cookie的请求中添加beanshell postprocessor后置处理器,并添加如下脚本,把cookie保存在Jmeter属性参数中:

import org.apache.jmeter.util.JMeterUtils; 

JMeterUtils.setProperty(“cookie_name”, “cookie_value”);  //设置jmeter属性-全局变量

其中cookie_name和cookie_value分别换成你对应的cookie名称(不带COOKIE_前缀)和cookie值。

2)在需要使用cookie的另一个线程组的请求中添加beanshell preprocessor前置处理器,并添加如下脚本,取出cookie的值,并存入线程变量中:

import org.apache.jmeter.util.JMeterUtils; 

String value = JMeterUtils.getPropDefault(“cookie_name”); //获取jmeter属性

vars.put(“cookie_name”,value); //put该线程组的变量

这里的cookie_name和前面设置的名称一样。

然后在该线程组中就可以使用${cookie_name}来获取cookie的值,也就是实现了跨线程组传递cookie。

你可能感兴趣的:(jmeter学习-使用cookie)