Jmeter(三)关联之正则表达式提取器

我们在用Jmeter做接口或者性能测试时,经常会碰到第二个请求提交的的参数要从第一个请求返回的参数中获取,而这些参数值并不是固定的,是动态变化的,这种场景就要用到关联

Jmeter提供了一种叫做正则提取器的组件来提取数据。

场景:

通过下面这个接口可以获取到某个城市的天气

http://www.weather.com.cn/data/cityinfo/101280601.html

但这里面有一个城市代码(101280601)我们并不知道,它需要通过另一个接口查询出某个城市的代码,然后再填充到上面的接口中,查询城市代码的接口

http://toy1.weather.com.cn/search?cityname=深圳

到这里整个解决思路就清晰了:

1、添加第1个请求GetCityCode用来获取城市的编码

2、用正则提取器来提取城市编码

3、添加第2个请求GetWeatherInfo用来获取天气信息,请求消息中的城市编码为正则提取的编码

具体操作如下:

1、新建一个HTTP请求GetCityCode,填写请求信息

2、添加一个正则正则表达式提取器

3、添加第2个HTTP请求GetWeatherInfo,填写请求信息,这里的${citycode}就是获取正则表达式提取的参数值,citycode变量名与正则表达式提取器中的“引用名称”中填写的变量名一致

4、运行,查看请求消息

正则表达式提取器:

正则表达式提取器:允许用户从服务器的响应中通过使用perl的正则表达式提取值。该元素会作用在指定范围取样器,用正则表达式提取所需值,生成模板字符串,并将结果存储到给定的变量名中。

APPly to:作用范围(返回内容的断言范围)

Main sample and sub-samples:作用于父节点的取样器及对应子节点的取样器

Main sample only:仅作用于父节点的取样器

Sub-samples only:仅作用于子节点的取样器

JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称)

要检查的响应字段:需要检查的响应报文的范围

主体:响应报文的主体

Body(unescaped):主体,响应的主体内容且替换了所有的html转义符,注意html转义符处理时不考虑上下文,因此可能有不正确的转换,不太建议使用

Body as a Document:从不同类型的文件中提取文本,注意这个选项比较影响性能

Response Headers:响应信息头

Request Headers:请求信息头

URL:统一资源定位符,即Internet上用来描述信息资源的字符串

Response Code:响应状态码,比如200、404等

Response Message:响应信息

引用名称(Reference Name):Jmeter变量的名称,存储提取的结果;即下个请求需要引用的值、字段、变量名(例子中我提取的是citycode),如果在下个请求中想引用这个变量,直接:${引用名称}

正则表达式(Regular Expression):使用正则表达式解析响应结果,“()”表示提取字符串中的部分值,请不要使用“||”,除非你本身需要匹配这个字符。

下面是常用的正则表达式操作符:

模板(Template):从匹配的结果中创建一个字符串,这是通过正则表达式匹配出来的一组值,意为使用提取到的第几个值(可能有多个值匹配,因此使用模板);从1开始匹配,以此类推.

参数可以在取值模板组合使用,例如:“11-22”作为模板得到的值是使用“-”连接的第一个待匹配内容与第二个待匹配内容组合而成的字符串。

匹配数字(Match No):正则表达式匹配数据的结果可以看做一个数组,表示如何取值:0代表随机取值,正数n则表示取第n个值(比如1代表取第一个值),负数则表示提取所有符合条件的值。

缺省值:匹配失败时候的默认值;通常用于后续的逻辑判断,一般通常为特定含义的英文大写组合,比如:ERROR

在这里大多数人会对这个模板匹配数字比较懵逼,我们先把第一个请求GetCityCode返回的消息放到正则表达式测试一下

可以看到,一共4个匹配结果,如果我们需要获取到第2个匹配结果101200202009,只需要把匹配数字改为2

我们再把正则表达式改为(\d{9})~(\w*)~,再看一下

如果我们要获取hubei这个参数值,只需要把模板改为$2$,匹配数字改为2就行了

原文地址:https://www.cnblogs.com/eastonliu/p/10230421.html

时间: 2024-10-06 07:25:11

Jmeter(三)关联之正则表达式提取器的相关文章

JMeter学习-009-JMeter 后置处理器实例之 - 正则表达式提取器(二)多参数获取

前文简述了通过后置处理器 - 正则表达式提取器 获取 HTTP请求 响应结果中的特定数据,未看过的亲,敬请参阅 JMeter学习-008-JMeter 后置处理器实例之 - 正则表达式提取器(一). 此文主要对正则表达式提取器的 正则表达式.模板.匹配数字,三者的关系,做进一步的讲解. 截取商品列表响应结果数据中的一段商品数据如下所示: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 {     "s

Jmeter关联,正则表达式提取器使用1

 一.Jmeter关联的方式: Jmeter中关联可以在需要获取数据的请求上 右键-->后置处理器 选择需要的关联方式,如下图有很多种方法可以提取动态变化数据: 二.正则表达式提取器: 1.比如需要提取如下响应文本中的 "<title>百度一下,你就知道</title>" 里面的 "百度一下,你就知道": 2.设置正则表达式提取器: 说明: (1)引用名称:下一个请求要引用的参数名称,如填写title,则可用${title}引用它. (

jmeter正则表达式提取器--关联

http://desert3.iteye.com/blog/1394934 1.http://www.cnblogs.com/quange/archive/2010/06/11/1756260.html 2.http://blog.csdn.net/zhangren07/archive/2010/10/15/5944158.aspx <input type="hidden" name="hidName" value="(.*)">  

JMeter学习-011-JMeter 后置处理器实例之 - 正则表达式提取器(三)多参数获取进阶引用篇

前两篇文章分表讲述了 后置处理器 - 正则表达式提取器概述及简单实例.多参数获取,相应博文敬请参阅 简单实例.多参数获取. 此文主要讲述如何引用正则表达式提取器获取的数据信息.其实,正则表达式提取器获取的数据,均可看做一个变量(单个数据,此处指所需获取的测试相关数据)或数组(多个数据),通过引用变量或者数组的数据,达到应用其数据的目的.下面针对此两种方式进行介绍. 第一种:单数据变量 但数据变量的应用比较简单,同我们日常 shell 脚本引用变量相同,引用样式:引用名称.例如要引用下图中的变量,

十一、Jmeter 关联-正则表达式提取器

正则表达式提取器在在网页和json中都可以用(复杂JSON提取最好还是用JsonPath),提取完参数后,相当于把参数以key-value的形式放到参数池,以便后面的请求使用.注意:不能超前引用,即在定义前就进行参数化 实战 在请求的子节点下添加后置处理器正则表达式提取器,如下源文件 正则表达式:<a class="postTitle2" href="(.*?)">,获取到所有随笔的URL 获取下标题,只要把表达式改成:<a class="

小贞贞jmeter关于正则表达式提取器详解

jmeter在做关联时,经常用到的是通过后置处理器中的正则表达式提取器去获取响应数据中的动态数据 详细讲解如下: 1.创建 2.页面元素详解--Apply to 正则表达式的匹配范围 默认是:仅主的取样器请求 Main sample and sub-samples:主请求和子请求,子请求一般为请求重定向跳转后的请求 Sub-samples only:仅子请求 JMeter Variable Name to use:可直接填写变量名,即从一个变量的值中去匹配 ,该场景可用于需要多次匹配才能匹配到想

接口测试工具-Jmeter使用笔记(五:正则表达式提取器)

(正则表达式提取器是Jmeter关联中的一种)使用场景: 有两个HTTP请求,请求A的返回数据中有一个字段"ABCD",该字段要作为请求B的入参. 1.添加方式 请求A上右键-->后置处理器->正则表达式提取器 2.提取A请求中的taskCode对应的值 为了获取到上图中圈起来的这个值,要配置正则表达式提取器: 说明: (1)引用名称:下一个请求要引用的参数名称,如填写Atask,则可用${Atask}引用它. (2)正则表达式: ():括起来的部分就是要提取的. .:匹配

JMeter学习-008-JMeter 后置处理器实例之 - 正则表达式提取器(一)概述及简单实例

上文我们讲述了如何对 HTTP请求 的响应数据进行断言,以判断响应是否符合我们的预期,敬请参阅:JMeter学习-007-JMeter 断言实例之一 - 响应断言 那么我们如何获取 HTTP请求 响应结果中的数据呢?此文以获取类目 手机数码-手机通讯-苹果 结果列表中的第一个商品的系统编号为例演示(脚本基于上篇文章,请知悉). 如下为请求响应数据中的部分数据,我们最终要获取的数据为 "sysNo": "2142717" 中的 2142717. 1 2 3 4 5 6

Jmeter之正则表达式提取器应用

说到Jmeter正则表达式提取器的应用,就不得不说到关联.所谓关联,就是把应用中动态变化返回的数据获取到,把它保存为一个参数,提供给后面需要用到的地方进行使用. Jmeter中关联是通过"添加-后置处理器-正则表达式提取器"来获取数据,且注意正则表达式提取器附在需要获取数据的某个采样器之下,数据一般从"查看结果树"的响应数据获取. 一.获取单个数据 举例:获取用户列表的结果如下,需要将"mobilephone":"158****1763