Jmeter关联

概念:

从上一条请求中获取数据,使用在下一条请求中的过程。

场景:

1. 对http://www.baidu.com进行2次访问;
2. 第一次获取title值,第二次把获取的值作为参数名(title)的参数值附加请求中。

方案1 正则表达提取器

Jmeter关联_第1张图片

参数设置

Jmeter关联_第2张图片

添加,使用变量的请求

Jmeter关联_第3张图片

查看结果:

 title提取成功,并在下一个请求使用Jmeter关联_第4张图片

 正则提取其参数详解

1. 引用名称:下一个请求要引用的参数名称,如填写title,则可用${title}引用它。
2. 正则表达式:制定规则的公式
   公式模板:前缀识别()后缀识别,开始结束的边界
   ():括起来的部分就是要提取的数据
       1) .:匹配任何字符串。
       2) +:一次或多次。
       3) ?:在找到第一个匹配项后停止,不加问号是取到最后一个匹配项
       4) *:匹配规则内所有字符串

在线正则表达式测试:https://tool.oschina.net/regex/

3. 模板:$n$格式;当正则表达式中有多个括号时,需要取第几个括号中的值保存为变量
4. 匹配数字:当一个变量(括号)中有多个值时,取第几个;-1所有、0随机、N第N个
5.缺省值:如果参数没有取到值,给一个默认值让它取认值让它取

方案2 Xpath提取器

Jmeter关联_第5张图片

参数设置

Jmeter关联_第6张图片 引用变量的两种方式

Jmeter关联_第7张图片查看结果:

Jmeter关联_第8张图片

Xpath提取器参数详解: 

1. Use Tidy?:当需要处理的页面是HTML格式时,必须选中该选项。
       1) Tidy:一种HTML格式化模板
2. 引用名称:存放提取出的值的参数名称(被引用时使用)。
3. XPath Query:用于提取值的XPath表达式
4.匹配数字:-1所有、0随机、N第N个
5.缺省值:结果不存在的时候使用默认值

两种提取器的区别

建议: 如果从标签文档提取数据建议使用 XPath 提取器,如果从非标签文档提取数据建议使用正则表达式提取器
注意: 正则表达式提取器既可以使用于普通文本也可以使用于标签文本, 作用范围比 XPath 更广

JSON提取器

适用于返回数据为JSON格式的场景

Jmeter关联_第9张图片

 注:JSON Path($开始,上下级用.)​​​​​​​例如:$.weatherinfo.city


跨线程组关联

需求::在之前的案例基础上,将请求A和请求B设置进不同的线程组,且设置了线程组的执行顺序,可以保证 A先执 行,B后执行,但是关联失败,为什么?

原因: 提取器提取出的变量作用域局限于当前线程组,其他线程组不可以直接调用,对于不同的线程组要使用Jmeter属性来传值

方案: 将请求A中提取的结果设置值为Jmeter属性,请求B使用该属性

实现:

  • __setProperty函数:将值保存成jmeter属性
  • __property函数:在其他线程组中使用property函数读取属性
  • 注:setProperty函数需要通过BeanShell取样器来执行(BeanShell取样器作用:执行函数和java脚本)

1、将请求A的数据导出到公共空间( __setProperty)

Jmeter关联_第10张图片

调用函数导入变量至公共空间(添加专门的组件BeanShell取样器)

Jmeter关联_第11张图片

Jmeter关联_第12张图片

2、请求B从公共空间调用数据 (__property) 

Jmeter关联_第13张图片 Jmeter关联_第14张图片

查看结果 

Jmeter关联_第15张图片

 拓展:可以使用 非测试元件下的属性显示查看公共空间的数据

Jmeter关联_第16张图片

Jmeter关联_第17张图片

你可能感兴趣的:(jmeter)