关联:适用于从已知请求中获取响应结果,从响应数据中提取目标信息,作为下一个请求的参数(或进行断言 用)
所谓关联, 就是第二个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\":"(.+?)"
=====
如果匹配的字符,已换行结尾,可以使用换行 “ ”结尾进行匹配, 例如提取Server的值nginx:
正则表达式:Server:(.+?)