一、前言
在测试接口的时候常常会使用到数据库中的数据,当要使用大量的数据时,仅仅使用数据库查询是不够的。还需要使用自动化让操作更简便。
下面以一个简单的例子阐述一下如何使用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());