您的位置:首页 > 运维架构 > Shell

jmeter中beanshell的基础使用

2019-06-20 14:39 113 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/marchxingchen/article/details/92831418

一、相关组件

定时器: BeanShell Timer

前置处理器:BeanShell PreProcessor

采样器: BeanShell Sampler

后置处理器:BeanShell PostProcessor

断言: BeanShell断言

监听器: BeanShell Listener

二、引用

1)、jar引用

测试计划中添加jar包

1、使用的jar包需先放入jmeter/lib/ext文件夹中

2、放置jar包后jmeter需重启

2)、非jar包引用

1、java文件

如下:

package test;

public class Myclass
{
    public int add(int a, int b)
    {
        return a + b;
    }    
}

 

java中双斜线输入后是单斜线

2、class文件

“javac+文件”将java文件转换为class文件

1、public class定义类和class定义类时: 如果一个类声明的时候使用了public class进行了声明,则类名称必须与文件名称完全一致。 如果类的声明使用了class的话,则类名称可以与文件名称不一致,但是执行的时候,执行的是生成后的名称【HelloJava】。

2、文件声明上: 在一个*.java的文件中,只能有一个public class的声明,但是允许有多个class的声明

3、class文件与原java文件放置同一目录下

3)、直接引用

在其它组件中设置参数

引用多个时每个引用参数间用空格隔开

1、传入参数引用

2、直接${}引用

三、常用内置方法

1)、vars、props

字符三种转换形式:

vars.put("aaaa","111".toString());
vars.put("aaaaa", "" + 1);
vars.put("aaaaaa", (String)"1");

vars和props的区别:

1、vars 只能保持String 或者Objec, props 是 Hashtable 对象

2、vars 只能在当前线程内使用,props 可以跨线程组使用

2)、log

设置信息显示在日志中,便于定位错误信息

3)、prev

获取当前线程组中的返回信息

放在请求下一层,如果与请求同层则取值为空

prev表示当前线程

四、后置处理

处理返回信息{“body”:{“apps”:[{“name”:”111”},{“name”:”222”}]}}提取name值,代码如下:

import org.json.*;

String response_data = prev.getResponseDataAsString();
vars.put("response_data",response_data);

JSONObject data_obj = new JSONObject(response_data);
String apps_str = data_obj.get("body").get("apps").toString();
vars.put("apps_str",apps_str);

JSONArray apps_array = new JSONArray(apps_str);
String[] result = new String[apps_array.length()];
vars.put("result",result);

for(int i=0;i<apps_array.length();i++){
    JSONObject app_obj = new JSONObject(apps_array.get(i).toString());
    String name = app_obj.get("name").toString();
    result[i] = name;
}
vars.put("result", Arrays.toString(result));

五、断言

对值进行比较,代码如下:

if(!"${ip}".equals("119"))
{
    Failure = true;
    FailureMessage = "error, check";
    }
else
{
    FailureMessage = "ok!";
    }

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: