过年前产假回来,jmeter许多常识陌生了,这两天打开jmeter探索了几下,老了记不住,照旧筹备弄个jmeter系列漫笔吧。
言归正传,利用jmeter时常常有这样的环境:一个完整的操纵流程,需先完成某个操纵,得到某个值或数据信息,然后才气举办下一步的操纵(也就是常说的关联/将上一个请求的响应功效作为下一个请求的参数); 在jmeter中,操作正则表达式提取器来轻松辅佐我们完成这一行动。正则表达式就是用于描写这些法则的东西。换句话说,正则表达式就是记录文本法则的代码。进批改则表达式最好就是从实例下手。下面让我们进入实例。
实例1:从JDBC查询数据,并提取查询功效1、新建线程组并把相关jar放到/lib或/lib/ext目次、添加JDBC Connection Configuration等,此处省略,直接附上截图
2、添加JDBC Request,Query Type=Select Statement,Varibale name=MySQL。发起在数据库东西执行一次后,在后头察当作果树时做比拟,查抄是否提取正确。
3、在JDBC Request下建设正则表达式提取器,在JDBC Request元件下右击【添加】-【后置处理惩罚器】-【正则表达式提取器】即可。本例子查询两列,所以需建设两个正则表达式提取器
4、设置提取第一列字段,
Apply to凡是是Main sample only,
要查抄的响应字段视环境选择,在此例选【主体】,
引用名称填id,即下一个请求要引用的参数名称,利用名目${id},留意引用名称定名不要跟线程组内其他变量名称反复
正则表达式,则是本文章重点,这里填([a-zA-Z0-9-]{1,}) ,
():括起来的部门就是要提取的。
.:匹配任何字符串。
+:一次或多次。
?:不要太贪婪,在找到第一个匹配项后遏制。
模板,选择第一个匹配的字段,填$1$,用$$引用起来,假如在正则表达式中有多个正则表达式,则可以是$2$$3$等等,暗示理会到的第几个值给id。如:$1$暗示理会到的第1个值
匹配数字,0代表随机取值,-1暗示全部,0随机,1第一个,2第二个,
缺省值假如参数没有取获得值,那默认给一个值让它取。可填可不填,看详细利用场景。
5、设置提取第二列字段
Apply to填Main sample only,
要查抄的响应字段选【主体】,
引用名称填phone,后头请求利用变量时名目${phone},
正则表达式,填(\d{10,}) ,
模板,选择第一个匹配的字段,填$1$,
匹配数字,除了0,发起填1,
缺省值不填
6、查抄提取器提取功效,有两种要领校验功效。第一种。别的一个,就是不利用请求,。
要领1:添加Debug PostProcessor也可打印所有变量的值,添加即可,然后运行功效
,在察当作果树可以看到提取变量的值是否正确
要领2:引用到下一个请求
实例2:从登录响应请求头提取JSESSIONID
1、继承在实例1的基本上,描写实例2。添加HTTP请求,用于登录
运行一次,在察当作果树看到取样器功效有Set-Cookie: JSESSIONID。
2、在登录HTTP请求元件下右击【添加】-【后置处理惩罚器】-【正则表达式提取器】即可。正则表达式填写:(?<=Set-Cookie: JSESSIONID=)\w+\b
3、在线程组内部站点下建设HTTP Cookie打点器,并引用正则表达式提取的引用变量JSESSIONIDw。名目为${JSESSIONIDw}
4、运行一次,在察当作果树其他需要登录才气请求的请求查抄
实例3(简朴):提取单个字符串