记录在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());