一、什么是参数化
将一个常量写成变量的形式,每次调用参数获得不同的数据。
PS: 这里要说下Cookie,在后面的参数化过程中发现登录接口请求头里要携带cookie;我一直的误解就是只有登录才有cookie产生,其实是不对的,一般的cookie是会话被创建时就产生,关闭后就消失;可以随便访问项目的网页获取到cookie,然后想办法将cookie加到请求头里去~
二、怎么实现参数化
1、CSV控制-CSV DATA Set Config
线程组 -> 新建请求 ->参数用变量代替 ,格式${变量名}

新建EXCEL文件,写入测试数据-> 另存为.csv文件的格式;
线程组 ->添加配置元件->CSV DATA Set Config->在配置元件里输入csv的绝对地址 ->若CSV不含表头,则在CSV数据文件设置里输入表头变量;反之,则不添加;

2、用户自定义变量
比如有登录接口和获取token的接口,都需要输入用户名和密码,如果我在每个接口请求参数都输入一次,相当于输入了两次;那么,可以使用自定义变量,将用户名和密码的值存在一个变量里,后续的接口需要时直接调用参数即可,减少重复输入的次数。具体操作如下:
线程组-> 添加配置元件->选择用户自定义变量->添加变量名及对应的值(key&value);

线程组 -> 新建请求 ->参数用变量代替,格式为${变量名},调用变量值;

PS: 用户定义变量的所有数据只会初始化一次,不管你多少线程,循环多少次,它的值是不变的(即同一个变量的值写死,不能改变)。用户自定义变量作用域不同,表示的含义也有区别;放在线程组外,表示全部变量;放在线程组内表示局部变量。

3、用户参数
在调试脚本的时候,可以使用前置处理器中的用户参数组件进行数据的提供,在该数据中可以使用固定值也可以使用变量值。
线程组-> 添加前置处理器->选择用户参数->添加变量名,并输入多个对应的值
每次迭代更新一次:如果选中该选项,则参数的值在每个迭代中保持不变,在新的迭代开始时取下一个值。

PS:在使用用户参数时,如果有n个值,需要设置线程数=n,若设置循环为n,只会调用第一个值执行n遍。
4、函数助手
函数助手里内置了多个函数,如__Random或${__CSVRead(,)}等可以按需求使用不同的功能函数;
面板-> 选项-> 函数助手对话框-> 根据需要选择不同的函数-> 设置范围及变量名->后续接口调用。


${__CSVRead(,)}可以实现读取CSV数据,()里逗号左边是CSV路径,右边是CSV里存放的变量的索引;索引从0开始依次增加1,如 ${__CSVRead(D:\jmeter\logins.txt,0)}。注:这里的CSV文件就不要表头了。

三、用户参数和用户定义的变量的区别
用户自定义变量的值写死,不能改变;而用户参数,可以引入函数助手,使得同一变量有不同的变量值。
网友评论