关联的概念

  从上一步操作中获取需要的值,传递给下一步操作中进行引用,形成自动关联,而不是

每次操作都去手动修改关联的值。常见的场景有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关联详解的更多相关文章

  1. Loadrunner手动关联详解

    Loadrunner手动关联详解 一.关联的含义: 关联(correlation):在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到 ...

  2. Jmeter(五十三) - 从入门到精通高级篇 - 懒人教你在Linux系统中安装Jmeter(详解教程)

    1.简介 我们绝大多数使用的都是Windows操作系统,因此在Windows系统上安装JMeter已经成了家常便饭,而且安装也相对简单,但是服务器为了安全.灵活小巧,特别是前几年的勒索病毒,现在绝大多 ...

  3. hibernate 一对多双向关联 详解

    一.解析: 1.  一对多双向关联也就是说,在加载班级时,能够知道这个班级所有的学生. 同时,在加载学生时,也能够知道这个学生所在的班级. 2.我们知道,一对多关联映射和多对一关联映射是一样的,都是在 ...

  4. django--orm表自关联详解

    什么是表内自关联 表内自关联是指表内数据相关联的对象和表是相同字段,这样我们就直接用表内关联将外键关联设置成自身表的字段.同样表内关联也分一对多字段和多对多字段 例如:对于微博评论,每条评论都可能有子 ...

  5. Jmeter 05 JMeter元件详解

    1. JMeter 逻辑控制器 Switch条件控制器.While条件控制器.交替控制器.仅一次控制器.随机控制器.随机顺序控制器.条件控制器(如果(if)).循环控制器.录制控制器.ForEach控 ...

  6. jmeter逻辑控制详解(1)

    逻辑控制器 Jmeter提供了多种逻辑控制器,下面进行讲解说明: 1.Simple Controller 简单控制器是最基本的控制器,对jmeter测试运行没有任何影响,可以将某些请求归集在一个简单控 ...

  7. 『动善时』JMeter基础 — 12、JMeter取样器详解:sampler

    目录 1.取样器介绍 2.JMeter自带的取样器 3."HTTP请求"为例介绍一下取样器 (1)HTTP Request: (2)Web服务器: (3)HTTP请求: (4)同请 ...

  8. jmeter逻辑控制器详解(2)

    逻辑控制器 8.Runtime Controller 运行周期控制器,顾名思义,这是一种设置运行时间的控制器,它的效果就是使该控制器下的子项运行时间为[Runtime]中的数值(单位:s). Runt ...

  9. jmeter生成html报告详解

    Jmeter Dashboard详解 结果面板主要分为Dashboard和Charts两部分.Dashboard对信息进行汇总展示,Charts展示更多详细指标数据. Dashboard Test a ...

随机推荐

  1. DOS命令行(3)——Windows运行窗口打开特定功能

    cmd 开启命令解释权或启用Windows中的某程序 cmd /c 执行完命令后关闭命令窗口 cmd /k 执行完命令后不关闭命令窗口   winver 查看Windows版本信息版权信息授权信息   ...

  2. Hive和Spark分区策略

    1.概述 离线数据处理生态系统包含许多关键任务,最大限度的提高数据管道基础设施的稳定性和效率是至关重要的.这边博客将分享Hive和Spark分区的各种策略,以最大限度的提高数据工程生态系统的稳定性和效 ...

  3. 用transform和rem哪个好

    个人觉得电脑端的用transform好,毕竟电脑端的项目基本都会固定屏幕比列,16:9.28:9.32:9的 一个固定的设计稿就能很好的适配. 移动端用rem比较好,移动端的屏幕比列太杂,使用rem自 ...

  4. vue环境搭建以及使用vue-cli创建项目

    我要跑vue项目,所以我要搞vue. 1.环境搭建 进入node官网下载对应版本的node,一步步安装即可. 安装会自动配置路径和npm包管理环境,通过node -v进行验证 2.安装vue-cli脚 ...

  5. PyCharm 2020.1 激活教程

    本文内容皆为作者原创,如需转载,请注明出处:https://www.cnblogs.com/xuexianqi/p/14967434.html 免责声明:本方法只做学习研究之用,不得用于商业用途 若经 ...

  6. Redis之阻塞分析

    Redis是典型的单线程架构,所有的读写操作都是在一条主线程中完成的.当Redis用于高并发场景时,这条线程就变成了它的生命线.如果出现阻塞,哪怕是很短时间,对于我们的应用来说都是噩梦.导致阻塞问题的 ...

  7. 深入浅出,遇见Windows Terminal(Windows终端器),体验及美化新一代终端神器

    Windows Terminal 简介 Windows Terminal is a new, modern, feature-rich, productive terminal application ...

  8. 105、如何使用u盘制做linux镜像

    105.1. 105.2. 105.3. 105.4.

  9. iOS工程师如何恍然大悟?

    聊聊行情?为什么总有人在乎旁人的看法而忽略自己的初衷? 虽然iOS开发市场说不上好但也绝不算坏,想没想过那些煽风点火说iOS不行的人在做什么? 真的转行从头开始? 错.大错特错! 在劝退你的同时他们会 ...

  10. Redis 过期时间解析

    文章参考:<Redis 设计与实现>黄建宏 设置过期时间 通过 EXPIRE 或者 PEXPIRE 命令,客户端可以以秒或毫秒精度为数据库中的某个键设置生存时间 TTL (Time To ...