Jmeter实现每个线程使用各自的CSV配置文件写

文章介绍了在JMeter中如何实现每个线程使用各自的CSV配置文件,以达到数据隔离。主要提供了两种解决方案:一是利用BeanShell前置处理器按线程号或用户token读取特定文件;二是使用CSVRead函数结合线程数动态指定文件名,但此方法不支持自定义分隔符。
摘要由CSDN通过智能技术生成

Jmeter实现每个线程使用各自的CSV配置文件

需求背景

在使用多线程组模拟多用户并发测试时,每个用户所使用的数据源不一样,通过常规的添加配置文件-> CSV Data Set Config,文件共享属性只能设置所有现场、当前线程组,当前线程,前面两种是所有线程共同读取该文件,各线程读取先后顺序无法保证,导致将所有线程的源数据聚合到一个文件的想法泡汤;最后一直共享当前线程就更不行了,意思是每个线程都使用这个文件,线程之间各用各的,互不影响,每个线程都是从第一行数据开始依次读取,不同于前面两种的是每个线程读取的行数据是其他线程最后读取行号的下一行数据,无论那种方式都无法解决线程间的数据隔离。

解决方案

要做到线程间数据隔离,那么源数据就必须分开保存,要么保存在不同文件中,要么文件名相同路径不同

方法一:使用beanShell前置处理器读取文件内容
beanShell功能强大,几乎没有解决不了的问题,但代码繁琐,写的不好可能影响效率,大致思路是根据线程号查找文件或者根据不同用户的token查找文件,所有源文件要么按照线程号区分要么按照用户token区分,然后再beanShell里获取当前线程的线程号或者token,根据该值获取文件名,然后写个读取文件函数,注意每次读取后下次读取要读取下一行

方法二:使用CSVRead函数替代CSV Data Set Config配置文件:${__CSVRead(fileName,columNum)}
第一个参数:fileName表示要读取的文件名,假如10个线程,每个线程所有的源数据保存在src.csv文件中,10线程按照线程号区分源数据文件,则可将10个源数据文件依次命名为src1.csv/src2.csv...src10.csv,那么fileName传参就可以这么写:./src${__threadNum}.csv
第二个参数:columNum表示获取的列号,列号从0开始,若该值为next或者next()时表示跳转到下一行;所以每次使用完必须执行下${__CSVRead(./src${__threadNum}.csv,next)},否则会一直读取第一行的数据,该调用可以放在整个json的最后面也可以放在url后面,若一次请求存在多次使用该文件时,只要不放在中间就行,next执行的结果是一个空字符,所以放哪都行
CSV方法的缺陷:不支持自定义分隔符,若你的csv文件不是用逗号分割每列数据时,该方法会识别不到,因为源码中使用的是默认分割符,没有提供外部分隔符,要想支持自定义分隔符需要修改源码文件类CSVRead,增加一个参数,打包后替换当前lib/ext/目录的ApacheJMeter_functions.jar文件
JMeter是一款功能强大的性能测试工具,可以使用CSV文件来提供测试数据。下面是使用CSV文件的步骤: 1. 创建CSV文件:首先,你需要创建一个包含测试数据的CSV文件。可以使用Excel或文本编辑器创建一个CSV文件,每一行代表一个测试数据,每一列代表一个参数。确保CSV文件的格式正确,并保存为CSV格式。 2. 添加CSV数据文件:在JMeter中,右键点击线程组,选择"Add" -> "Config Element" -> "CSV Data Set Config"。在CSV Data Set Config元件的"Filename"字段中,输入CSV文件的路径。确保文件路径是正确的。 3. 配置CSV数据集:在CSV Data Set Config元件中,你可以设置一些参数来控制如何使用CSV文件。例如,你可以设置文件的编码方式、分隔符、是否循环读取数据等。 4. 在测试计划中使用CSV数据:在需要使用CSV数据的请求中,可以通过使用变量名来引用CSV文件中的数据。在请求参数中,使用`${变量名}`的形式来引用CSV文件中的数据。例如,如果CSV文件中有一个名为"username"的列,你可以在请求参数中使用`${username}`来引用CSV文件中的用户名。 5. 运行测试:保存并运行你的测试计划。JMeter将会按照CSV文件中的数据进行测试。 总结起来,使用CSV文件来提供测试数据的步骤包括创建CSV文件、添加CSV数据文件、配置CSV数据集和在测试计划中使用CSV数据。这样,你就可以方便地使用CSV文件来进行JMeter性能测试了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值