Jmeter BeanShell 從數據庫中獲取數據並建立一個requesBody

1、前言

  在測試接口的時候經常會使用到數據庫中的數據,當要使用大量的數據時,僅僅使用數據庫查詢是不夠的。還須要使用自動化讓操做更簡便。shell

  下面以一個簡單的例子闡述一下如何使用beanShell讓代碼更簡便。就不說一些基礎的操做了。數據庫

2、前提準備

  已經建立好了線程、鏈接數據庫、使用數據庫中的數據、http請求也是能夠成功的。json

  一個簡單的小例子測試

  JDBC查詢:優化

 

  requestBody:spa

{
    sqr:${sqr_1},    //申請人
    sqrbm:${sqbm_1},  //申請人部門
    sqrdw:${sqdw_1},  //申請人單位
    callback:"${callback_1}",   //回調地址
    qzsqbh:["${qzsqbh_1}"] //申請編號
}

 

 3、優化

一、JDBC中填寫Result Variable names (這個是整個查詢結果,Variable name 是針對每一列的查詢結果)爲dbInfo線程

二、在JDBC Request中添加一個Beanshell PostProcessorcode

三、在測試計劃中添加有關json的jar包,由於在shell腳本中會使用到json對象

四、先定義一個對象存儲獲得的數據,是一個list中包含map的對象。定義一個空的json對象 requestBodyblog

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

JSONObject requestBody = new JSONObject();

五、循環獲取每行的數據、並將數據存儲在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");    
}

六、將拼接好的json對象轉爲string,直接傳入http request中能夠了

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

相關文章
相關標籤/搜索