记录一次群答问:jmeter正则提取器轻松提取一个及多个值

图截得比较完整,电脑端浏览器放大倍数看吧^_^,手机端能够点击图片而后放大看。

一个正则提取问题

前几天,在Q群和微信群里被同时@,咨询这样一个问题:服务器返回:name="tom"  value="jerry" ,要提取出name的值和value的值。
其实,我以为这个需求是不明确的,究竟是name和value提取出来拼接为一个字符串呢?仍是分别保存name和value的值?我在群里问这位提问的群友,没答复,其实我都想忽略这个问题了,可是以为这仍是比较重要且基础的一个知识点,由于在jmeter中,正则表达式提取器是常常用到的,其实也比较简单,总之我比较喜欢用这个,也没遇到过提取不到的问题,可是正则却坑了一个又一个的测试人员,至关于作性能脚本就卡住了,就更别提压测的执行、监控、分析、定位、调优了(声明下,我用这个是用来作性能测试脚本)。
既然我说简单,那就一块儿跟着个人思路来操做一遍吧,我也当回顾练手了。前提是须要安装jmeter,参考: http://www.javashuo.com/article/p-ejbzgjag-gu.html

安装Dummy插件

这个插件能够模拟服务器返回,至关于一个mockserver了。
首先安装Dummy,选项--插件管理--可选插件--Dummy。

勾选后,点击右下方开始安装,安装完成后会自动重启jmeter。html



模拟响应

添加线程组,在线程组下添加Dummy取样器(在Dummy取样器的响应数据中填入模拟返回数据)、查看结果树监听器,在Dummy下添加正则表达式提取器、调试后置处理程序(用于查看提取结果的)。正则表达式

正则基础

参考:https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E4%B9%8B%E9%81%93 数组

. 匹配除“\r\n”以外的任何单个字符。要匹配包括“\r\n”在内的任何字符,请使用像“[\s\S]”的模式。浏览器

* 匹配前面的子表达式(也能够是一个字符)任意次。例如,zo*能匹配“z”,也能匹配“zo”以及“zoo”。*等价于o{0,}服务器

+ 匹配前面的子表达式一次或屡次(大于等于1次)。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。微信

? 匹配前面的子表达式零次或一次。例如,“do(es)?”能够匹配“do”或“does”中的“do”。?等价于{0,1}。性能

 组合:测试

.*具备贪婪的性质,匹配到不能匹配为止,最大匹配原则。spa

+或*后跟?表示非贪婪匹配,即尽量少的匹配,最小匹配原则。插件

.*? 表示在能匹配成功的前提下尽量少的匹配,最小匹配原则。

正则表达式提取器

Apply to:通常保持默认选择Main sample only,这个用得最多,若是有sub-samples,能够选择第一个选项

要检查的响应字段:用得最多的是主体,即header+body,能够从响应头,也能够从响应体提取

引用名称:变量名,获取到的值存储到这个变量中

正则表达式:根据实际状况填写

模板:$1$,表示第一个正则表达式,若是有2个正则表达式,写为$1$$2$

匹配数字(0表明随机):通常填1,表示第一个,0表示随机,-1表示所有(此时提取结果是一个数组,若是引用名称是user,也能够经过${user_1}的方式来取第1个匹配的内容)

缺省值:没匹配到就用缺省值,咱们能够设置一个,好比aaaaaa

name和value提取为一个字符串

运行结果

也能够用其它字符拼接,好比-,即若是模板写为:$1$-$2$,结果就是:nameandvalue=tom-jerry

name和value分别保存

name

value

运行结果

 

 

ok,就是这么简单,你以为呢?欢迎交流。加群获取jxm脚本。

相关文章
相关标签/搜索