Jmeter关联详解
关联的概念
从上一步操作中获取需要的值,传递给下一步操作中进行引用,形成自动关联,而不是
每次操作都去手动修改关联的值。常见的场景有SessionID、Session Token值的获取。
正则表达式提取器
正则基础
正则表达式(Regular Expression):使用正则表达式解析响应结果,“()”表示提取字
符串中的部分值,请不要使用“||”,除非你本身需要匹配这个字符。
常用的正则表达式操作符:
|
操作符 |
说明 |
实例 |
|
. |
匹配除“\r\n”之外的任何单个字符。 |
|
|
[] |
字符集,对单个字符给出范围 |
[abc] 表示非a、b、c,[a-z]表示a-z的单个字符 |
|
[^ ] |
非字符集,对单个字符给出排除范围 |
[^abc] 表示非a或b或c的单个字符 |
|
* |
前一个字符零次或无限次扩展 |
abc* 表示ab、abc、abcc、abccc等 |
|
+ |
前一个字符1次或无限次扩展 |
abc+ 表示abc、abcc、abccc等 |
|
? |
前一个字符0次或1次扩展 |
abc? 表示ab、abc |
|
| |
左右表达式的任意一个 |
abc|def 表示abc、def |
|
{m} |
扩展前一个字符m次 |
ab{2}c 表示abbc |
|
{m,n} |
扩展前一个字符m到n次 |
ab{1,2}c 表示abc、abbc |
|
^ |
匹配字符串开头 |
^abc 表示abc且在一个字符串的开头 |
|
$ |
匹配字符串结尾 |
abc$ 表示abc且在一个字符串的结尾 |
|
() |
分组标记内部只能使用|操作符 |
(abc) 表示abc,(abc|def)表示abc、def |
|
\d |
数字,等价于0-9 |
|
|
\w |
单词字符,等价于[a-z0-9A-Z_] |
常用组合:
.*具有贪婪的性质,匹配到不能匹配为止,最大匹配原则。
+或*后跟?表示非贪婪匹配,即尽可能少的匹配,最小匹配原则。
.*? 表示在能匹配成功的前提下尽可能少的匹配,最小匹配原则。

Name:组件的名字,可以自定义
Comments:注释
Apply to:一般保持默认选择Main sample only即可
Field to check:要检查的响应字段,比较常用的是Body
Name of created variable:引用名称,即变量名,将获取到的值存储在这个变量中
Regular Expression:正则表达式,根据要抓取的内容编写
Template:模板,$1$表示第一个正则表达式,如果有2个模板,则填入$1$$2$
Match No.(0 for Random):匹配数字(0代表随机),一般填1,表示第一个,0表示随机,-1表示全部
(此时提取结果是一个数组,如果引用名称是user,也可以通过${user_1}的方式来取第1个匹配的内容)
Default Value:缺省值,没匹配到就使用该值,如填入一个Test
实际运用
工作场景:有两个接口,分别可以获取到城市代码和城市天气,查询城市天气的接口需要将
获取到的城市代码作为参数传入。
查询城市代码接口:http://toy1.weather.com.cn/search?cityname=shanghai
查询城市天气接口:http://www.weather.com.cn/data/cityinfo/101020100.html
接下来,我们需要使用正则表达式提取器来实现两个接口的关联,先抓取到城市代码存储到
一个变量中,然后在查询城市天气接口中引用该变量。
在Jmeter中建立http请求,配置好查询城市代码接口,添加查看结果树。

添加正则表达式提取器,抓取需要的参数。

添加查询城市天气接口,城市代码引用上一步提取的参数,查看响应结果。


JSON Path Extractor提取器
基础简介
对于需要从接口返回为JSON的结果中提取内容,然后作为变量在不同的请求中传递,JSON Path Extractor
提取器可以说是非常好用。对于JSONPath不太熟悉的同学,建议在使用该组件前先去官网学习一下相关内容。
JSONPath官网:https://goessner.net/articles/JsonPath/
先看一下JSONPath语法与其对应的XPath概述和比较。
| XPath | JSON路径 | 描述 |
| / | $ | 根对象/元素 |
| . | @ | 当前对象/元素 |
| / | . 或者 [] | 子运算符 |
| .. | 不适用 | 父运算符 |
| // | .. | 递归下降。JSONPath 从 E4X 借用了此语法。 |
| * | * | 通配符。所有对象/元素,无论其名称。 |
| @ | 不适用 | 属性访问。JSON 结构没有属性。 |
| [] | [] | 下标运算符。XPath 使用它来迭代元素集合和谓词。在 Javascript 和 JSON 中,它是本机数组运算符。 |
| | | [,] | XPath 中的联合运算符导致节点集的组合。JSONPath 允许将备用名称或数组索引作为一个集合。 |
| 不适用 | [开始:结束:步骤] | 从 ES4 借来的数组切片运算符。 |
| [] | ?() | 应用过滤器(脚本)表达式。 |
| 不适用 | () | 脚本表达式,使用底层脚本引擎。 |
| () | 不适用 | 在 Xpath 中分组 |
在jmeter里使用此组件,需要安装对应的JMeterPlugins-ExtrasLibs插件。下载完成,将
jar包放入jmeter安装目录lib\ext中,然后重启jmeter。
链接: https://pan.baidu.com/s/1vh9IL9tgwDsSYl2dShgbsw
提取码: 7kgh

Destination Variable Name:要存储的变量名称
JSONPath Expression:JSON表达式
Default Value:缺省值,未取到结果使用该值
实际运用
1.当返回值为JSON时,JSON表达式为 $.userSession.sessionId
{
"userSession": {
"businessCode": "900000",
"createTime": "2018-05-25 03:24:17",
"userCode": "29feaa3c98014e02bec16c6f448a6459",
"userName": "lip-vpn",
"sessionId": "10a4cee035d044d8b2f25e2cebb2843e"
}
}
在jmeter中添加JSON Path Extractor,然后用结果树查看输出,配置如下:


2.当返回值为数组时,需要加上数组的位置,JSON表达式为 $.userSession[0].sessionId
{
"userSession": [
{
"businessCode": "900000",
"createTime": "2018-05-25 03:24:17",
"userCode": "29feaa3c98014e02bec16c6f448a6459",
"userName": "lip-vpn",
"sessionId": "10a4cee035d044d8b2f25e2cebb2843e"
}
]
}
在jmeter中添加JSON Path Extractor,然后用结果树查看输出,配置如下:


Jmeter关联详解的更多相关文章
- Loadrunner手动关联详解
Loadrunner手动关联详解 一.关联的含义: 关联(correlation):在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到 ...
- Jmeter(五十三) - 从入门到精通高级篇 - 懒人教你在Linux系统中安装Jmeter(详解教程)
1.简介 我们绝大多数使用的都是Windows操作系统,因此在Windows系统上安装JMeter已经成了家常便饭,而且安装也相对简单,但是服务器为了安全.灵活小巧,特别是前几年的勒索病毒,现在绝大多 ...
- hibernate 一对多双向关联 详解
一.解析: 1. 一对多双向关联也就是说,在加载班级时,能够知道这个班级所有的学生. 同时,在加载学生时,也能够知道这个学生所在的班级. 2.我们知道,一对多关联映射和多对一关联映射是一样的,都是在 ...
- django--orm表自关联详解
什么是表内自关联 表内自关联是指表内数据相关联的对象和表是相同字段,这样我们就直接用表内关联将外键关联设置成自身表的字段.同样表内关联也分一对多字段和多对多字段 例如:对于微博评论,每条评论都可能有子 ...
- Jmeter 05 JMeter元件详解
1. JMeter 逻辑控制器 Switch条件控制器.While条件控制器.交替控制器.仅一次控制器.随机控制器.随机顺序控制器.条件控制器(如果(if)).循环控制器.录制控制器.ForEach控 ...
- jmeter逻辑控制详解(1)
逻辑控制器 Jmeter提供了多种逻辑控制器,下面进行讲解说明: 1.Simple Controller 简单控制器是最基本的控制器,对jmeter测试运行没有任何影响,可以将某些请求归集在一个简单控 ...
- 『动善时』JMeter基础 — 12、JMeter取样器详解:sampler
目录 1.取样器介绍 2.JMeter自带的取样器 3."HTTP请求"为例介绍一下取样器 (1)HTTP Request: (2)Web服务器: (3)HTTP请求: (4)同请 ...
- jmeter逻辑控制器详解(2)
逻辑控制器 8.Runtime Controller 运行周期控制器,顾名思义,这是一种设置运行时间的控制器,它的效果就是使该控制器下的子项运行时间为[Runtime]中的数值(单位:s). Runt ...
- jmeter生成html报告详解
Jmeter Dashboard详解 结果面板主要分为Dashboard和Charts两部分.Dashboard对信息进行汇总展示,Charts展示更多详细指标数据. Dashboard Test a ...
随机推荐
- 机器人路径规划其二 A-Star Algorithm【附动态图源码】
首先要说明的是,机器人路径规划与轨迹规划属于两个不同的概念,一般而言,轨迹规划针对的对象为机器人末端坐标系或者某个关节的位置速度加速度在时域的规划,常用的方法为多项式样条插值,梯形轨迹等等,而路径规划 ...
- DDoS攻击的工具介绍
1.低轨道离子加农炮(LOIC) 1.1 什么是低轨道离子加农炮(LOIC)? 低轨道离子加农炮是通常用于发起DoS和DDoS攻击的工具.它最初是由Praetox Technology作为网络压力测试 ...
- PING命令执行漏洞-绕过空格
目录 PING命令执行漏洞-绕过空格 这边介绍一下绕过空格的方法大概有以下几种 方法一:用变量拼接:我们发现源码中有一个$a变量可以覆盖 方法二:过滤bash?那就用sh.sh的大部分脚本都可以在ba ...
- 乘风破浪,Java遇见OpenJDK GA(Build By Microsoft),即将晋升为Azure云管理服务默认JVM
什么是Microsoft Build of OpenJDK Java Development Kit (JDK) 是Sun公司(已被Oracle收购)针对Java开发员的软件开发工具包.自从Java推 ...
- 不止Docker:8款容器管理开源方案
Docker诞生于2013年,并普及了容器的概念,以至于大多数人仍然将容器的概念等同于"Docker容器". 作为第一个吃螃蟹的人,Docker设置了新加入者必须遵守的标准.例如, ...
- acwing 4 多重背包问题 I
多重背包 有 n种物品 一共有 m大小的背包,每种物品的价值 大小 个数 为 s[i],v[i],num[i]; #include<bits/stdc++.h>//cmhao #defin ...
- 连接mysql数据库实现增删改查(一)
在python中我们通过pymysql来连接数据库,具体实现如下 ''' 连接mysql数据库 此类进行封装了一些基础的操作数据库方法 ''' import pymysql from Homework ...
- SpringBoot:SpringBoot中@Value注入失败
1. 第一步检测语法是否正确 @Value("${test}") private String test; 2.第二步检测配置文件中是否有进行配置 url=testusername ...
- Comparator的compare方法如何定义升序降序
最近做算法题用了Comparator接口下的compare方法,思考了一下升序和降序的规则是如何来的,现在做一个补充,方便以后回顾. 升序代码 public static void main(Str ...
- Dart学习记录(一)——对象
1. 静态成员.方法 1.1 static 声明 1.2 静态.非静态方法可访问静态成员.调用方法:静态方法不可访问静态成员.调用方法: 1.3 静态成员.方法,属于类的 ,不用实例化对象就可使用,不 ...