Jmeter跨请求或跨线程传参
Jmeter跨请求或跨线程传参
说到传参,必须要提正则表达式提取器,这是最常用的参数提取器之一。
一、正则表达式提取器
1、什么时候用正则表达式提取器
把应用中动态变化返回的数据获取到,把它保存为一个参数,提供给后面需要用到的地方进行使用,也就是所谓的“关联”。
2、怎么用正则表达式提取器
首先确定需要提取的数据:
其次用正则表达式提取选择后置处理器——正则表达式提取器。将复制的文本粘贴到“正则表达式”一栏,将想要的信息替换成(.*?),其他具体信息请看下图。
最后,直接引用变量
在这里顺便介绍一下循环控制器(ForEach Controller)
循环控制器
我们用正则表达式获取到了询盘id的一个列表,用循环控制器可以把询盘id作为循环条件。
添加一个ForEach Controller。在循环控制下建一个http请求,就能把参数由循环控制器传递过来,达到依次访参数的目的。
二、跨线程组传参
如果涉及到跨线程组传参,必须用到“_setProperty”函数,它可以把某参数的值设置成jmeter本身的内置属性,而jmeter的内置属性是所有线程组都可以调用的,是全局变量。各个线程组调用时,只需使用调用jmeter属性的函数“_P”来调用相应的属性即可。跨线程传参只需要比同线程关联多一步,即利用BeanShall后置处理器,使用__setProperty函数,把某些参数变为全局变量。
比如说需要把id变为全局变量,以供在其他线程组使用。
再引用_setProperty函数转换的变量使,还需要使用_p函数。
运行一下,看一下结果:
第一个请求中的第三个询盘的id为119697,传给第二个请求的id ${id_3}也为119697。
三、jmeter后置处理器JSON Extractor
后置处理器还有另外一种:JSON提取器。使用方法大致与正则表达式一致,之所以会了解到这种方法,是因为有一次我用正则表达式提取不到想要的值。接口返回的数据格式如下图:(我要提取的是data数据列表下的“userId”)
JSONExtractor:
重点是JSON路径表达式:$.XXX