开头说一个世俗一点的观点作为闲聊,不少性能测试从业者认为使用工具略显肤浅,为了凸显自己的能力,信仰一切皆代码,甚至jmeter中简单的http请求也在beanshell写代码实现,实话实说,一般测试代码并不复杂,而且质量也并非很高,大家都忙,并没有时间去理解并维护冗长的代码,我认为只要达到测试目的,使用什么手段并不重要,怎么简单怎么用,最近有一个需求,将接口返回的数据,作提取,需要提取数据的数量随机,且需要每一笔数据都要做唯一性校验,只要这个接口返回,永久不允许重复,这个需求我首先建立mysql数据库,设唯一字段,通过比较jmeter自带的插件,使用post benshell提取返回数据并插库,我认为是比较灵活通用的方式,简单做个记录,jmeter自带的一些函数可以Mark下,下面代码也有个比较奇怪的地方,大家可以仔细观察并留言讨论;
import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; String res=prev.getResponseDataAsString(); String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://127.0.0.1:3306/csvt"; String user = "root"; String password = "123456"; String str = null; list=new ArrayList(); Pattern p = Pattern.compile("(\\[[^\\]]*\\])"); Matcher m = p.matcher(res); while(m.find()){ list.add(m.group().substring(1, m.group().length()-1)); } for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); str=list.get(i); } //System.out.println(memberId); //vars.put("usercode",memberId); try { // 加载驱动程序 Class.forName(driver); // 连续数据库 Connection conn = DriverManager.getConnection(url, user, password); if(!conn.isClosed()) System.out.println("Succeeded connecting to the Database!"); String[] aa=str.split(","); for(int j=0;j<aa.length;j++) { System.out.println(aa[j]); String sql = "INSERT into t_user (usercode) VALUES(?)"; PreparedStatement psql = conn.prepareStatement(sql); psql.setString(1, aa[j]); // 结果集 psql.executeUpdate(); psql.close(); } }catch (Exception e) { // TODO: handle exception e.printStackTrace(); }