Jmeter之beanshell

引子:

   jmeter支持的beanshell脚本语言,在处理复杂的接口关系较为灵活,支持标准java语句和表达式,另外包括一些脚本名和和语法

使用:

    1、函数和循环

// 对java的UNTIL 等可以不用引入
import java.util.List;
import java.util.ArrayList;

// bean 不支持 泛型

List phoneList=new ArrayList();


// 定义函数
public void addPones(List phoneList){
	phoneList.add("13213316700");
	phoneList.add("132133167001");
	phoneList.add("13213316703");
	}


addPones(phoneList);

// 普通for
for(int i = 0;i<phoneList.size();i++){
	log.info(phoneList.get(i));
	}

// foreach
for(String tel:phoneList){
	log.info("for each:"+tel);
	}

  2、内置对象 

/*
beanshell 内置对象

log    日志
label  当前取样器脚本名字
FileName  文件名
parameters   
bsh.args   beanshell 上方传入的参数
SampleResult
ResponseCode   默认200
ResponseMessage  默认ok
IsSuccess   true or false
ctx    JmeterContext 内置对象
vars.  全局变量
    vars.get("key")  vars.put("key","val")  vars.remove("key")  vars.putObject("key",new Object());

props  ------  java.util.Properties
	props.get("key")   props.put("key","value")

*/

log.info("label---->"+Label);
log.info("filename---"+FileName);
// bsh.args 上方传入的值

log.info("bsh.args----"+bsh.args[0]);

String test=vars.get("test");

log.info("test----"+test);
// 
vars.put("test","66666666");
String test=vars.get("test");
log.info("test----"+test);
// vars.get 取回来的是String  vars.put 只能是字符串
vars.put("test_get","999");

int test_get=Integer.parseInt(vars.get("test_get"));
log.info("test_get==="+test_get);


int test_obj=444;
test_obj++;
vars.putObject("test_obj1",test_obj);


vars.getObject("test_obj1");
log.info("test_obj1---"+test_obj);

 
// ResponseCode ResponseMessage IsSucess 字符串变量  可变

log.info("ResponseCode=======>"+ResponseCode);
ResponseCode=400;
log.info("ResponseCode=======>"+ResponseCode);
log.info("ResponseMessage=======>"+ResponseMessage);
ResponseMessage="nimei";
log.info("ResponseMessage=======>"+ResponseMessage);


log.info("IsSucess===="+""+IsSuccess+"")

  内置对象ctx和prev

import org.apache.jmeter.samplers.SampleResult;
// 可以看jmeter的api
SampleResult result=ctx.getPreviousResult();

String resCode=result.getResponseCode();
String result_data=result.getResponseDataAsString();

log.info("resCode========="+""+resCode);
log.info("result_data======"+result_data);


// prev = ctx.getPreviousResult(); jmeter 又做了一层封装

String resData=prev.getResponseDataAsString();
log.info("prev==="+resData);

  

posted @ 2021-06-20 19:12  Yuan_x  阅读(182)  评论(0编辑  收藏  举报