我们在用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就行了

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

  1. 『动善时』JMeter基础 — 36、JMeter接口关联【正则表达式提取器】

    目录 1.正则表达式提取器介绍 2.正则表达式提取器界面详解 3.正则表达式提取器的使用 (1)测试计划内包含的元件 (2)请求一界面内容 (3)正则表达式提取器界面内容 (4)请求二界面内容 (5) ...

  2. Jmeter关联之正则表达式提取器(完整版)

    Jmeter关联之正则表达式提取器(完整版)   在性能测试中,若想提取上一个请求的结果,作为下一次请求的参数,则需要使用关联~ 这篇博客主要讲jmeter正则表达式提取器的各种用法. 首先正则表达式 ...

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

    如果有这样的情况:一个完整的操作流程,需要先完成某个操作,获得某个值或数据信息,然后才能进行下一步的操作(也就是常说的关联/将上一个请求的响应结果作为下一个请求的参数): 在jmeter中,可以利用正 ...

  4. jmeter(十二)关联之正则表达式提取器

    如果有这样的情况:一个完整的操作流程,需要先完成某个操作,获得某个值或数据信息,然后才能进行下一步的操作(也就是常说的关联/将上一个请求的响应结果作为下一个请求的参数): 在jmeter中,可以利用正 ...

  5. <转>jmeter(十二)关联之正则表达式提取器

    本博客转载自:http://www.cnblogs.com/imyalost/category/846346.html 个人感觉不错,对jmeter讲解非常详细,担心以后找不到了,所以转发出来,留着慢 ...

  6. JMeter关联(正则表达式提取器)

    关联:与系统交互过程中,系统返回的内容,需要在接下来的交互中用到,如防止csrf攻击而生成的token. 从前一个请求中取,用Regular Expression Extractor 正则表达式提取器 ...

  7. jmeter设置全局变量与正则表达式提取器

    接口测试中,很多接口都要带上登录后的token才能正常发送请求,这里记录一下登录获取token设置为全局变量供其他接口使用 登录后返回信息信息中会有一个token值,添加后置处理器中的正则表达式提取t ...

  8. Jmeter GIS调用-->参数化+正则表达式提取器+后置处理器+逻辑控制器

    一.参数化: 1.添加线程组 2.添加HTTP请求 3.CSV 数据文件设置 HTTP请求参数话 4.正则表达式提取器 5.逻辑控制器 可以or    and 等 6.后置处理器写入文件 FileWr ...

  9. 『动善时』JMeter基础 — 35、JMeter接口关联【JSON提取器】详解

    目录 1.JSON提取器介绍 2.JSON提取器界面详解 3.JSON提取器的使用 (1)测试计划内包含的元件 (2)HTTP Cookie管理器内容 (3)用户登陆请求界面内容 (4)JSON提取器 ...

随机推荐

  1. .Net Core 中使用NLog作为日志中间件

    ⒈安装相关依赖 NLog NLog.Web.AspNetCore ⒉在项目的根目录中创建NLog配置文件 <?xml version="1.0" encoding=" ...

  2. typescript中新增的基本数据类型

    javascript中有7种数据类型,分别是:boolean,number,string,null,undefined和object,以及在es6中新增的一种类型 symbol.而typescript ...

  3. powerdesigner去掉网格线

    powerdesigner去掉网格线 去掉网格线

  4. SpringBoot 的启动banner生成网址

    1.http://patorjk.com/software/taag/#p=display&f=Graffiti&t=Type%20Something%20 2.http://www. ...

  5. linux下安装php的lua扩展

    1. 进入管理员权限使用yum安装 readline(也可以使用wget下载后./configure 然后 make && make install进行安装) yum install ...

  6. [Next] 五.next自定义内容

    自定义 head 这是默认的 head 这样的 head 并不能满足我们的需求.next 公开了一个内置组件,用于将元素追加到<head>标签的.我们可以通过这个自定义 head 新建 c ...

  7. 大数据学习(1)-shell脚本注意事项

    1.变量=值 (例如STR=abc)  不用加引号,但此时空格不再是空格字符,特殊字符可用于转义 2.等号两侧不能有空格 3.变量名称一般习惯为大写 4.双引号和单引号有区别,双引号仅将空格脱意,单引 ...

  8. ELK电子书籍

    Elasticsearch in Action(英文版).pdfElasticsearch实战 in action(中文版).pdfElasticsearch技术解析与实战.pdfElasticsea ...

  9. 03 Linux下运行Django项目

    1.安装windows和linux传输文件的工具 pip install lrzsz 提供两个命令 一个是上传一个是下载 rz 接收 直接rz sz 上传 直接sz 或者直接拖拽 2.在线下载资源的命 ...

  10. webpack 四个核心概念

    webpack 是当下最热门的前端资源模块化和打包工具.它可以将许多松散的模块(如 CommonJs 模块. AMD 模块. ES6 模块.CSS.图片. JSON.Coffeescript. LES ...