1. 程式人生 > 實用技巧 >BeanShell-java指令碼

BeanShell-java指令碼

BeanShell-java指令碼

匯入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]即可獲得整體值。