我们在用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. java native本地方法详解(转)

    文章链接出处: 详解native方法的使用 自己实现一个Native方法的调用 JNI 开始本篇的内容之前,首先要讲一下JNI.Java很好,使用的人很多.应用极 广,但是Java不是完美的.Java ...

  2. BM求线性递推模板(杜教版)

    BM求线性递推模板(杜教版) BM求线性递推是最近了解到的一个黑科技 如果一个数列.其能够通过线性递推而来 例如使用矩阵快速幂优化的 DP 大概都可以丢进去 则使用 BM 即可得到任意 N 项的数列元 ...

  3. 牛客 4C Alliances (dfs序)

    大意: 给定树, 有$k$个帮派, 第$i$个帮派所占据点为$c_i$, 以及$c_i$两两相连路径上的所有点. 一个点可能被多个帮派占领. $q$个询问, 第$i$个询问给定$t_i$个帮派, 给定 ...

  4. mongoose操作笔记

    一.mongoose文档地址: https://cn.mongoosedoc.top/docs/api.html#update_update https://www.cnblogs.com/web-f ...

  5. DataX操作指南

    1.DataX介绍 DataX DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.Oracle.SqlServer.Postgre.HDFS.Hive.ADS.HB ...

  6. Dubbo架构

    原文链接http://dubbo.apache.org 架构图 节点角色说明 节点 角色说明 Provider 暴露服务的服务提供方 Consumer 调用远程服务的服务消费方 Registry 服务 ...

  7. spring boot jpa @PreUpdate结合@DynamicUpdate使用的局限性

    通常给实体添加audit审计字段是一种常用的重构方法,如下: @Embeddable @Setter @Getter @ToString public class Audit { /** * 操作人 ...

  8. 105、Replicated Mode VS Global Mode (Swarm12)

    参考https://www.cnblogs.com/CloudMan6/p/8028712.html   Swarm 可以在 Service 创建和运行过程中灵活的通过 --replicas 调整容器 ...

  9. Axure(一)

    axure1.原型工具 2.软件开发 1.可行性分析2.需求分析    产品经理(和甲方对接需求,)    乙方     --   甲方 ps(专业性强,精美)  设计师        html(可变 ...

  10. String,到底创建了多少个对象?

      String str=new String("aaa"); <span style="font-size:14px;">String str=n ...