关联的概念

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

每次操作都去手动修改关联的值。常见的场景有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. Redis哨兵的配置和原理

    哨兵 在一个典型的一主多从的Redis系统中,当主数据库遇到异常中断服务后,需要手动选择一个从数据库升级为主数据库,整个过程需要人工介入,难以自动化. Redis2.8提供了哨兵2.0(2.6提供了1 ...

  2. 一起来踩踩 Spring 中这个循环依赖的坑

    1. 前言 2. 典型场景 3. 什么是依赖 4. 什么是依赖调解 5. 为什么要依赖注入 6. Spring的依赖注入模型 7. 非典型问题 参考资料 1. 前言 这两天工作遇到了一个挺有意思的Sp ...

  3. Kubernetes集群安装

    一.环境介绍 主机名 IP地址 master 192.168.0.100 node1 192.168.0.101 node2 192.168.0.102 1.1.操作系统: CensOS8.4.210 ...

  4. golang 写文件--详细解释

    1,不覆盖指定的文件 先看代码怎么写,下面再具体解释. func writeToFile(msg string) { f, err := os.OpenFile("/home/mingbai ...

  5. 20204107 孙嘉临《Python程序设计》实验一报告

    课程:<python程序设计> 班级:2041 姓名:孙嘉临 学号:20204107 实验教师:王志强 实验日期:2021年4月12日 必修/选修:公选课 ##一.实验内容 1.熟悉Pyt ...

  6. ES6学习笔记之 let与const

    在js中,定义变量时要使用var操作符,但是var有许多的缺点,如:一个变量可以重复声明.没有块级作用域.不能限制修改等. //缺点1:变量可以重复声明 var a=1; var a=2; conso ...

  7. Pytest学习笔记8-参数化

    前言 我们在实际自动化测试中,某些测试用例是无法通过一组测试数据来达到验证效果的,所以需要通过参数化来传递多组数据 在unittest中,我们可以使用第三方库parameterized来对数据进行参数 ...

  8. ACM、OI、OJ题目常用代码模板

    仓库源码地址:https://github.com/richenyunqi/code-templates 本仓库主要提供 ACM.OI.OJ.PAT.CSP 题目中常见算法和数据结构的实现,它们都以基 ...

  9. Terraform插件Provider管理,搜索、定义、下载

    我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 简介 最近工作中用到了Terraform,权当学习记录一下,希望能帮助到其它人. Terraform系列文章如下: Ter ...

  10. 从ReentrantLock看AQS (AbstractQueuedSynchronizer) 运行流程

    从ReentrantLock看AQS (AbstractQueuedSynchronizer) 运行流程 概述 本文将以ReentrantLock为例来讲解AbstractQueuedSynchron ...