Jmeter BeanShell 从数据库中获取数据并创建一个requesBody

一、前言

  在测试接口的时候常常会使用到数据库中的数据,当要使用大量的数据时,仅仅使用数据库查询是不够的。还需要使用自动化让操作更简便。

  下面以一个简单的例子阐述一下如何使用beanShell让代码更简便。就不说一些基础的操作了。

二、前提准备

  已经创建好了线程、连接数据库、使用数据库中的数据、http请求也是可以成功的。

  一个简单的小例子

  JDBC查询:

 

  requestBody:

{
    sqr:${sqr_1},    //申请人
    sqrbm:${sqbm_1},  //申请人部门
    sqrdw:${sqdw_1},  //申请人单位
    callback:"${callback_1}",   //回调地址
    qzsqbh:["${qzsqbh_1}"] //申请编号
}

 

 三、优化

1、JDBC中填写Result Variable names (这个是整个查询结果,Variable name 是针对每一列的查询结果)为dbInfo

2、在JDBC Request中添加一个Beanshell PostProcessor

3、在测试计划中添加有关json的jar包,因为在shell脚本中会使用到json

4、先定义一个对象存储得到的数据,是一个list中包含map的对象。定义一个空的json对象 requestBody

var dbInfo = vars.getObject("dbInfo");

JSONObject requestBody = new JSONObject();

5、循环获取每行的数据、并将数据存储在json中

for(var obj : dbInfo) {
    int sqr = Integer.parseInt(obj.get("c_sqr"));
    int sqrbm = Integer.parseInt(obj.get("c_sqbm"));
    int sqrdw = Integer.parseInt(obj.get("c_sqdw"));
    String callback = obj.get("c_callback");
    
    requestBody.put("sqr",sqr);        
    requestBody.put("sqrbm",sqrbm);    
    requestBody.put("sqrdw",sqrdw);    
    requestBody.put("callback",callback);    
    requestBody.put("qzsqbh","XCVBNMDFDEDSSSSFRRFDGDFGFD122EDFD45454");    
}

6、将拼接好的json对象转为string,直接传入http request中可以了

vars.put("requestBody",requestBody.toString());

 

posted @ 2018-10-17 20:09  珍真小心  阅读(2915)  评论(0编辑  收藏  举报