Jmeter脚本增强之关联--正则表达式提取器(8)

关联:适用于从已知请求中获取响应结果,从响应数据中提取目标信息,作为下一个请求的参数(或进行断言 用)

所谓关联, 就是第二个Requst, 使用第一个Request中的响应数据

  • 使用步骤:在【登录】请求  右键-->后置处理器 选择需要的关联方式【正则表达式提取器】(例如:用户登录后,将userID提取出来,传递给后续的请求)

 

  • 关键点:怎样设置正则表达式,来提取目标信息?

纠正一下图上的描述:

  • 模板:$N$引用起来,指的是有多个提取表达式时,取第几个表达式的值,值从1开始 (值0时,引用名=所有提取表达式的值)

比如:正则表达式("id":(.+?),"pageSize":(.+?),"firstIndex":(.+?),)  这整个是一个表达式,而模板:$1$,$3$ 指只需要获取id 和firstIndex的值。

  • 匹配数字(0代表随机):0代表随机,-1代表所有,其余正整数代表将在已提取的内容中,匹配第几项

比如:正则表达式就是:"id":(.+?), 在响应信息中有多个id时,取第几个id的值,匹配数字填写3,就是指就取第3个id的值。

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

.  表示匹配任意字符

+ 表示匹配一个或者多个

?表示匹配到结束为止

怎样看正则表达式提取到的值正确呢,可以调试

方法一、添加Debug sampler

(用Debug取样器可以方便tester查看系统有哪些变量)

 

 

方法二、引用提取的变量,此处给debug名称 后面赋值userID的值

 

=====================================

  • 匹配多个值

引用时分别这样写:${userID_g1},${userID_g2}(下面截图中,是两个相邻的参数)

 

不行是指userID不能同时提取id、pageSize的值,$1$只能提取id的值,要提取pageSize的值需要加上$2$

  

==似乎不纠正,也无妨呢(引用时,都要加_g1 或_g2)===========

==如果模板是 $0$==,对应的是整个匹配的表达式===================================

 

Question1:如果要同时匹配下面的stuId 和 id(它们不是相邻的参数),正则表达式需要调一下(后续学习正则表达式的,才能搞定),或者用两个正则表达式提取器

 

解决办法一,写出它们之间的所有参数,如下:

参照:https://blog.csdn.net/hujyhfwfh2/article/details/80551299

=======================================================================================================

  • 扩展阅读:单模板多数据、多模板单数据、多模板多数据

参照:https://wenku.baidu.com/view/e668f5f5b9f67c1cfad6195f312b3169a451eaf0.html  正则表达式的进一步讲解

 

 

  

=====

PS:(.+?)  和     (.*?)  的区别:

(.+?)提取1个字符串及以上,不要太贪婪,在找到第一个匹配项后停止;         

(.*?)提取0个字符串及以上,要取的值是空值的时候可以取得到。

=====

正则表达式中有转义符(例如: \  ?),需要进行转义:

例如:id?test\":"1234" ,我们想要匹配出1234。

一个合适的正则表达式是: id\?test\\":"(.+?)"

=====

如果匹配的字符,已换行结尾,可以使用换行 “\n”结尾进行匹配, 例如提取Server的值nginx:

   正则表达式:Server:(.+?)\n

 

posted @ 2019-07-04 15:48  幸福在今天  阅读(271)  评论(0编辑  收藏  举报