当前位置:网站首页>jmeter 学习笔记
jmeter 学习笔记
2022-06-30 12:24:00 【猎人在吃肉】
1、CSV Data Set Config
D盘中,data.txt 的内容:

CSV Data Set Config 的配置如下:

各参数说明:
Filename(文件名) : 支持相对和绝对路径。相对路径是以脚本保存的路径为当前的相对路径的
Variable Name(变量名) :有多少列数据我们就设置多少个变量,以逗号分隔。
如果这一项为空,jemter会去解析csv文件的header,也就是说,如果你的csv文件是有表头的,那么你可以不设置变量名,jmeter会自动将表头的名称解析成变量。Allow quoted data : 如果你的csv文件的内容里包含了分隔符,默认的分隔符是逗号,那么把这项勾选一下,用双引号将值括起来就可以了
Sharing mode :这个比较难理解,我们可以简单的认为这个选项就是配置jmeter怎么打开csv文件的。它有4个选项:
选项参数 含义 All threads 所有的虚拟用户都使用同一个csv文件 Current thread group 每个线程组使用一个csv文件 Current thread 每个线程(虚拟用户)使用一个csv文件 Identifier 自定义
2、正则表达式提取器
正则表达式提取器的使用场景:
把应用中动态变化返回的数据获取到,把它保存为一个参数,提供给后面需要用到的地方进行使用。
比如,下一个接口的参数中需引用到前面某一接口返回数据中的值,可以通过 正则表达式提取器 来取得该值。

各参数值的含义:
| 参数 | 释义 |
|---|---|
| 引用名称 | 在HTTP等请求中,引用此数据,需要用到的名称 |
| 正则表达式 | 用于将需要的数据提取出来 |
| 模板 | 表示使用提取到的第几个值:$1$:表示取第1个(列)$2$:表示取第2个(列)以此类推:$n$:表示取第n个 |
| 匹配数字(0代表随机) | 0 代表随机取值,1 代表全部取值 |
| 缺省值 | 如果正则表达式没有搜找到值,则使用此缺省值 |
2.1、正则表达式 —— 只有一个的匹配值
(1)正则表达式测试
文本内容如下 ,已知 9 这个数字。
javawind:9
测试使用的正则表达式如下:
正则表达式测试器 使用说明:
第1列是匹配的文件原始内容,不是匹配结果。
从第2列开始是匹配的提取结果。
正则表达式是 javawind:(.*) ,从测试结果中看出, 第2列(即索引是 1 )即是 提取的结果。
(2)正则表达式提取器的配置
因为只有一个值(索引从 1 开始计算),取值使用 $1$ ,如下图所示:

(3)在其它组件中引用
使用变量时,引用名称即可。

2.2、正则表达式 —— 有多个匹配的值
(1)正则表达式测试
如下图所示,一行中,有两个匹配的值。
(2)正则表达式提取器的配置
上一步中,一行中有两个匹配的值,如果要取第1个值 ,则使用 $1$ ,如果要取第2个值,则使用 $2$ ,以此类推。

(3)在其它组件中引用
使用变量时,引用名称即可。

2.3、正则表达式 —— 有多行多列的匹配值
有多行多列的匹配数据,是不常见的。
(1)正则表达式测试
如下图所示,有3行2列的匹配的数据。

(2)正则表达式提取器的配置
分析,假如要获取 第2列、第2行的值,则对应的J是($2$, ${javawd_g2}) ,如果是第3列、第4行的值,则对应的是($3$,${javawd_g4})。
下面,我们以取 第2列,第2行,值是17 的为例 。
首先,正则表达式提取器的模板填写 $2$ ,表示获取 第2列的数据 。

(3)在其它组件中引用
在上一步的 第2列 的基础上,如果想取 第1行 的数据 16 ,则填写 ${javawd_g1} ,
如果想取 第2行 的数据 17 ,则填写 ${javawd_g2} 。

2.4、示例,jmeter 使用正则表达式提取器获取值 和 设置全局变量
接口测试中,很多的接口先登录后,获取 token ,将 token 设置为全局变量,然后才能调用其它的接口。
登录后返回信息中会有一个 token 值,使用正则表达式提取 token的值,
然后,使用 后置处理器中 的 BeanShell PostProcessor 设置 token为全局变量。
(1)查看 token值:
查看token的方式有很多,常见的有如下方式。
- 用fiddler抓包
- F12查看接口信息
- 用jmeter登录查看

(2)正则表达式提取token

(3)BeanShell PostProcessor 设置 token 为全局变量。

(4)其他接口使用该全局变量:
添加http信息头管理器

3、数据提取的两种方法
把前一个步骤中返回的数据获取到,把它保存为一个参数,提供给后面步骤使用。
如下图所示,密码登录接口 执行成功后,返回一些数据。这个数据中的 token 、userId 是后续接口调用时必须使用的。
提取 密码登录接口 返回值中的 token 、userId 有两种方法,第1种是正则表达式提取器,第2种是 JSON Extractor 。

3.1、方法1,正则表达式提取器
提取 密码登录接口 返回值中的 token 、userId ,如下图所示。

debug sampler

可以看到userId、token已被提取;引用写法为:${token}, ${userId} 。
3.2、方法2,JSON Extractor
提取 密码登录接口 返回值中的 token 、userId ,如下图所示。

debug sampler
可以看到userId、token已被提取;引用写法为:${token} ,${userId} 。
3.3、值引用 ${ }
前面有两种方式提取参数, 接下来是在下一个接口参数中引用提取值。
如下图所示,在 http 中引用 token 值,

点击执行按钮,在 http 结果树 中 查看 请求数据 ,可以看到 token 引用情况。

执行结果,如下图所示,在 http 的 结果树 中查看 响应数据 ,接口也执行成功。

4、函数助手
(1)打开 函数助手对话框

(2)选择 __CSVRead 功能函数。

(3)准备数据,如下图所示。
在D盘创建data.txt文件,内容如下:

(4)配置 __CSVRead 函数的参数值
| 选项参数 | 含义 |
|---|---|
| CSV file to get values from | 要读取文件的全路径 |
| CSV文件列号 | 要读取数据的第几列。默认是从0开始的,0 表示 第1列 。 0 表示第1列 1表示第2列 以此类推 |

上面的值填写完成后,点击 生成 按钮,生成 引用的变量 。
(4)引用参数
username 是第1列,填写 ${__CSVRead(D:\data.txt,0)}
pwd 是第2列,填写 ${__CSVRead(D:\data.txt,1)}

(5)验证
略
边栏推荐
- Vision based robot grasping: from object localization, object pose estimation to parallel gripper grasping estimation
- Mysql判断计算结果,除以100
- Kubeedge's core philosophy
- The realization of QT the flipping effect of QQ weather forecast window
- How to select an OLAP database engine?
- Unity的脚本的基础语法(2)-Unity中记录时间
- 解决numpy.core._exceptions.UFuncTypeError: ufunc ‘add‘ did not contain a loop with signature matchin问题
- Clipboardjs - development learning summary 1
- Redis-緩存問題
- Flink sql控制台,不识别group_concat函数吗?
猜你喜欢

【MySQL】MySQL的安装与配置

【OpenGL】OpenGL Examples

zabbix-server启动失败处理方式

【一天学awk】基础中的基础

黑马笔记---List系列集合与泛型

【惊了】迅雷下载速度竟然比不上虚拟机中的下载速度

After the market value evaporated by 65billion yuan, the "mask king" made steady medical treatment and focused on condoms

【驚了】迅雷下載速度竟然比不上虛擬機中的下載速度

Redis installation on Linux system

Wechat launched the picture big bang function; Apple's self-developed 5g chip may have failed; Microsoft solves the bug that causes edge to stop responding | geek headlines
随机推荐
Unity脚本程序的开发
常用的ui组件
项目中遇到一个有趣的事情
Pharmacy management system
FlinkSQL自定义UDAF使用的三种方式
Analysis of the whole process of common tilt data processing in SuperMap idesktop
江西财经大学智慧江财登录分析
Redis-緩存問題
Docker安装Mysql8和sqlyong连接报错2058的解决方法[随笔记录]
[surprised] the download speed of Xunlei is not as fast as that of the virtual machine
Why should offline stores do new retail?
MySQL判断执行条件为NULL时,返回0,出错问题解决 Incorrect parameter count in the call to native function ‘ISNULL‘,
Introduction to the renewal of substrate source code: the pledge amount is greatly reduced, and rocksdb can be completely disabled
Spatiotemporal prediction 2-gcn_ LSTM
Introduction to sub source code updating: mid May: uniques NFT module and nomination pool
Questionnaire star questionnaire packet capturing analysis
QT implementation dynamic navigation bar
Flinksql customizes udatf to implement topn
Event handling in QT
How to use AI technology to optimize the independent station customer service system? Listen to the experts!