jmeter正则表达式_Jmeter系列(五)_正则表达式关联

jmeter中,接口自动化的关键在于参数关联。比如需要登录的接口,如何调用登录口令?一个增删改查的闭环,如何将接口参数上下传递?下面就以实际的例子来仔细说一说

1:登录接口

这里有一个实际的登录接口,在响应中返回了一串token,如下图

f0f8cef0f5e68468c9d1f683dcf578e5.png

那么我们在接下来的接口-经验库列表中,就必须带入这一串token,否则响应报错,如下图所示  

d20103744980b51ee2e2ff99b10916e8.png

 2d37e2bdfd86fd9aa110d92cb871c452.png

如何获取登录的口令呢?这里详细说明一下,如图所示   

d68c370561eeebffbd9fce83cfa5a715.png

4d7dd5f66b14555971c3b881da55d811.png

在接下来的接口中可以将获取的token作为变量调用,变量名为${center-token},如下图

d07568b8c413671821f320fbd3d0ffe2.png

观察请求头,发现传入了一串token,并且响应结果正确

d9e8003a4fabdb2894757b7e07141498.png

 d53a5779ddd7605afcde05685a43bb41.png

 自此,一个完整的登录关联就结束了。后续接口直接调用该token就可以。我们接下来继续说其它的参数关联

比如一个增删改查流程,想要做自动化检验就必须形成一个闭环,那么删除-修改-查看就必须调用同一个必填参数,例如唯一性的id。下面还是实例演示 

我先新增一个经验库,可以看到结果中返回了一个id,我在后续接口中都必须调用此唯一性的id

e72853507cff13d0a34a02eb04946b7d.png

接下来写一个正则将其取出,注意与之前token正则的不同之处

049f1929c3992458e6c8ea698917d89d.png

后续接口可以调用此参数,并正确响应

3dfb73fe4144df7f65f37ff5523614ec.png

  53f682fed6c55531324f5ed114ab3d08.png

好了,一个完整的登录-查看-删除的流程到这里就可以结束了~下面是结尾彩蛋

上述的正则都是获取单个的参数,那么如果要传入一组参数要怎么写呢?

429f11dd7aa3798af87f65e246c3df2f.png

修改正则表达式

312df56436bc80c208dbe4fe586ed93c.png

结果中可以看到传入了一整个数组  

8d8d9bb49371bd0730180ece17d5790e.png

正则提取器核心用法:

它通过正则表达式获取接口响应,并传入下个接口

引用名称:定义一个变量,供后续请求引用

一般(.+?)和(.*?)能够满足我们80%的使用场景。所以,一般的

正则表达式都可以写成下面这2种

左边界(.+?)右边界

左边界(.*?)右边界

left对应匹配目标的起始字符

right对应匹配目标的结束字符

正则表达式:利用正则将需要的数据提取出来

() 括起来的部分就是需要提取的,对于你要提的内容需要用小括号括起来

.    点号表示匹配任何字符串

+   一次或多次

?   在找到第一个匹配项后停止

模板:用$$引用起来,如果在正则表达式中有多个正则表达式(多个括号括起来),则可以是$N$等,表示提取第N个括号里面的值

匹配数字-1代表提取所有值,此时提取结果是一个数组,其余正整数代表第几个匹配的内容被提取出来。如果匹配数字选择的是-1,后续可以通过${XXX_1}的方式来取第1个匹配的内容,${XXX_2}来取第2个匹配的内容。0表示随机匹配一个值

缺省值:正则匹配失败时取的值

例1:提取第一个Name

a3a1281fdfb224590899c494ff9049a4.png

943bcdbb6819d38939fa39583d1a97ae.png

13e388f064621980fba9453934d4fb2c.png

例2:提取全部Name

abfa89ad36f787e78d7b22f4ba9bbddd.png

455475cf4496fa8bdb393c7efd7bf611.png

例3:表达式同时提取Name和population

f8c8148d51d61ee451ead621fc34b5e3.png

d0ca9e3ead0907fd50bfd0a5e249ed67.png

例4:拆分身份证号码,提取生日

一个18位的身份证号码,前1-6位是地区,7-14位是生日,15-17位是顺序码,最后1位是校验码,试图通过正则从身份证号中提取地区和生日

正则表达式:

{"(.{6})(.{8})(.{3})"}

(.{6}):任意字符匹配6次,对应匹配结果中的前6位字符(地区)

(.{8}):任意字符匹配8次,对应匹配结果中的第7-14位字符(生日)

从身份证号码中取出地区和生日,对应的正则表达式为:

(.{6})(.{8})(.{3})(.)

匹配第二组→$2$

a02a7bdb7f47c9933ff52531999ffc97.png

d64db1eb56c07a84cc42e1ba4b89dcd0.png

例5:条件判断取值

提取population=800的城市

3ace42b35c9696bbd843e16fb4e2f682.png

e2a76a93db7db206dcbe2ff1dc24e46e.png

b257dadb940ef56601efbddcf73e9983.png

点赞!转发!支持小编!

加入QQ群317765580获得jmx测试脚本

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值