很多童鞋不知道对于Jmeter的Query Type 不知道选哪个,为什么选,怎么选!
下面这边做个简单的分析,
那么首先什么是CSV Data Set Config,有什么用呢?
CSV Data Set Config是用来插入引用文件的一个配置元件,假设说童鞋们在做测试的时候,需要插入多条数据,插入上百条数据的时候,如果用select语句插入的话就显得非常麻烦,那么就可以用csv来完成,也就是所谓的批量取数据
Filename:就是你要导入的文件地址(TXT文档里面写入你想要添加的批量型数据)注意:文档路径不要用中文路径,这边为了直观表达所以用中文写出来了。
File encoding:编码
variable Names(comma-delimited):变量名,这个变量名根据“用户自定义的变量”来写进去,例如txt文档里面包括有“姓名、性别、年龄”,那么这边就可以填入name,sex,age。类似这样的~
Delimiter(Use ' ' 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-20160508230821530-441577401.png)
allow quoted data 允许引用数据值
![](https://images2015.cnblogs.com/blog/911086/201605/911086-20160508230842155-1694941935.png)
例如
如果txt文件内容中 上海 添加双引号 即 “上海" ,需要同时添加进数据库 那么 allwo quoted data 这边要选择为false
![](https://images2015.cnblogs.com/blog/911086/201605/911086-20160508230902687-1678848826.png)
![](https://images2015.cnblogs.com/blog/911086/201605/911086-20160508231011734-393534807.png)
如果不想将双引号添加进数据库 那么就选择 ture![](https://images2015.cnblogs.com/blog/911086/201605/911086-20160508231027609-1470698804.png)
![](https://images2015.cnblogs.com/blog/911086/201605/911086-20160508231027609-1470698804.png)
![](https://images2015.cnblogs.com/blog/911086/201605/911086-20160508231045905-768160490.png)
recycle on eof 引用是否允许 重复,
例如 txt文件中 只有3条数据 ,在线程组中添加循环次数 超过三次,那么 结果显示 如下
![](https://images2015.cnblogs.com/blog/911086/201605/911086-20160508231239796-1712413026.png)
![](https://images2015.cnblogs.com/blog/911086/201605/911086-20160508231247562-1454252395.png)
结果如下
![](https://images2015.cnblogs.com/blog/911086/201605/911086-20160508231258577-2093102075.png)
如果 不允许重复,选择false
那么结果 会显示错误值
![](https://images2015.cnblogs.com/blog/911086/201605/911086-20160508231308249-821610031.png)
在stop thread on eof 注释:无数据添加是否停止
![](https://images2015.cnblogs.com/blog/911086/201605/911086-20160508231324780-1124958817.png)
如果选择 false
就是不停止,
会将循环次数 执行完成。
如果选择ture 如果没有数据添加时 即停止执行
下面是语句中的值 ,在csv中的variable 中 添加 即可
![](https://images2015.cnblogs.com/blog/911086/201605/911086-20160508231358984-1761083942.png)
![](https://images2015.cnblogs.com/blog/911086/201605/911086-20160508231401780-1566108758.png)
(二)csv中选择 选callable的情况分析
先来个错误的执行方式
查询语句 用下面的语句去插入语句以及查询出结果来
insert into Lam values(null,'小七','广州','222-2222');
select * from Lam;
当选择 callable 的时候,auto,选择false的情况,执行是成功,但是数据库中并不会添加任何数据。所以这么执行是错误的
![](https://images2015.cnblogs.com/blog/911086/201605/911086-20160508222921374-363251594.png)
![](https://images2015.cnblogs.com/blog/911086/201605/911086-20160508231602874-17026454.png)
![](https://images2015.cnblogs.com/blog/911086/201605/911086-20160508231625062-318531521.png)
当选择 callable 的时候,auto,选择ture的情况, 执行成功,数据库也正常添加数据。这种情况是正确的做法
![](https://images2015.cnblogs.com/blog/911086/201605/911086-20160508231745046-1920090455.png)
![](https://images2015.cnblogs.com/blog/911086/201605/911086-20160508231803921-1105077913.png)
总结,type选择 callable的时候 是不管 增删改语句放前面,还是查询语句 放前面,都是没有影响,
关键是:
当type选择callable(可调用的情况) 的时候,auto 要选择ture,jmeter才能正确的执行 并且成功添加数据。
如果type选择select (查询)或者 update(增删改)时候,
那么 auto也同样都是要选择ture; 选择false在jmeter中都是显示执行成功,但是数据库中并不会添加任何数据,反而会占用一行ID 位置
还有要说的就是 图如下,
如果 query中 查询语句是在第一行的情况,那么type要选择select;
![](https://images2015.cnblogs.com/blog/911086/201605/911086-20160508231836359-1037635229.png)
如果 query中 增删改语句是在第一行的情况,那么type要选择update;
![](https://images2015.cnblogs.com/blog/911086/201605/911086-20160508231841624-1894373018.png)