一共有两种方法可以实现参数化,
一:添加CSV的表单
第一步:添加线程组,HTTP请求,CSV数据文件设置,察看结果树
CSV数据文件配置的添加:
CSV数据文件配置的添加图
第二步:填写数据文件配置的参数
image.png
image.png
注意:如果是中文符号进行http请求时URL会自动转译%20这一类数据!
表格里的数据一定要这是成英文字符哦
1.文件名:本地的csv文件地址,可以手动创建一个并填写值例如像我这样↑
2.文件编码:根据本地创建的csv进行填写即可,我使用的是:UTF-8
3.变量名称:定义引用值的变量名称key,文件里定义的就是value
4.忽略首行,这里我将csv文件里的第一行设置了文件变量名所以这里忽略第一行即可,true忽略,false不忽略
5.分隔符:默认以,号分割,也可以自定义,但这里一定要英文符号哦,包括csv文件里的也要英文符号
6.是否允许带引号?:如果你的csv里面有“号引住的数值这里就要设置true请求时会过滤你这个”号,举个例子1:你的url传递参数请求头要携带“youku”这是你传输过去发现”“youku”“这时你可以将CSV里的”删除或者设置true进行过滤。例子2:如果你要传递的数值12,2321.13上传后发现,被识别成分隔符了,这是你就要设置"12,2321.13"并且设置true过滤",如果是false则会发生%221221%22!
7.遇到文件结束符再次循环?:这里循环文件里面的值,这里和你的线程设置的多好有关系,例如线程设置4人(线程数)而文件里的数据是2条,这里设置成true结果就是1,2人执行1,2条数据,3,4人执行1,2条数据,如果设置成false结果就是1,2人执行1,2条数据,3,4人执行空
8.遇到文件结束符停止线程?:这个条件和上面条件7有点冲突因为条件7(遇到文件结束符再次循环)设置成true的话就会一直循环无法结束,所以设置8(遇到文件结束符停止线程)设置成true就没有什么用了,
条件8遇到文件结束符停止线程?例如线程设置4人(线程数)而文件里的数据是2条,这里设置成true结果就是1,2人执行1,2条数据,3,4人不执行,如果设置成false结果就是1,2人执行1,2条数据,3,4人执行空
第二步往http里添加关联的值
格式:${3.变量名称}就是上述步骤3的变量名称
第二部
第四步执行:
image.png
二:使用函数_CSVRead()来调取csv文件数据进行参数化
ps:那么肯定有人问了,那么复杂高深的东西,函数咋写呀?
这里jmeter特意提供了函数帮助器来帮助我们有效快速的使用函数
1.第一步打开函数助手
点击入口
image.png image.png
当然参数1:也可以填写,例如next下一个,*别名
当然参数2:也可以填写,例如 *别名
点击生成按钮,便可生成函数
image.png换行
在jmeter5.0以后当读取csv里的一行值完成后会自动换取下一行的数据,当你csv数据是两行,4个线程时,结果csv当读取到最后一行时还会自动换行重新开始。
使用时:
${__CSVRead(G:\360MoveData\Users\123\Desktop\abc.csv,next)}
别名
释义:可以用别名来代替这较长的文件地址,
别名的好处:当文件地址就该时这里就该一次别名中的地址就可以了
image.png
1.生成的别名
${__CSVRead(G:\360MoveData\Users\123\Desktop\abc.csv,*kkbiename)}
2.使用的别名
${__CSVRead(*kkbiename,1)}
使用时:
第一条值:
${__CSVRead(G:\360MoveData\Users\123\Desktop\abc.csv,*kkbiename)}${__CSVRead(*kkbiename,1)}
第二条值:
${__CSVRead(*kkbiename,2)}
第三条值:(如果需要加上换行)
${__CSVRead(*kkbiename,3)}${__CSVRead(*kkbiename,next)}
函数threadNum线程数
结合threadNum关键字可以实现多分csv文件的读取,可以将文件的名称通过1,2,3进行排列,再使用threadNum进行读取。
${__CSVRead(G:\360MoveData\Users\123\Desktop\abc${threadNum}.csv,1)}
上述的两个方法如果按性能来算的话推荐大家使用方法一,
方法一运行jmeter后就会打开一次csv文件
方法二运行jmeter后每一条的CSVRead每一条函数就会打开一次文件,
而打开文件时会消耗系统资源。
所以推荐方法一哦,当然方法二更加灵活
到这里就结束啦,还请大家来个大大的👍
网友评论