『动善时』JMeter基础 — 27、通过JMeter函数助手实现参数化
我们在使用JMeter进行测试的时候,测试数据是一项重要的准备工作,当每次迭代的数据不一样的时候,就需要进行参数化,也就是从参数化数据文件中来读取测试数据。
JMeter中的参数化方式有多种,我们之前讲过了使用CSV 数据文件设置组件,从.cvs和.txt文件中读取数据。
今天我们来说一下,使用函数助手实现JMeter的参数化,其实方法很类似,只是调用数据的方式略有不同。
需求:我们以一个登陆接口为例。
发送登录请求的时候,我们需要传递两个参数:phone和password。
针对这个登录接口设计5条用例,如下:
- 正常登录。
- 手机号未注册,即:手机号填写错误。
- 手机号不合法,即:手机号填写错误位数不对或为空。
- 手机号或密码错误,即:密码错误。
- 密码不合法,即:密码为空。
1、测试计划中的元件
添加元件操作步骤:
- 创建测试计划。
- 创建线程组:
选中“测试计划”右键 —> 添加 —> 线程(用户) —> 线程组。 - 在线程组里面,添加取样器“HTTP请求”组件:
选中“线程组”右键 —> 添加 —> 取样器 —> HTTP请求。 - 在线程组里面,添加监听器“察看结果树”组件:查看结果,
选中“线程组”右键 —> 添加 —> 监听器 —> 察看结果树。
最终测试计划中包含的元件如下:

点击运行按钮,会提示你先保存该脚本,脚本保存完成后会直接自动运行该脚本。
2、数据文件内容
创建一个.csv文件,名为login_data.csv,然后根据需求编辑数据文件内容。使用函数助手实现参数化的时候,我们不在数据文件的第一行添加列表明,这样方便我们取值。
然后使用Notepad++打开该文件,点击“编码” —> 转为UTF-8编码,防止中文乱码。
最终所得到的.csv格式文件的内容如下:

3、函数助手配置
(1)函数助手的打开方式
在JMeter中打开函数助手界面的方式有两种:
第一种:选项 ——> 函数助手对话框。
第二种:在工具栏中常用功能的快捷按钮,如下图:

(2)函数助手界面介绍

界面说明:
- 选择一个功能:这里是选择你要使用的函数。
- 函数参数:每个函数需要的函数参数都是不一样的。
我们以__CSVRead函数为例:
1)CSV file to get values from | *alias:填写数据文件路径。
2)CSV文件列号| next| *:标识在CSV文件中读取第几列中的数据,从0开始,第一列0、第二列1、第三列2,依次类推。 - 点击生成按钮,生成获取参数值的函数表达式,可以在下方中看到生成的结果,生成的结果即为从数据文件中拿到的参数值。
Reset Variables:重置变量。The result of the function is:当我们文件路径和参数值的列号填写后、点击“生成”按钮,就会将读取到的值显示在这里。Current JMeter Variables:当前的JMeter变量相关信息。
说明:
Current JMeter Variables中的内容说明。(1)预定义变量
大多数变量都是通过函数调用和测试元件(如用户自定义变量)来设置的,在这种情况下用户拥有对变量名的完整控制权。
但是有些变量是JMeter内置的,例如:
JMeterThread.last_sample_ok:最近的采样是否可以(true/false)。(2)预定义变量属性
JMeter属性集是在JMeter启动时通过系统属性初始化的,还有其他补充的JMeter属性来自于
jmeter.properties、user.properties或者命令行中。JMeter还另外定义了一些内置属性,从方便的角度考虑,属性START的值会被复制到同名变量中去。
下面是具体列表:
START.MS:以毫秒为单位的JMeter启动时间;START.YMD:JMeter启动日期格式yyyyMMdd;START.HMS:JMeter启动时间格式HHmmss;TESTSTART.MS:以毫秒为单位的测试启动时间;请注意:START变量/属性表征的是JMeter启动时间,而非测试的启动时间,它们主要用于文件名之中。
(3)编辑后的函数助手界面
因为我们使用函数助手实现JMeter中的参数化,所以我们要使用__CSVRead函数。
然后我们需要把数据文件的绝对路径填入第一个输入框中,在第二个输入框选择取第几列的数据。
最后我们点击“生成”按钮,就会生成一个函数表达式。
如下图所示:

提示几点:
- 在
The result of the function is的输入框中要看到参数文件中的值,算是成功。 - 把生成函数字符串,复制到请求元件中需要参数化的地方。
- 文件数据中的每一列数据,都要生成一个函数字符串。(其实就是最后的列数不一样)
4、HTTP请求组件内容
编辑HTTP请求组件中的内容,然后把需要使用参数化变量的地方,引用函数助手中生成的函数字符串表达式。
如下图所示:

5、线程组元件内容
如果需要使用CSV文件中所有的数据,需要设置线程数。
因为没有了CSV数据文件设置组件的参与,所以这里只能使用线程数进行设置,才能实现变量的循环应用。
如果使用循环次数进行设置,效果就是使用同一用户,执行几次登陆操作。

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

我们可以看到,一个发送了5次请求,每次请求使用的参数值都是不同的,并且返回结果的预期也与我们设想的一样。
这样就演示了,使用函数助手实现JMeter中的参数化。
7、总结JMeter函数助手使用步骤
- 点击JMeter页面的函数助手。
- 选择需要使用的函数。
- 设置函数相关参数。
- 点击生成可被引用的函数字符串。
- 复制函数字符串。
- 粘贴到需要使用的位置。
『动善时』JMeter基础 — 27、通过JMeter函数助手实现参数化的更多相关文章
- 『动善时』JMeter基础 — 28、JMeter函数助手详解
目录 1.函数助手介绍 2.函数助手中的函数分类 3.常用函数介绍 (1)__Random函数 (2)__counter函数 (3)__time函数 (4)__property函数 (5)__setP ...
- 『动善时』JMeter基础 — 6、使用JMeter发送一个最基础的请求
目录 步骤1:创建一个测试计划 步骤2:创建线程组 步骤3:创建取样器 步骤4:创建监听器 步骤5:完善信息 步骤6:保存测试计划 步骤7:查看结果 总结:JMeter测试计划要素 当我们第一次打开J ...
- 『动善时』JMeter基础 — 8、JMeter主要元件介绍
目录 1.测试计划(Test Plan) 2.线程组 3.取样器(sampler) 4.逻辑控制器(Logic Controller) 5.配置元件(Config Element) 6.定时器(Tim ...
- 『动善时』JMeter基础 — 41、使用JMeter连接数据库(MySQL)
目录 1.为什么要使用JMeter连接数据库 2.JMeter连接数据库的前提 3.JDBC连接配置组件界面介绍 4.JMeter连接数据库演示 (1)测试计划内包含的元件 (2)测试计划中添加链接数 ...
- 『动善时』JMeter基础 — 44、JMeter对数据库的更新操作
目录 1.执行一条insert语句 2.insert语句实现参数化 3.一次执行多条insert语句 4.使用Beanshell生成加密数据示例 (1)测试计划内包含的元件 (2)JDBC连接配置组件 ...
- 『动善时』JMeter基础 — 2、JMeter的安装和启动
1.安装Java环境 由于JMeter是纯Java的桌面应用程序,因此它的运行环境需要Java环境,即需要安装JDK或JRE.(也就是安装JDK环境) 步骤简要说明: 下载并安装JDK 配置环境变量 ...
- 『动善时』JMeter基础 — 7、jmeter.properties文件常用配置
目录 1.默认语言设置 2.配置默认编码格式 3.GUI图标放大比例设置 4.功能区工具栏图标大小设置 5.视图区目录树图标大小设置 6.内容区编辑字体设置 7.添加JMeter元素快捷键设置 8.捕 ...
- 『动善时』JMeter基础 — 22、JMeter中实现参数化(CSV)
目录 1.参数化的定义 2.什么情况下需要用到参数化 3.JMeter实现参数化的方式 4.CSV数据文件设置界面详细说明 (1)CSV数据文件设置组件界面说明 (2)补充说明:Recycle on ...
- 『动善时』JMeter基础 — 23、JMeter中使用“用户自定义变量”实现参数化
目录 1.用户自定义变量介绍 2.使用"用户自定义变量"实现参数化 (1)测试计划内包含的元件 (2)数据文件内容 (3)测试计划界面内容 (4)线程组元件内容 (5)CSV数据文 ...
随机推荐
- 浙大MOOC《数据结构》随笔
第一讲 基本概念 1.1 什么是数据结构 图书摆放问题: 新书如何插入? 先定类别,再二分查找 怎么找到指定某本书? 二分查找 写程序实现一个函数PrintN 循环实现 void PrintN(int ...
- 自动化kolla-ansible部署centos7.9+openstack-train-超融合高可用架构
自动化kolla-ansible部署centos7.9+openstack-train-超融合高可用架构 欢迎加QQ群:1026880196 进行交流学习 环境说明: 1. 满足一台电脑一个网卡的环境 ...
- 多图详解 TCP 连接管理,太全了!!!
TCP 是一种面向连接的单播协议,在 TCP 中,并不存在多播.广播的这种行为,因为 TCP 报文段中能明确发送方和接受方的 IP 地址. 在发送数据前,相互通信的双方(即发送方和接受方)需要建立一条 ...
- 分解uber依赖注入库dig-使用篇
golang的依赖注入库非常的少,好用的更是少之又少,比较好用的目前有两个 谷歌出的wire,这个是用抽象语法树在编译时实现的. uber出的dig,在运行时,用返射实现的,并基于dig库,写了一个依 ...
- system分区解锁
前言 获取root权限,解锁system 步骤 手机设置 设置--更多设置--开发者选项--USB调试给打开 电脑操作 打开cmd adb devices 执行命令 adb root &&am ...
- 技术面试问题汇总第005篇:猎豹移动反病毒工程师part5
这是我当初接受面试的最后两个问题,当时,那位面试官问我对漏洞了解多少时,我说一点都不懂,问我懂不懂系统内核时,我同样只能说不知道.后来他跟我说,面试的考查重点不在于我所掌握的知识的广度,而是深度.这也 ...
- 阿里早期Android加固代码的实现分析
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78320445 看雪上有作者(寒号鸟二代)将阿里移动早期的Android加固进行了逆 ...
- 无线网络的加密方式:WEP、WPA和WPA2
目录 有线等效加密( WEP ) Wi-Fi 访问保护( WPA ) Wi-Fi 访问保护 II( WPA2 ) WPA-PSK/WPA2-PSK 无线网标准 有线等效加密( WEP ) 有线等效保密 ...
- POJ2044 深搜+剪枝(云彩下雨)
题意: 有一个城镇,是4*4的大小的,然后你控制一块云彩,2*2的,你每天可以有9种走的方法,上下左右,或者不动,走的时候可以走1或者2步,云彩所在的地方肯定会下雨,然后给你做多365天 ...
- 手脱ASPack2.12壳(练习)
俗话说柿子挑软的捏,练习脱壳还得用加密壳脱 0x01 准备 1.OD 2.ASPack加壳软件 0x02 脱壳实战 查一下壳 OD载入 第一个call,F7进去 第二个call也是F7进去 之后往下单 ...