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]即可获得整体值。



posted on 2020-11-30 15:30  杂货铺已被占用  阅读(58)  评论(0编辑  收藏  举报

导航