谈CSV参数化之前,我们先聊一聊【用户定义的变量】功能,这个功能,可以使我们将一些信息配置成参数,在不同的组件中获取。
添加【用户定义的变量】的方式:【线程组】 -> 添加 -> 配置元件 -> 【用户定义的变量】
如图所示,我新增了filePath与user两个变量,那么在当前线程组中,所有的组件都可以通过 f i l e P a t h 、 {filePath}、 filePath、{user}的方式获取到。
在JMeter组件中,获取变量的方式,是${变量名}。(BeanShell中除外)
虽然JMeter提供了【用户定义的变量】功能,但是实际场景中,它并不能满足我们的需求。
比如,同一个接口,我需要针对不同的场景做功能验证。
A场景:用户传输userName:zhangsan,password:123456,返回success。
B场景:用户传输userName:zhangsan,password:654321,返回error。
此时,如果我们使用【用户定义的变量】功能,数据配置比较麻烦不说,我们还需要创建多个HTTP请求来处理。
这种重复性工作,在系统开发中,我们是要思考如何避免的。(程序的本质,就是解放劳动力)
【用户定义的变量】一般用来配置全局统一信息,如CSV文件地址等。
我们可以通过【CSV数据文件设置】+【循环控制器】来解决。
循环控制器
【线程组】-> 添加 -> 逻辑控制器 -> 【循环控制器】
如图所示,循环控制器分为名称、注释、循环次数三部分。
其中,主要的是循环次数。可以选择永远,也可以固定次数(如图所示,固定3次),也支持参数化配置(这个后续有机会再写,通过迭代器的方式)。
CSV数据文件设置
在循环控制器中新增【CSV数据文件设置】。
【循环控制器】 -> 添加 -> 配置元件 -> 【CSV数据文件设置】
如图所示,文件名是本地csv文件路径,文件编码选择对应的编码集(一般默认UTF-8)。
变量名称,对应的是CSV的列。
笔者案例CSV如下,分三列,测试列、序号列、信息列。
测试,序号,信息
测试1,123,哈哈哈
测试2,456,嘿嘿嘿
测试3,789,额嘟嘟嘟嘟嘟嘟
变量名称,自己定义,在后续流程中通过 变量引入,如: {变量}引入,如: 变量引入,如:{num}。笔者将csv的三列内容,分别定义为test、num、message。
忽略首行:如果首行是列头,则选择true。
分隔符:CSV一般使用英文逗号分割,默认即可,如果是用其他符号分割,输入具体分隔符。
是否允许带引号:CSV中的文本如果有引号,则选择true。
遇到文件结束符再次循环:默认False,csv文件结束符,笔者没搞明白。
遇到文件结束符停止线程:同上。
线程共享模式:所有线程、当前线程组、当前线程,这个指的是CSV的作用域。
验证
配置好【循环控制器】和【CSV数据文件设置】之后,就可以验证了。
编写一个HTTP接口。
@PostMapping("/test/jmeter3")
public String test3(@RequestBody String str) throws Exception{
String res = "{\n" +
" \"status\":\"0\",\n" +
" \"message\":\""+str+"\"\n" +
"}";
return res;
}
这个HTTP接口是将请求报文作为message返回。
JMeter配置如图:使用test列的内容做HTTP请求的名字,将num列与message列的内容作为请求参数。
执行验证结果:文章来源:https://www.toymoban.com/news/detail-438328.html
文章来源地址https://www.toymoban.com/news/detail-438328.html
到了这里,关于JMeter学习笔记003-JMeter之CSV参数化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!