背景:
使用Jmeter 發送的http post請求中的某個參數有多個值(如請求示例中的deviceno,在實際中通常對應多選的業務場景,deviceno是從CSV文件中參數化讀取的):
請求示例:
{
"id":"",
"diningname":"風華苑餐廳",
"deviceno":"04201812001351,04201812001252,04201910000229,04201912000646",
"type":2,
"officezone":"10"
}
請求成功后,查詢數據表,發現deviceno的每個值都對應一條記錄:
使用Jmeter JDBC request查詢deviceno:
結果如下:
問題:
如何校驗寫入數據庫中的deviceno是否正確
方法:
在JDBC request下增加Beanshell Assertion,將jdbc request響應拼接成字符串、參數化讀取deviceno轉換為字符串,從而進行字符串比較,具體代碼如下:
import java.util.*;
//獲取jdbc request響應結果行數
var Num = Integer.parseInt(vars.get("dbDeviceno_#"));
StringBuffer buff = new StringBuffer("");
for(int i=1;i<=Num;i++){
String dbdeviceno = "dbDeviceno_" + i;
buff.append(vars.get(dbdeviceno).toString());
buff.append(",");
}
String deviceNo = vars.get("deviceno");
log.info("+++++++++++++++++++deviceNo+++++++++++++++++++++");
log.info(deviceNo);
//test1為jdbc request返回結果組成的字符串
String test1 = buff.deleteCharAt(buff.length()-1).toString();
//test2為參數化讀取deviceno轉換為字符串格式
String test2 = vars.get("deviceno").toString();
//判斷是否相等
if(test1.equals(test2)== true ){
Failure=false;
FailureMessage ="PASS:deviceno與期望值一致";
} else{
Failure=true;
FailureMessage ="Failure:deviceno與期望值不一致";
}