Jmeter关联

时间:2024-07-19 07:19:34

案例脚本实现:选择商品加入购物车

  客户端发送一个登录的HTTP请求,服务端返回一个带着token的响应,后续发出一个带token信息的加入购物车的HTTP请求,返回响应。

关联:当请求直接由依赖关系的时候,比如一个请求的入参是另一个请求返回的数据,这时候就需要用到关联处理。

当有关联关系的俩个请求在同一个线程组中时,可以使用下面三种提取器的变量来实现数据传递。

但是如果在不同的线程组里面,不可用,这时候就用到Jmeter属性。JSON提取器+Jmeter或者其他另外两种提取器+Jmeter属性。

Jmeter中常用的关联方法:

---正则表达式提取器

---XPath提取器

---JSON提取器

正则表达式提取器:

正则表达式

就是一个公式,或者说是一套规则,使用这套规则可以从任意字符串中提取出想要的数据内容。

. : 通配符,可以代表任意字符(除换行回车)。

* : 代表前面的字符出现0次或者多次。

.* : 找到左边界值,往右查找右边界,找到最后面的有边界,中间的所以数据都被记录下来。

左边界(.* ?)右边界:可以提取出想要获取的数据内容。

? : 代表非贪婪匹配,找到左边界之后,往右查找匹配的右边界,只要右匹配的右边界就停止继续查找;再次重新查找左右边界。

案例:原始文本如下,要求是匹配出城市号,地区号,个人号码三组。

021-1234-1234

022-1234-1235

正则表达式结果:(.*?)-(.*?)-(.*?)\n

通过一个正则表达式可以提取出多组数据,每组数据设置对应的左右边界。

正则表达式提取器:

作用:针对任意格式的响应数据进行提取

位置:测试计划---》线程组---》HTTP请求---》右键添加后置处理器---》正则表达式提取器

引用名称:存放提取出的值的参数名称,供下一个请求引用,如填写title,则可以用${title}引用它。

正则表达式:():括起来的部分就是要提取的

. : 匹配任何字符串

+  : 一次或者多次

? :不要太贪了,在找到第一个匹配项后停止。

模版:表示我们要找到正则表达式的第几组值,用$$引用起来,如果在正则表达式中有多个提取值,则可以用$2$,表示解析到第几组值给title,如:$1$表示解析到的第1组值。

匹配数字:代表我们提取出来的那一组值,是让他返回那些数据。0代表随机取值,-1代表全部取值,1代表取第一个值。

缺省值:如果参数没有取得到值,那默认给一个值让他取。

XPath提取器

作用:针对HTML格式的响应结果数据进行提取

位置:测试计划---》线程组---》HTTP请求---》右键添加后置处理器---》XPath提取器 

Use Tidy:当需要处理的页面是HTML格式时,必须选中该项。当需要处理的页面 的ML或者是XHTML时,取消选中。

引用名称:存放提取出的值的名称

XPath Query:用于提取值的XPath表达式。//表示。如果提取网页的tltle值,则//title。

匹配数字:如果XPath路径查询出许多结果。则可以选择提取哪个。0表示随机,-1表示提取所有结果,1表示第1个值

缺省值:参数的默认值


JSON提取器

作用:针对JSON格式的响应结果数据进行提取。

位置:测试计划---》线程组---》HTTP请求---》右键添加后置处理器---》JSON提取器

Name of created variables:存放提取出的值的参数名称。

JSON Path Expression :JSON路径表达式

Match to :如果JSON路径匹配出许多结果,则可以选择提取哪个。0:表示随机,-1表示提取所有结果,1表示第一个结果。

Default Values:参数的默认值。

案例:提前某个城市的天气,返回城市名称,在传递给百度。

Jmeter属性

_setProperty函数:将值保存成Jmeter属性。借助BeanShell取样器来执行。

_property函数:在其他线程组中使用此函数读取属性

步骤:添加线程组1;添加HTTP请求-天气;添加JSON提取器;添加BeanShell取样器(将JSON提取器提取的值保存为JMeter属性);添加线程组2,添加百度HTTP请求(读取JMeter属性);查看结果树。

注意:因为是两个线程组串行执行,别忘了勾选测试计划中的独立运行。