1、用户自定义变量介绍

我们可以看到前面一篇文章的例子中,数据文件login_data.csv的后三个参数都是一样的,我们可以把这些变量提取出来,放在一个公共的位置,方便我们随时提取。(凡是可以输入的位置,都可以使用参数化变量)

在JMeter中,有两个地方可以设置这种公共的变量:

  • 一种是在“测试计划”界面中设置“用户自定义变量”。
  • 一种是在配置元件中的“用户自定义变量”组件中添加变量。

之前我们介绍过,JMeter中常用的参数化方式有四种,

  1. CSV数据文件设置(CSV Data Set Config):这种方式是通常所指的参数化。数据存储在文件中,该种参数化方式取值范围大,灵活性强,适用于大量测试数据时的使用。
  2. 用户参数(User Parameter):适用于参数取值范围很小,需要少量测试数据时使用。
  3. 用户自定义变量(User Defined Variables):更多用于设置全局变量,常用于数据库地址,测试环境、开发环境地址等常量配置。
  4. 函数助手:可使用函数生成随机数字和随机字符串实现参数化。

本文我们以在“测试计划”界面中设置“用户自定义变量”为例,演示批量实现用户的登陆操作。

2、使用“用户自定义变量”实现参数化

(1)测试计划内包含的元件

添加元件操作步骤

  1. 创建测试计划,并且在测试计划中添加“用户自定义变量”数据。
  2. 创建线程组:选中“测试计划”右键 —> 添加 —> 线程(用户) —> 线程组
  3. 在测试计划(也可以是线程组)里面添加配置元件CSV Data Set Config组件:选中“线程组”右键 —> 添加 —> 配置元件 —> CSV 数据文件设置
  4. 在线程组里面,添加取样器“HTTP请求”组件:选中“线程组”右键 —> 添加 —> 取样器 —> HTTP请求
  5. 在线程组里面,添加监听器“察看结果树”组件:查看结果,选中“线程组”右键 —> 添加 —> 监听器 —> 察看结果树

最终测试计划中的元件如下:

『动善时』JMeter基础 — 23、JMeter中使用“用户自定义变量”实现参数化-LMLPHP

点击运行按钮,会提示你先保存该脚本,脚本保存完成后会直接自动运行该脚本。

(2)数据文件内容

先用Excel表格编辑所需的请求参数,内容如下:

『动善时』JMeter基础 — 23、JMeter中使用“用户自定义变量”实现参数化-LMLPHP

我们需要把该文件保存为.csv格式。

最后使用Notepad++打开该文件,然后点击“编码” —> 转为UTF-8编码,防止中文乱码。

最终所得到的.csv格式文件的内容如下:

『动善时』JMeter基础 — 23、JMeter中使用“用户自定义变量”实现参数化-LMLPHP

(3)测试计划界面内容

在“测试计划”界面中,把公共的变量设置“用户自定义变量”中,如下图所示:

『动善时』JMeter基础 — 23、JMeter中使用“用户自定义变量”实现参数化-LMLPHP

和在“HTTP请求”组件中添加数据的操作一样,这样在该测试计划中的所有组件都可以使用这些变量。

(4)线程组元件内容

如果需要使用CSV文件中所有的数据,需要设置线程组元件的线程数或循环次数。

因为在CSV数据文件设置组件中,有Recycle on EOFStop thread on EOF选项的关系,所以设置线程数和循环次数都可以实现,使用数据文件中的每一组数据进行测试。

『动善时』JMeter基础 — 23、JMeter中使用“用户自定义变量”实现参数化-LMLPHP

(5)CSV数据文件设置组件内容

『动善时』JMeter基础 — 23、JMeter中使用“用户自定义变量”实现参数化-LMLPHP

我一般常用操作,简单说明:

  • 文件名:就直接浏览选择文件即可,也就是使用数据文件的绝对路径。
  • 文件编码选择UTF-8
  • 变量名称:就是把数据文件的每个变量名都填写上,中间用逗号分割。
  • 忽略首行:选择True,如果CSV文件中首行写的是变量名称,选择忽略首行。
  • 分隔符:如果CSV文件中的数据,使用的是逗号隔开,就默是默认值。如果是制表符,就用\t表示。
  • 是否允许带引号?:如果变量值中有引号就选择True,没有则默认False即可。
  • 其他一般默认选择。如果需求看上面说明中写的很详细,按工作中实际情况选择。

(6)HTTP请求组件内容

在JMeter中使用参数化变量的格式:${变量名}

编辑登录接口内容,信息如下图所示:

『动善时』JMeter基础 — 23、JMeter中使用“用户自定义变量”实现参数化-LMLPHP

我们可以看到${变量名}中的变量名,是以CSV数据文件设置组件中变里名称中定义变量名为准。如果不在变里名称栏中定义任何内容,就以数据文件中的标题列名为变量名。

(7)脚本运行结果

该测试脚本运行结果如下图所示:

『动善时』JMeter基础 — 23、JMeter中使用“用户自定义变量”实现参数化-LMLPHP

以上就完成了在JMeter中通过“用户自定义变量”实现参数化的示例。

05-27 05:46