BeanShell-java指令碼
阿新 • • 發佈:2020-11-30
匯入jar包
測試計劃中,新增jar包,如下圖所示
同時,將jar包放到apache-jmeter-5.3\lib\ext\路徑下
java指令碼中,引數呼叫
BeanShell中新增引數名稱如下圖一
引數讀取:FSL =vars.get("FSL");
將引數讀取到FSL,如下圖所示
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import com.travelsky.test.*;
import com.travelsky.test.TUMSAPI;
import com.travelsky.mq.*;
import com.ibm.mq.*;
TUMSAPI ta = new com.travelsky.test.TUMSAPI();
FSL = vars.get("FSL" );
try{
//ta.conn("QL_TYPET_OUT_DEP1","10.221.3.167", "14190","S_TUMS","QM_TUMS");//ASR Q系統CA
ta.conn("QL_TYPET_OUT_DEP1","10.225.9.115", "14190","S_TYPEB","QM_TUMS");
}
catch(Exception e) {
}
public String send() throws Throwable{
String res;
String content = "20NOV20 130745001\r"+FSL;
log.info(content);
res = ta.putB_p("DEPFS1E","YQJTEST",content,"FSL");
log.info(res);
return res;
}
String res = send();
if (res.equals("54321")){
log.info("success");
}
ta.disConn();
將類的例項設定為全域性變數
import com.travelsky.test.*; import com.travelsky.test.TUMSAPI; import com.travelsky.mq.*; import com.ibm.mq.*; TUMSAPI ta1 = new com.travelsky.test.TUMSAPI(); log.info(ta1.getClass().toString());
// 設定全域性變數,執行緒組內使用 vars.putObject("ta", ta1); // vars想要賦值類例項,需要使用putObject ta = vars.getObject("ta");
// 設定全域性變數,跨執行緒組呼叫
props.put("ta", ta1); // props可以直接使用類例項 ta = props.get("ta");
遇到問題
一開始,是先使用了vars.put('FSL', bsh.args[0]),目的是為了將上面圖中的${FSL}傳入到引數中,其實這個使用方法存在一定問題,不用put,直接get就可以得到FSL引數的值,實際流程如上面所寫。
在使用vars.put('FSL', bsh.args[0])過程中發現,bsh預設的分隔符是空格,所以導致我FSL引數只能取到空格前的一部分而空格後的無法取到。解決方法是輸入超出被分割陣列長度的數字(但是個人感覺不太容易實現,尤其是類似json報文之類的)或者使用bsg.args[-1]即可獲得整體值。