JMeter 接口测试必知的参数化实现方式
一:参数化定义
什么是参数化?从字面上去理解的话,就是事先准备好数据(广义上来说,可以是具体的数据值,也可以是数据生成规则),而非在脚本中写死,脚本执行时从准备好的数据中取值。
JMeter提供了多种参数化方式,下面就其中常用的4种展开阐述。
方式 | 适用场景 |
CSV Data Set Config | 我们通常所指的参数化。数据存储在文件中,参数化取值范围大,灵活性强 |
User Parameter | 适用于参数取值范围很小时 |
函数助手 | _Random等函数,生成随机数字和随机字符串实现参数化 |
User Defined Variables | 用户自定义变量,更多用于设置全局变量 |
二:参数化实现
2.1 CSV Data Set Config
在JMeter中提起参数化,我们默认就想到CSV Data Set Config(以下简称CSV),CSV能够读取文件中的数据并生成变量,被JMeter脚本引用,从而实现参数化。下面我们来详细探究一下。
CSV简介
线程组右键–>添加–>配置元件–>CSV Data Set Config,就创建了一个CSV,界面是这个样子的:
CSV实例
下面看一个实例。首先有userInfo.txt的文件,放置在bin目录中,内容如下:
- 文件名:文件在bin目录中,使用相对目录
- 变量名称:两列数据分别属于mobile和password两个变量
- 分隔符:以逗号分割
在HTTP请求中引用CSV生成的变量的方式是${变量名}
的方式:
运行脚本,察看结果树:
可以看到,文件中的数据被脚本成功引用。JMeter使用CSV实现参数化就是这么简单。
注意事项
CSV使用中最常见的一个问题是文件路径不对。当遇到这种问题时,因为运行脚本没有明显提示,许多人遇到后会感觉很懵,不知道问题在哪。其实,仔细观察会发现右上角黄色三角处数字在增加,点击该区域便打开了日志,日志里记录了相应错误:File userInfo2.txt must exist and be readable,也就是提示参数化文件不存在或路径不可达。
2.2 User Parameters
User Parameters,也就是用户参数,也能实现参数化。
创建方式:HTTP请求上右键–>添加–>前置处理器(Pre processors)–>用户参数。
通过【添加变量】添加mobile和password两个变量,通过【添加用户】添加3组数据:
在HTTP请求中引用参数化的数据:
运行脚本,设置好的数据被成功引用。
2.3 用户定义的变量
用户自定义的变量,也可以实现请求参数的参数化。
创建方式:线程组上右键–>配置元件(config element)–>用户定义的变量。
如上图,用起来也很简单,添加变量名和相对应的值就可以了。后面引用变量和前面一样,使用${mobile}的方式。
【用户定义的变量】一般并非用来做HTTP请求参数化,而是用来定义全局变量,比如参数化文件路径、host、url等。
【用户定义的变量】创建在【线程组】上,则在线程组内生效,如果创建在【Test Plan】上,则对所有线程组生效。
2.4 Random
函数助手中的Random函数,
创建方式:Tools–>函数助手对话框–>选择一个功能–>_Random:
上图中,生成了一个表达式:${__Random(8000,9000,)}
,我们用这个表达式替换想要参数化的变量值,例如下图中的price变量:
运行脚本,察看结果树,可以看到效果:
这种方式适用于值在一定区间无规律随机取值的变量参数化,例如价格、数量、手机号码等,并不适用于有较强规则的变量进行参数化。