Jmeter跨线程传递参数

前言:这里实现的功能是一个设计师提交案子给审核人审核(和设计师不是同一个人),所以请求接口的时候,HTTP信息头管理器里的用户认证用户需要用不一样的账号,因此需要有两个线程实现设计师提交审核,审核人进行审核的过程。Jmeter线程之间是相互独立,各个线程组互不影响,如果线程A要用线程B的响应结果作为请求参数,需要做以下处理。

提取参数需要用到后置处理器中的正则表达式提取器、BeanShell PostProcessor以及需要自行下载JSON Extractor的jar包插件。
下载地址:http://jmeter-plugins.org/downloads/file/JMeterPlugins-Extras-1.4.0.zip

1、选择具体线程右键,添加->后置处理器->正则表达式提取器。

正则表达式提取器.png

2、选择具体线程右键,添加->后置处理器->Bean Shell PostProcessor,将正则表达式提取器提取出来的内容设置成Jmeter的内置属性。

“__setProperty”函数可以把某参数的值设置成jmeter本身的内置属性,而jmeter的内置属性是所有线程组都可以调用的,是全局变量。各个线程组调用时,只需使用调用jmeter属性的函数“__P”来调用相应的属性即可。


BeanShell PostProcessor.png
String project_id=bsh.args[0];  //获取Bean Shell PostProcessor接收到的参数的第一个值
print(project_id);
${__setProperty(request_project_id,${project_id},)};   //调用函数__setProperty,把Bean Shell PostProcessor中的project_id的值赋值给request_project_id,并设置request_project_id为jmeter内置属性

3、将前面下载的jar包解压后获取lib\ext里的jar包放到Jmeter的目录下(apache-jmeter-3.2\lib\ext),重启Jmeter就生效。

JMeterPlugins-Extras存放.png

4、选择具体线程右键,添加->后置处理器->JSON Extractor,将Bean Shell PostProcessor提取出来的内容获取到,让其他线程使用。

JSON Extractor.png

5、其他线程使用时,需要用这种格式去获取变量:${__P(request_project_id,)}

全局变量使用.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。