比方说,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);
这可以在开始时完成,您只需打开一次文件,然后使用存储在内存中的哈希映射对象。