jmeter 学习笔记
Posted 猎人在吃肉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jmeter 学习笔记相关的知识,希望对你有一定的参考价值。
文章目录
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)验证
略
以上是关于jmeter 学习笔记的主要内容,如果未能解决你的问题,请参考以下文章