Jmeter beanshell斷言:一次請求中的某個參數對應多個值,寫入數據表時對應多行記錄


背景:

使用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與期望值不一致";
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM