JMeter(九):后置处理器(关联)

目录

JMeter(一):基础概念
JMeter(二):配置元件
JMeter(三):变量参数化
JMeter(四):监听器
JMeter(五):脚本录制
JMeter(六):断言
Jmeter(七):逻辑控制器
JMeter(八):定时器

后置处理器

后续操作的子件集合,对请求响应做一些处理,或者抓取响应数据,提取变量方便后续使用

场景:B测试需要使用A接口返回的数据,故需要对A接口的响应报文进行后置处理

比如一个登录接口,登录成功后有响应信息,响应里有特殊标志,如 IsSuccess=TrueMessage=登录成功,我们可以根据标志来判断,把标志打印出来或复制出来,此时就需要用到后置

1、JSON Extractor

路径:右击添加-->后置处理器-->JSON Extractor
作用:获取json格式的响应数据

演示案例:查看天气预报
1.1、添加HTTP请求,设置IP、方法、路径以及参数信息

JMeter(九):后置处理器(关联)_第1张图片
查看天气预报.png

1.2、添加JSON Extractor

  • variable names:变量名称,提取到的值存放在该变量中,后续通过该变量即可引用提取到的数据
  • json path expressions:格式为 $.XX.XX.XX$.必须要的,若有很多层级,用英文句号.隔开,若为空即默认取第一个数据
  • Default Value:未取到值的时候默认值

1.3、添加Debug PostProcessor
1.4、请求页面的注释,参数化,此处为${result}
1.5、添加查看结果树

JMeter(九):后置处理器(关联)_第2张图片
image.png

延升:若要提取多个值,怎么处理?

解决办法:Variable names 、JSON Path expressions及Default Values这3个字段的数量一定要一致,中间用英文分号;分隔,其中Default Values的值可以根据需要设置

JMeter(九):后置处理器(关联)_第3张图片
提取多个值.png

若取不到变量的值,它会根据Default Values定义的赋值为默认值,本次练习设的是0,也可以改成其他值

JMeter(九):后置处理器(关联)_第4张图片
取不到值就赋值为默认值.png

有些Json数据里面还嵌套了列表,那么用 $.XX[n].XX表示,n=0表示取第一行,n=1表示取第二行,以此类推
(PS:数组的索引从0开始表示第一个)

JMeter(九):后置处理器(关联)_第5张图片
Json数据里面还嵌套了列表.png
2、XPath Extractor

路径:右击添加-->后置处理器-->XPath Extractor
作用:获取xml格式的响应数据

  • 引用名称:抓取数据或响应后需要保存到哪个变量中
  • xpath query:路径 ,格式为 //节点.节点
  • 匹配数字:0随机,-1取所有值,以数组形式存储1;2.....**
  • 缺省值:未取到值的时候默认值
JMeter(九):后置处理器(关联)_第6张图片
XPath Extractor.png
3、正则表达式提取器(万能提取)

在测试过程中,许多接口的入参不是事先预知的,而是前一个接口的响应结果的某个字段(接口之间的依赖关系),这就需要用户能够动态的提取前一个接口的响应参数并传递出来。

如果用户需要将该字段提取出来作为下一个接口的入参,需要在该接口节点下添加一个“正则表达式提取器”

路径:右击添加-->后置处理器-->正则表达式提取器

  • 名称:可以写成名称+注释,方便识别,比如图中的可以改成正则提取申请单号
  • 引用名称:其他地方引用提取值的变量名称
  • 正则表达式:描述字符串排列的一套规则,用于将需要的数据提取出来(字符串的匹配)
    PS:()表示提取,要提取的内容需要用小括号括起来
  • 模板:表示使用提取到的第几个值,如果前面的正则表达式取了不止一个参数(多个括号括起来),那么这里需要指定参数的组别
    格式为$n$,可以是$1$,$2$等,表示解析到的第几个值给str。正则表达式的提取模式,值是从1开始的,0则对应的是整个匹配的表达式。如对于表达式s(.*) 值0对应str,值1对应tr
    $-1$:表示取所有值
    $0$:表示随机取值
    $1$:表示取第1个
    $2$:表示取第二个
    以此类推
  • 匹配数字(0代表随机 ):0 代表随机取值,-1 代表全部取值,其余正整数代表将在已提取的内容中,第几个匹配的内容
  • 缺省值:如果正则表达式没有查找到值,则使用此缺省值

比如提取页面上的申请单号438,看到DeBug的输出是正确的,如下:

JMeter(九):后置处理器(关联)_第7张图片
正则表达式提取器.png

假如匹配数字填的是-1,通过${variablename_1}的方式来取第1个匹配的内容,${variablename_2}来取第2个匹配的内容

JMeter(九):后置处理器(关联)_第8张图片
匹配数字为-1
PS:*和*?是不一样的,在上述的例子中使用正则(.*?)(懒惰模式)或者正则(.*)(贪婪模式)都是可行的

懒惰模式:也就是非贪婪模式,采用的是就近匹配原则,一旦找到结尾字符,就停止搜索
贪婪模式:找到一个结尾字符后,不会停止,直到找不到结尾字符为止,才会停止搜索


关于正则表达式,演示字符串:abcdcdcdefgphhhp345pythony_py

符号 含义 举例 输出
. 除换行符以外的任意字符 .python... 5pythonny_p
^ 边界限定,字符串的开始位置 ^abc abc
$ 边界限定 , 字符串的结束位置 py$ py
* 限定符, 0次、1次或多次前面的原子 py.*y pythony_py
? 限定符,0次、1次前面的原子,在找到第一个匹配项后停止 py.*?y pythony
+ 限定符,1次或多次前面的原子 py+n python
{n} 限定符,前面的原子刚好出现n次 ph{2} phh
{n,} 限定符,前面的原子至少出现n次 ph{2,} phhh
{n,m} 限定符, 前面的原子至少出现n次,至多出现m次 ph{1,2} phh
| 模式选择符,从中任选一个匹配 python|ph ph
() 模式单元符,将原子组合使用 (cd){1,} cdcdcd
4、CSS/JQuery Extractor

路径:右击添加-->后置处理器-->CSS/JQuery Extractor
只支持css,不支持JQuery

5、Debug PostProcessor

路径:右击添加-->后置处理器-->Debug PostProcessor

JMeter(九):后置处理器(关联)_第9张图片
Debug PostProcessor.png

设置为True时可以打印相关信息,一般保持默认设置

作用:一般在需要获取响应数据(正则、XPath、JSON提取器)时添加,方便在调试脚本时实时查看是否正确的提取到了所要的信息,不过还得添加查看结果树,因为脚本执行以后需要到结果树中查看打印信息

JMeter(九):后置处理器(关联)_第10张图片
Debug PostProcessor.png

你可能感兴趣的:(JMeter(九):后置处理器(关联))