我有一个 CSV 文件,其中包含我使用 Bean Shell 脚本读取的数据并基于它填充 ArrayList。下面是它的代码。
//Populate Beanshell script
import java.text.*;
import java.io.*;
import java.util.*;
ArrayList strList = new ArrayList();
try {
File file = new File("path/to/csv");
if (!file.exists()) {
throw new Exception ("ERROR: file not found");
}
BufferedReader bufRdr = new BufferedReader(new FileReader(file));
String line = null;
while((line = bufRdr.readLine()) != null) {
strList.add(line);
}
bufRdr.close();
}
catch (Exception ex) {
IsSuccess = false;
log.error(ex.getMessage());
System.err.println(ex.getMessage());
}
catch (Throwable thex) {
System.err.println(thex.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
现在我想以随机方式利用这些数据,所以我试图使用这样的东西
//Consumer bean shell script
//Not able to access strList since vars.put cannot store an object
Random rnd = new java.util.Random();
vars.put("TheValue",strList.get(rnd.nextInt(strList.size())));
Run Code Online (Sandbox Code Playgroud)
但我无法做到这一点,因为在 vars.put 中我不能存储数组或列表,我只能存储原始类型。所以我无法从另一个 BeanShell 脚本访问填充函数的 ArrayList。
我如何在这种情况下实现随机化,因为从性能的角度来看,每次调用 populate 函数都不好。
vars.put仅支持字符串值。有vars.putObject:
脚本还可以使用“vars”变量的 get() 和 put() 方法访问 JMeter 变量,例如: vars.get("HOST"); vars.put("MSG","成功"); . get() 和 put() 方法仅支持具有 String 值的变量,但还有 getObject() 和 putObject() 方法可用于任意对象。JMeter 变量对于线程来说是本地的,但可以被所有测试元素(不仅仅是 Beanshell)使用。
| 归档时间: |
|
| 查看次数: |
26709 次 |
| 最近记录: |