参数化步骤
1.确定接口参数中哪些请求参数需要进行参数化
在设计测试用例时,我们针对商品编号,商品规格,商品数量来准备数据,故对id,attr,number参数化
2.将测试数据放在外部一个文档保存,文件类型为csv或txt -->*.csv or *.txt
新建一个testdata.csv,一行写一个用例,多个参数值默认用,分隔(注意不要写列标题)∶
__CSVRead()函数,不能去首行,所以不要写列表题,那么没有标题,就要靠序号去分别,所以,列的编写规则是:从0开始,每次递增1,也就是说0表示第一列,1表示第二列
case1,9,226,3
case2,,226,1
case3,9,,1
case4,9,226,
3.调用__CSVRead()函数获取外部数据文件中的数据
选项-函数助手对话框,打开"函数助手",选择"__CSVRead"
4.在请求中将写死的数据用第3步中定义的变量进行替换
data_--> ${varName}
比如 S{attr}
5.配置参数化
_CSVRead函数参数配置项
5.1 将线程数设置为用例的个数(如果采用多线程的方式,就不要进行换行,也可以读取得到每一行数据)
5.2 如果有多组数据,但是线程数只设置为一个,就要设置换行,因为__CSVRead()函数不是jmeter内部的元素,所以循环控制器对其没有作用,如果想要循环读取到每一行而不是只读取第一行,那么这个时候就要换行,如果想要实现换行,那么就要在数据读取到最后一列之后在进行,换行的函数语句是:将生成的函数中的第二个参数(列号)改为next,然后在与读取到的最后一列的函数进行拼接
比如:haha.txt文件共有4列,那么最后一列的列号就是3,然后在读取到第四列的时候进行换行,所以最后在请求的时候的参数应该像如下这样填写:
别名的使用
1.定义别名:
__CSVRead()函数中第一参数为文件的路径,第二个参数为别名的名字,要以*开头
${__CSVRead(/Users/zhangshanshan/Desktop/haha.txt,*heihie)}
2.别名的使用
${__CSVRead(/Users/zhangshanshan/Desktop/haha.txt,*heihie)}
*heihie 就可以替代/Users/zhangshanshan/Desktop/haha.txt路径
在使用别名的时候要注意,我们要把定义别名的函数语句写在第一次使用别名之前,否则会报错
对参数文件路径进行参数化
模拟三个用户,每个用户查看两次
u1 -------> haha1.csv 2组数据
u2 -------> haha2.csv 2组数据
u3 -------> haha3.csv 2组数据
/Users/zhangshanshan/Desktop/haha1.txt
线程组下线程的编号规则:按照线程启动的先后顺序进行编号,从1开始,每次递增
线程编号不能跨线程组
${__threadNum} :获取线程组下线程的编号
参数文件的路径:线程编号和文件名组合起来. haha${__threadNum}.csv
${__CSVRead( haha${__threadNum}.csv ,0)}