记录在jmeter中经常使用的一些java代码。
一、字符补齐
“计数器”元件存在补齐的功能,但有时还是会存在一些需要补齐字符的情况,而且仅通过计数器可能不是那么易操作。
//str-需补位的字符 length-目标长度 fit-补位字符串
String fillBlank(String str, int length, String fit) {
String temp = "";
if(str.length() < length) {
//计算需要补齐的位数
for(int i = 0; i < length - str.length(); i++) {
temp = fit + temp;
}
//在字符串前拼接补位字符串
str = temp + str;
}
return str;
}
二、字符串/整型相互转换
参数化数据时,偶尔需要对某个数据特殊处理。
// 字符串转整型
// 通过vars.get("变量名")获得的值为字符串,可能需要将它转为整型用于后续代码处理
// 可以使用Integer.parseInt强制转换
int level = Integer.parseInt(vars.get("level"));
for(int i = 1; i <= level; i++) {}
// 整型转字符串
// 通常用于日志输出,vars.put变量赋值
// 可以通过toString()方法进行转换
int i = 22;
log.info(i.toString());
三、字符串替换
可以用于字符串模板中的特定字符替换,一些固定模板格式的数据可通过此方法进行参数修改。
// 自定义字符串模板,可以使用“用户参数”设置变量,如:temp
// "This is testcontent [replace]."
// 在BeanShell中使用
String temp = vars.get("temp");
for(int i = 0; i < 3; i++) {
// 替换
temp = temp.replace("[replace]", i.toString());
}
四、生成随机数
在jmeter中也可以使用${__Random(min,max,)}生成随机数,此处记录使用java代码生成随机数的方式。
// System.currentTimeMillis()设置随机种子
Random random = new Random(System.currentTimeMillis());
// 使用,生成[min,max]的随机整数
int x = random.nextInt(max) % (max - min + 1) + min;
// 以生成[3,10]随机数为例
int x = random.nextInt(10) % (10- 3 + 1) + 3;
// 首先,生成[0-10)之间的随机数
// 其次,对(10-3+1)=8取余,得到[0-7]之间的随机数
// 然后,加上min=3
// 最后,生成的是3-10的随机数
五、写入内容到文本文件
将指定的文本内容写入到指定的文本文件中。
// 写入内容到目标文件, false-覆盖写入,true-追加写入
FileWriter fstream = new FileWriter(vars.get("dir") + File.separator + "data\\username.csv", false);
BufferedWriter out = new BufferedWriter(fstream);
// 通过vars.get(变量名)获取查询到的用户名集合
out.write(vars.get("username_1"));
out.close();
fstream.close();
六、随机选取文件
在某文件目录下随机选取文件。
File folder = new File(vars.get("dir") + File.separator + "files\\image");
File[] files = folder.listFiles();
Random rnd = new Random();
vars.put("file", files[rnd.nextInt(files.length)].getAbsolutePath());