Jmeter之动态读取文本CSV或者TXT参数的方法

在Jmeter接口参数中,有些参数是不能写固定的,要取动态的。比如取CSV文件,txt文件等,具体看你想要的是什么数据,固定的是否达到理想或者要求,如果不行,那就只能通过动态来读取。

比如我现在的需求:接口参数要传身份证号码,但是身份证号码只能是唯一的,不能重复。

第一种方法:CSV数据文件格式

Jmeter之动态读取文本CSV或者TXT参数的方法_第1张图片

Jmeter之动态读取文本CSV或者TXT参数的方法_第2张图片

 

具体设置参数和怎么在接口参数引用什么的就不过多描述了,可以百度搜索一下。也可以看上图,这种方法你可以引用地址路径是txt文本的,也可以是CSV格式的表格,都可以。但是这有一个弊端是,你第一次执行的时候,它会取第一个身份证A,执行第二次的时候还是会取第一个身份证A。因为没有做其它判断,用最简单的方式去实现你想要的效果。所以这就和需求补符了。想要的效果是第一次取了身份证A后,第二取第二个身份证B,而不是取同样的。然后就想到了一个升级版。

第二种:函数助手:__CSVRead

这个__CSVRead函数在函数助手里面可以找到,是用来随机取出文件里面的值。具体使用方法在函数助手里面也有解释 ${__CSVRead(D:/idcardlist.txt,${__Random(0,499,)})}随机取身份证。第一次随机取身份证A,第二次随机取身份证B。

直接在参数的地方传入这个值即可。D:/idcardlist.txt是你文件的路径,${__Random(0,499,)这个在多个参数之内进行随机。

每个值之间用英文逗号隔开即可,0是第一个开始,499是最后一个,所以取的时候会从0-499之间随机取一个值出来。

 

这个方法可以暂时解决了我想的效果,但也还是小概率取出同样的值,随机数是不固定的。所以没有能彻底解决我想要的结果。

后面就想到了第三种办法:

第三种:通过SQL语句去数据库排除重复的,然后取出一个值。

我们有两个环境,一个测试环境,一个验收环境。每个环境的身份证都是随机生成的,也有可能是重复的,但没有关系,通过写SQL语句是数据库里面查询验收环境的身份证,在测试环境是否存在,如果没有存在,就直接取出来就行。如果存在了就不要了。这种方法更加简便,只需要一个SQL即可解决重复的问题。jmeter里面也有通过数据库的请求和查询,不会的可以看看我前面写过的。

添加数据库连接JDBC Connection Configuration 然后就是数据库的请求JDBC Request 然后取出来的值给你定义的名字参数即可。

Jmeter之动态读取文本CSV或者TXT参数的方法_第3张图片

重点在SQL语句里面,直接把想要的查询出来即可,如果查询结果很多的话,每次都取第一个可以写SQL取第一条出来即可。或者也可以加遍历循环去取出来。然后在引用即可。

 

第三种方法可能不太适合你们,我只是举这个例子说明一下,根据自己的需求,能用最简单的方法就用最简单的方法,方法各种各样,总有一个会合适你。如果我一开始想到通过数据库去查询,这样就不会有上面那两种取值方式了。每一种方式都是有用的,找到最适合你们自己的就好。其它只是做来参考参考。会不会有人想到说删除数据呢?其实删除数据这个我个人认为是不建议去删除的,因为你一个接口的数据如果数据库表是独立的,所有字段和其它表或其它地方冲突用到的功能,你可以删掉,但是一个真正的项目,基本上数据库都是各种关联的数据,你删除了数据,如果没有删除干净,就会造成你测试数据不准确,你就会怀疑这个到底是对还是不对 为什么有些数据错了或者报错了等等问题  如果要删干净,你要清楚都有哪些表用到这些数据,哪些关联,然后去一个个删除,确保删干净了,这样比较复杂麻烦。所以基本我建议不要删除数据库的数据,可以多,但不能少。多数据但起码都是完整的数据,如果是少了,你不知道哪些地方会出错,数据到底准不准确。

你可能感兴趣的:(jmeter性能测试篇,jmeter读取CSV数据,jmeter读取动态参数)