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

猜你喜欢

转载自blog.csdn.net/liyali2020/article/details/108451746
今日推荐