导读
- JMeter关联简介
- 正则表达式介绍
- 登录脚本调试
1、JMeter关联简介
JMeter中关联可以在需要获取数据的请求上,“右键”|后置处理器,然后根据需要选择即可。这里,我们介绍正则表达式提取器。
(1)正则表达式提取器
- 名称: 可以随意设置,名称最好有业务意义。
- 注释:可以为空,可以随意设置;
- Apply to:应用范围,4个选项;
- Main sample and sub-samples:匹配范围包括当前的父取样器及其子取样器
- Main sample only:匹配范围是当前父取样器;
- Sub-samples only:仅匹配子取样器;
- JMeter Variable:支持对JMeter变量值进行匹配;
- 要检测的响应字段:针对响应数据的不同部分进行匹配,共7个选项。
- 主体:响应数据的主体部分,排除Header部分;Http协议返回请求的主体部分就是Body;
- Body(unescaped):针对替换了转移码的Body部分;
- Body as a Document:返回内容作为一个文档进行匹配;
- 信息头:只匹配信息头部分的内容;
- Request Headers:只匹配请求头部分的内容;
- URL:只匹配URL链接;
- 响应代码:只匹配响应代码,比如200、304、404等;
- 响应信息:匹配响应信息,比如处理成功,返回“成功”字样或“OK”字样;
- 引用名称:匹配出来的信息通过此名称进行访问,比如,引用名称=name,则使用${name}来应用匹配出来的值;
- 正则表达式:正则表达式使用此串进行信息匹配;
- 模板:正则表达式可以设置多个模板进行匹配,在此可以指定运用哪个模板,模板自动编号, 1 1 指第一个模板,指第二个模板,依次类推。 0 0 <script type="math/tex" id="MathJax-Element-449">0</script>指全文匹配;
- 匹配数字:因为匹配的值有可能会有多个,如果这里填0,则代表从匹配的结果中随机取一个;可以与For Each Controller一起使用来遍历;
- 缺省值:如果没有匹配到可以指定一个默认值
- use empty deafult value:勾选的话,就把空作为默认值
2、正则表达式介绍
(1)学习地址:
- https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1700215?fr=aladdin
- http://www.runoob.com/regexp/regexp-syntax.html
(2)正则测试器
(3)JMeter匹配字符串,常用正则
一般(.+?)和(.*?)能够满足我们80%的使用场景。
- left(.+?)right
- left(.*?)right
left对应匹配目标的起始字符
right对应匹配目标的结束字符
比如下面这段文字
<div id="login-form">
<form onsubmit="return keepAnchorOnSignIn(this);" action="/redmine/login" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓" /><input type="hidden" name="authenticity_token" value="RMUPSOjNbzIfs4/qNIY4/I5FIELi6OE4i2W1i3frKB8X0m69h/OB2Z6ut8rihveBz2uXD6IFwInAoRwhlRcGbg==" />
想匹配这段文字中的authenticity_token的value值,我们就可以这样写
token\” value=\”(.+?)\”
左边界用token” value=”来固定,右边界用”来固定,中间()里边的是要匹配的内容
注意:引号需要转义
(4)适用性表达式
前面的两个正则可以搞定我们80%的场景,剩余20%该怎么整呢?
首先思考一下,上面的正则什么情况不使用。比如left和right不唯一,或者left、right唯一,但是为变量。
请参考文章:https://mp.weixin.qq.com/s/zWkm4MmE3E84RWvRCdg_jg
3、登录脚本调试
(1)添加正则表达提取器
http请求→添加→后置处理器→正则表达式提取器
(2)添加Debug PostProcessor用于验证
(3)书写正则表达式
大家可以仔细看看,登录和登出两个请求的token值是不一样的,登录的token是从前一个请求的响应中获取的;登出的token是从登录后的请求响应获取的,因此,我们需要分别添加。
(4)运行,查看结果