很多童鞋不知道对于Jmeter的Query Type 不知道选哪个,为什么选,怎么选!
下面这边做个简单的分析,
那么首先什么是CSV Data Set Config,有什么用呢?
![](https://images2015.cnblogs.com/blog/911086/201605/911086-20160508223733780-1243302488.png)
![](https://images2015.cnblogs.com/blog/911086/201605/911086-20160508223812546-631333839.png)
CSV Data Set Config是用来插入引用文件的一个配置元件,假设说童鞋们在做测试的时候,需要插入多条数据,插入上百条数据的时候,如果用select语句插入的话就显得非常麻烦,那么就可以用csv来完成,也就是所谓的批量取数据
![](https://images2015.cnblogs.com/blog/911086/201605/911086-20160508225051968-201062867.png)
Filename:就是你要导入的文件地址(TXT文档里面写入你想要添加的批量型数据)注意:文档路径不要用中文路径,这边为了直观表达所以用中文写出来了。
File encoding:编码
variable Names(comma-delimited):变量名,这个变量名根据“用户自定义的变量”来写进去,例如txt文档里面包括有“姓名、性别、年龄”,那么这边就可以填入name,sex,age。类似这样的~
Delimiter(Use '\t' for tab):用什么来分割,“,”表示用逗号分割
Allow quoted data?:默认False 允许引用数据值
Recycle on EOF?:Ture 循环取值的意思,假设TXT文档只有3条数据,但是我要插入4条数据,那么取完之后是否循环取这些数据
Stop thread in EOF?:False 无数据添加是否停止
下面来举个例子
filename:引用 文件
![](https://images2015.cnblogs.com/blog/911086/201605/911086-20160508230742562-1382489774.png)
文件内容如下
allow quoted data 允许引用数据值
例如
如果txt文件内容中 上海 添加双引号 即 “上海" ,需要同时添加进数据库 那么 allwo quoted data 这边要选择为false
如果不想将双引号添加进数据库 那么就选择 ture
![](https://images2015.cnblogs.com/blog/911086/201605/911086-20160508231027609-1470698804.png)
recycle on eof 引用是否允许 重复,
例如 txt文件中 只有3条数据 ,在线程组中添加循环次数 超过三次,那么 结果显示 如下
结果如下
如果 不允许重复,选择false
那么结果 会显示错误值
在stop thread on eof 注释:无数据添加是否停止
如果选择 false
就是不停止,
会将循环次数 执行完成。
如果选择ture 如果没有数据添加时 即停止执行
下面是语句中的值 ,在csv中的variable 中 添加 即可
(二)csv中选择 选callable的情况分析
先来个错误的执行方式
查询语句 用下面的语句去插入语句以及查询出结果来
insert into Lam values(null,'小七','广州','222-2222');
select * from Lam;
当选择 callable 的时候,auto,选择false的情况,执行是成功,但是数据库中并不会添加任何数据。所以这么执行是错误的
当选择 callable 的时候,auto,选择ture的情况, 执行成功,数据库也正常添加数据。这种情况是正确的做法
总结,type选择 callable的时候 是不管 增删改语句放前面,还是查询语句 放前面,都是没有影响,
关键是:
当type选择callable(可调用的情况) 的时候,auto 要选择ture,jmeter才能正确的执行 并且成功添加数据。
如果type选择select (查询)或者 update(增删改)时候,
那么 auto也同样都是要选择ture; 选择false在jmeter中都是显示执行成功,但是数据库中并不会添加任何数据,反而会占用一行ID 位置
还有要说的就是 图如下,
如果 query中 查询语句是在第一行的情况,那么type要选择select;
如果 query中 增删改语句是在第一行的情况,那么type要选择update;