JMeter:如何从 beanshell 脚本中获取和使用 csv 值以避免"Too many open files"错误?



比方说,CSV文件(abc.CSV)包含10条登录凭据(电子邮件、密码)记录,我想使用Beanshell脚本一次获取这些值,只是为了确保CSV只需打开一次,避免为获取每一条记录而打开CSV文件10次,这会导致以下错误:

响应数据中的"打开的文件太多"

有什么办法吗?

我认为您考虑的解决方法不会解决"打开的文件太多"的问题。

IMHO,这只会降低测试的可维护性和可扩展性。

这是您帐户的服务器配置问题。

您应该应用有问题的建议:

  • JMeter Ubuntu:java.net.SocketException:打开的文件太多

您可以使用以下工具来完成此操作:

import org.apache.jmeter.threads.JMeterContextService;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.Hashmap;
import java.util.Map;
File csvFile = new File("/home/yourname/folder/csvFile.csv");
csvData = new Hashmap<String,String>();
csvData = null;
try (Scanner scanner = new Scanner(csvFile)) {
    while (scanner.hasNextLine()) {
        String[] line = scanner.nextLine().split(",");
        csvData.put(line[0],line[1]);
    }
} catch (FileNotFoundException ex) {
    ex.printStackTrace();
}
JMeterContextService.getContext().getVariables().put("csvHashmap", csvData);

这可以在开始时完成,您只需打开一次文件,然后使用存储在内存中的哈希映射对象。

最新更新