使用Beanshell Assertion实现Jmeter测试结果和数据库比对
原文:http://www.51testing.com/?uid-128005-action-spacelist-type-blog-itemtypeid-4380
在使用jemeter的过程中,有时候希望能够将jmeter的响应结果直接和数据库进行比对,可以使用Beanshell Assertion实现Jmeter测试结果和数据库比对,参考如下
import java.sql.*;
import java.util.*;
import java.lang.*;
import org.apache.regexp.*;
String drive = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://19x.16x.xx.xx:3306/";
String dbName = "Name";
String user = "user";
String pass = "pass";
String Myvar = vars.get("Param");
String query = "SELECT MyDescription From Mytable Where Mycriteria = '" + Myvar + "'";
Connection Mycon = null;
Statement Mystmt = null;
ResultSet Myrset = null;
String[] Comp = new String[24];
RE rex;
boolean found;
String Mypattern;
byte[ ] Myarr = (byte[ ])ResponseData;
String Myresp = new String(Myarr);
Mycon = DriverManager.getConnection(url+dbName, user, pass);
Mystmt = Mycon.createStatement();
Myrset = Mystmt.executeQuery(query);
int a=1; int b=0;
while (Myrset.next())
{
Comp[b] = Myrset.getString(1);
print(" "+ (a) +" " + Comp[b]);
Mypattern = Comp[b];
rex = new RE(Mypattern);
found = rex.match(Myresp);
print(Mypattern + (found ? " DOES MATCH " : " DOESN'T MATCH ") + "Response Returned\n");
if (found==false)
{ Failure = true;
FailureMessage = "The Values in the Response do not match the expected data."; }
a=a+1; b=b+1;
}
Myrset.close();
Mystmt.close();
以上代码可以根据实际情况修改,可以实现数据库验证!