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

目录

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

后置处理器

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

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

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

1、JSON Extractor

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

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

查看天气预报.png

1.2、添加JSON Extractor

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

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

image.png

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

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

提取多个值.png

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

取不到值就赋值为默认值.png

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

Json数据里面还嵌套了列表.png
2、XPath Extractor

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

  • 引用名称:抓取数据或响应后需要保存到哪个变量中
  • xpath query:路径 ,格式为 //节点.节点
  • 匹配数字:0随机,-1取所有值,以数组形式存储1;2.....**
  • 缺省值:未取到值的时候默认值
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的输出是正确的,如下:

正则表达式提取器.png

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

匹配数字为-1
PS:*和*?是不一样的,在上述的例子中使用正则<title>(.*?)</title>(懒惰模式)或者正则<title>(.*)</title>(贪婪模式)都是可行的

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


关于正则表达式,演示字符串: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

Debug PostProcessor.png

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

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

Debug PostProcessor.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,458评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,454评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,171评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,062评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,440评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,661评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,906评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,609评论 0 200
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,379评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,600评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,085评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,409评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,072评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,088评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,860评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,704评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,608评论 2 270

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • 转载自:https://www.cnblogs.com/houzhizhe/p/6838731.html JMet...
    夏了夏夏夏天阅读 1,011评论 0 0
  • 1 Jmeter安装配置 使用Jmeter前首先要安装JDK,配置JDK环境变量。Jmeter不需要安装,下载后...
    茶小汐阅读 2,889评论 0 8
  • Json 作为一种数据交换格式在网络开发,特别是 RESTful(Representational State T...
    道韫阅读 14,601评论 0 22
  • iOS的多线程跟其他像c语言创建的线程的概念不太一样。 多线程模型为一个个block组成的queue来实现多线程编...
    明将阅读 438评论 0 8