Jmeter实现筛数
测试一个接口,在本地数据库查出来很多数据,但是只有一部分数据可用。由于这个接口调用很多其他系统的接口(rpc调用),SQL很多用hibernate封装的,导致想查到具体的SQL非常困难,简单的方法就是对原有数据进行筛选,筛出可用的数据进行参数化。
之前使用loadrunner,筛数直接放在end里面,根据返回结果进行判断,成功的打印在本地即可,jmeter原理大体一样,稍麻烦些。
首先,需要写好一个接口并进行参数化。
然后需要写一个正则表达式,用来判断接口是否成功,后面做判断用。缺省值需要写上,后面判断会用。
最后添加一个后置的BeanShell PostProcessor,进行判断。代码如下。基本逻辑是先获取参数化值,然后创建文件,再进行判断,成功的打印到文件里。
import java.io.File;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileWriter;
vars.put("levid","${levid}");
vars.put("classid","${classid}");
vars.put("Stuid","${stuid}");
vars.put("year","${year}");
vars.put("term","${term}");
vars.put("grdid","${grdid}");
vars.put("subjid","${subjid}");
//vars.put("Claid","${getClaId}");
String getlevid = vars.get("levid");
String getclassid = vars.get("classid");
String getStuid = vars.get("Stuid");
String getyear = vars.get("year");
String getterm = vars.get("term");
String getgrdid = vars.get("grdid");
String getsubjid = vars.get("subjid");
String getclaId = vars.get("getClaId");
//if(getclaId == "NOT FOUND"){
// getStuid = "NOT FOUND";
// }
//log.info("======================"+getStuid);
log.info("**********************11"+getclaId);
try {
/* 写入Txt文件 */
File file = new File("D://stuId.txt"); // 相对路径,如果没有则要建立一个新的output。txt文件
if (!file.exists()) { //创建新文件
file.createNewFile();
}
FileWriter out = new FileWriter(file,true);
if (!getclaId.equals("NOTFOUND")){
// out.write(getStuid+"\r\n");
out.write(getlevid+ "," +getclassid + "," +getStuid+ "," + getyear + "," +getterm + "," + getgrdid + "," +getsubjid +"\r\n");
}
out.flush(); // 把缓存区内容压入文件
out.close(); // 最后记得关闭文件
} catch (Exception e) {
e.printStackTrace();
}