jmeter 跨线程组传递参数

第一步,先获取到要跨线程组传递的参数值。新增一个正则表达式提取器。

jmeter 跨线程组传递参数_第1张图片

提取需要获取的值。

jmeter 跨线程组传递参数_第2张图片

第二步,把获取的值进行设值。主要是为了在其他线程组中可以获取到该参数值。

第三步,获取设置的值,在其他线程组进行使用。

新建BeanShell后置处理器:BeanShell PostProcessor

jmeter 跨线程组传递参数_第3张图片

方法一:使用__setProperty函数进行设置全局变量,该函数使用方法:

设置值:${__setProperty(key,value)}; #此处的key不需要写成“key”

获取值:${__P(“key”)};  

${__P(变量名)} 基本等同于${__property(变量名)}

${__P(init,2)} , ${__property(init,start,200)}

可以自行定义变量名称,及变量的默认值  

P 变量名为init, 值为2 ,使用的时候直接${__P(init,2)}就可以,改变量的结果为2 

${__property(init,start,200)} 变量名为init, 默认值为200,同时会将200默认传给start这个变量,start可进行再使用 ${start}

P和property的区别就是是否将第一个变量的值存储到另外一个变量中

设置值:

实际应用如下:

jmeter 跨线程组传递参数_第4张图片

 

获取值:

jmeter 跨线程组传递参数_第5张图片

 

方法二:

设置值:使用vars和props,props 和 vars 主要有两点区别:

1.vars 只能在当前线程内使用,props 可以跨线程组使用
2.vars 只能保存 String 或者 Object,props 是 Hashtable 对象

使用方法:

设置值:vars.put("key","value")

获取值:vars.get("key","value")

vars和props都有put和get方法 ,但是由于我们要操作的是跨线程组的,所以只能使用props进行put值。

设置值:

jmeter 跨线程组传递参数_第6张图片

获取值:

jmeter 跨线程组传递参数_第7张图片

测试结果:

jmeter 跨线程组传递参数_第8张图片

 

注:在第二个线程组中,我使用的是 BeanShell前置处理器BeanShell PreProcessor进行的取值,获取到值后,可以使用vars函数进行设置值,在HTTP request 中使用。

示例如下:

jmeter 跨线程组传递参数_第9张图片

jmeter 跨线程组传递参数_第10张图片

测试结果:

jmeter 跨线程组传递参数_第11张图片

附、Bean Shell常用内置变量
log:写入信息到jmeber.log文件,使用方法:log.info(“This is log info!”);
ctx:该变量引用了当前线程的上下文,使用方法可参考:org.apache.jmeter.threads.JMeterContext。
vars - (JMeterVariables):操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),它是测试用例与BeanShell交互的桥梁,常用方法:
a) vars.get(String key):从jmeter中获得变量值
b) vars.put(String key,String value):数据存到jmeter变量中
props - (JMeterProperties - class java.util.Properties):操作jmeter属性,该变量引用了JMeter的配置信息,可以获取Jmeter的属性,它的使用方法与vars类似,但是只能put进去String类型的值,而不能是一个对象。对应于java.util.Properties。 
 a) props.get("START.HMS");  注:START.HMS为属性名,在文件jmeter.properties中定义 
 b) props.put("PROP1","1234"); 
prev - (SampleResult):获取前面的sample返回的信息,常用方法:
a) getResponseDataAsString():获取响应信息
b) getResponseCode() :获取响应code
sampler - (Sampler):gives access to the current sampler
更多方法可参考:org.apache.jmeter.samplers.SampleResult

你可能感兴趣的:(jmeter)