前言:这里实现的功能是一个设计师提交案子给审核人审核(和设计师不是同一个人),所以请求接口的时候,HTTP信息头管理器里的用户认证用户需要用不一样的账号,因此需要有两个线程实现设计师提交审核,审核人进行审核的过程。Jmeter线程之间是相互独立,各个线程组互不影响,如果线程A要用线程B的响应结果作为请求参数,需要做以下处理。
提取参数需要用到后置处理器中的正则表达式提取器、BeanShell PostProcessor以及需要自行下载JSON Extractor的jar包插件。
下载地址:http://jmeter-plugins.org/downloads/file/JMeterPlugins-Extras-1.4.0.zip
1、选择具体线程右键,添加->后置处理器->正则表达式提取器。

2、选择具体线程右键,添加->后置处理器->Bean Shell PostProcessor,将正则表达式提取器提取出来的内容设置成Jmeter的内置属性。
“__setProperty”函数可以把某参数的值设置成jmeter本身的内置属性,而jmeter的内置属性是所有线程组都可以调用的,是全局变量。各个线程组调用时,只需使用调用jmeter属性的函数“__P”来调用相应的属性即可。

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就生效。

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

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

网友评论