• jmeter中beanshell脚本的使用


    周末学习了一下beanshell脚本的使用,下面用一个例子演示下

    首先一个请求A的响应内容如下

    {
        "status": "ok",
    "msg": "ok",
        "data": {
            "records": [{
                "id": 223,
                "contractClassify": null,
                "contractClassifyId": 874,
    "contractTypeId": 2,
                "formId": "135",
                }, 
                {
                "id": 229,
                "contractClassify": null,
                "contractClassifyId": 874,
    "contractTypeId": 1,
                "formId": "137",
                ],
                
            "total": 13,
            "size": 10,
            "current": 1,
        },
    }

    在进行处理前,先把一个jar包放进jmeter安装目录下的lib目录下 json-20180130.jar

    在请求A下新增一个BeanShell后置处理器,然后可以在里边编写脚本来处理数据

    1、首先先把返回内容转为一个json对象

    • 使用 prev.getResponseDataAsString()获取上个请求的返回数据(字符串格式);
    • 利用 JSONObject 将返回数据构造成一个 JSONObject对象,并将其赋给 responseData;
    • 使用log.info()打印一下结果,注意在使用log.info()时需要使用toString()将json对象转为字符串才能正常打印
    import org.json.*;
    
    String responseData = prev.getResponseDataAsString(); //获取请求的返回结果
    
    JSONObject response = new JSONObject(responseData);  //把返回值构造为json对象
    
    log.info("response="+response.toString());  // 打印一下结果

     2、获取返回数据中的 "data"

    • 使用 xx.get(key) 获取某个字段的内容
    data = response.get("data"); //获取返回数据中的data
    log.info("data="+data.toString());

    3、获取 "data"下的"total"

    • 如果json对象下嵌套了json对象,可以继续使用 .get(key) 来获取嵌套字段的内容
    total = response.get("data").get("total"); //获取返回数据中data下的total
    log.info("total="+total.toString());

     

     4、获取 "data"下"records"的内容

    • 由于records的内容是个数组,所以要使用 getJSONArray() 来获取它的数据
    records = response.get("data").getJSONArray("records");  //使用getJSONArray提取records数组
    log.info("records="+records);

    5、获取record数组的长度

    int len = records.length();  // 获取数组的长度
    String strlen = Integer.toString(len); //转为字符串
    log.info("len="+strlen); // 打印结果,其实直接打印len也行

     6、设置一个新变量,给后面请求使用

    vars.put("temp", String.valueOf(total)); // 创建一个变量temp,并把total的值转成字符串赋给它(必须转成字符串再赋给temp,不然会报错,也可以使用total.toString()转换)

    再新建一个请求B,然后在请求B下添加一个BeanShell后置处理器,如下

    这个BeanShell脚本如下

    String temp1 = vars.get("temp");
    log.info("temp1="+temp1)

    执行结果如下

    可以看到变量temp在下一个请求中引用成功,并且在后续的beanshell脚本中也能通过 vars.get(String key)获取(注意变量名加引号)

  • 相关阅读:
    lua module
    lua require
    lua io
    lua table2
    lua table1
    【leetcode】魔术排列
    【leetcode】速算机器人
    【leetcode】黑白方格画
    【leetcode】根据数字二进制下 1 的数目排序
    【leetcode】插入区间
  • 原文地址:https://www.cnblogs.com/hanmk/p/15170750.html
Copyright © 2020-2023  润新知