1、当需要遍历csv文件中所有案例数据,可以在【线程组】中设置“线程数”为csv的行数,但这样每次修改csv用例条数后都需要修改脚本,比较麻烦。可以通过以下方法解决:


2、当案例数量过大时,在csv data set config 里设置每一列的变量名称时,不方便测试案例的编辑,可通过以下方法解决:


3、Jmeter相对路径的使用
脚本的迁移让我们不得不考虑使用相对路径,Jmeter的默认路径指向jmeter_home/bin目录,我们一般也不会把所有的jmx脚本放到bin目录下,不便于管理。可以通过以下方法解决:



4、xls转换为csv文件
我们通常使用excel直接打开csv文件来编辑测试案例数据,但是位数过长的字段会被转换为科学计数法,以致数据失真。当然有个比较常见的方法是通过excel的导入数据功能(具体方法自行百度)来解决以上问题,下面跟各位分享一个小技巧,通过xls文件转换为csv文件,后续直接在xls文件编辑测试案例即可;

/*
* xls转换为csv文件
*/
public static void xlsToCsv(String caseName) {
String buffer = "";
try {
String fileName = "..\\TESTCASE_XLS\\"+caseName +".xls";
File file = new File(fileName);
// 设置读文件编码
WorkbookSettings setEncode = new WorkbookSettings();
setEncode.setEncoding("GB2312");
// 从文件流中获取Excel工作区对象(WorkBook)
Workbook wb = Workbook.getWorkbook(file, setEncode);
Sheet sheet = wb.getSheet(0);
for (int i = 0; i < sheet.getRows(); i++) {
for (int j = 0; j < sheet.getColumns(); j++) {
Cell cell = sheet.getCell(j, i);
buffer += cell.getContents().replaceAll("\n", "") + ",";
}
buffer = buffer.substring(0, buffer.lastIndexOf(","))
.toString();
buffer += "\n";
}
} catch (BiffException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// write the string into the file
//默认路径:D:\Progrom Files\apache-jmeter-3.1\bin
String savePath = "..\\TESTCASE\\"+caseName +".csv";
File saveCSV = new File(savePath);
try {
if (!saveCSV.exists())
saveCSV.createNewFile();
BufferedWriter writer = new BufferedWriter(new FileWriter(saveCSV));
writer.write(buffer);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
5、跨线程组传递变量
有时候需跨线程组传递变量,可以使用_setProperty和_property/_P函数实现:


6、使用Debug Sampler调试
有些时候需要进行脚本调试,可以使用Debug Sampler。JMeter properties和System properties默认选择false,这两个就是JMeter和系统的属性,一般不会发生变化。JMeter variables是自定义变量;


网友评论