loadrunner中JavaVuser腳本的編寫


1、環境准備:

     LoadRunner11----->對應JDK1.6版本(32位)

     LoadRunner12----->對應JDK1.7版本(32位)

  (一)、JDK下載安裝完成后,配置環境變量:    

     1)、系統變量→新建 JAVA_HOME 變量 。    變量值填寫jdk的安裝目錄(例如:C:\Program Files (x86)\Java\jdk1.7.0_25)

     2)、系統變量→尋找 Path 變量→編輯,在變量值最后輸入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

     3)、系統變量→新建 CLASSPATH 變量,變量值填寫   .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意最前面有一點)

          系統變量配置完畢,檢驗是否配置成功 運行cmd 輸入 java -version (java 和 -version 之間有空格)

          若如圖所示 顯示版本信息 則說明安裝和配置成功。(紅色框中說明是32位版本)

          

     (二)、下載java編寫工具idea

               下載地址:https://www.jetbrains.com/idea/download/#section=windows,Community免費版

     

 2、編寫java代碼,實例代碼以md5加密算法為例,實現登錄和獲取訂單列表的功能。

        1)、使用idea工具,新建一個項目,命名為:myjavatest

        2)、在該項目下,新建一個包,命名為:mytestMd5

        3)、將java代碼拷貝到包下,最終目錄為:

              

         4)、將lib文件夾引入,解決報錯問題:

                  1、選擇File文件,如下:

                   

               2、

              3、添加之后的顯示:

                     

              4、將導入的Lib勾選:

                     

 

                5、至此,報錯信息已解決,可以直接調試、運行代碼。最終目錄結構:

                      

3、將調試通過的文件,導出為jar。

     1)、選擇File:

             

 

          2)、

                   

            3)、

                

             4)、

                  

 

             5)、進行構建:

                     

 

                 

 

              6)、完成后,目錄文件夾下生成jar包文件:

               

 

 4、在loadrunner中創建JavaVuser協議腳本:

       1)、將調試好的java代碼拷貝到loadrunner中:

            

import lrapi.lr;
//將包文件引入
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;

//引入MD5文件
import mytestMd5.MD5;
//引入HttpClientRequest文件
import mytestMd5.HttpClientRequest;
public class Actions
{

    public int init() throws Throwable {
        return 0;
    }//end of init


    public int action() throws Throwable {
        // 定義登錄URL地址
        String login_url = "http://******/mobile/api/user/login";
        // 定義請求的參數
        String login_data = "{\"mobile\":\"130********\",\"password\":\"123456\"}";
        // 調用HttpClientRequest類里面的sendpost方法
        //添加事物函數
        lr.start_transaction("登錄");
        String PostResult = HttpClientRequest.sendPost(login_url, login_data);
        System.out.println("登錄返回:"+ PostResult);
        JSONObject jsonobj = new JSONObject(PostResult);
        int status = (int) jsonobj.get("code");
        //根據status返回值,判斷登錄事物是否成功
        if(status == 0)
        {
            lr.end_transaction("登錄", lr.PASS);
        }
        else
        {
            lr.end_transaction("登錄", lr.FAIL);
        }
        System.out.println("code:" +status);
        //獲取token值
        String token = (String) jsonobj.getJSONObject("data").get("token");
        System.out.println("token:" +token);

        String modifypaypwd_url = "http://*********/mobile/api/user/resetpaypwd";
        //調用md5類里面的getmd5code這個方法
        String newPasswod = MD5.GetMD5Code("123456");
        System.out.println("newPasswod:" +newPasswod);
        String modifypaypwd_data = "{\"token\":\""+token+"\",\"password\":\""+newPasswod+"\"}";
        String PostMd5Result = HttpClientRequest.sendPost(modifypaypwd_url, modifypaypwd_data);
        System.out.println("PostMd5Result:" + PostMd5Result);
        return 0;
    }//end of action


    public int end() throws Throwable {
        return 0;
    }//end of end
}

 

      2)、設置RunTime Settings:

             

 

                         1、將lib文件下的包導入

                         2、將jdk目錄lib下的dt.jar、tools.jar導入

                         3、將構建完成的jar包導入

                        最終導入的文件如下:

                        

                            

 

               3)、運行效果如下:

                 

Starting iteration 1.
Maximum number of concurrent connections per server: 4      [MsgId: MMSG-26989]
Starting action Actions.
Notify: Transaction "登錄" started.
System.out: 登錄返回:{"code":0,"msg":"成功調用","data":{"id":443,"username":"test11","sex":1,"age":20,"mobile":"15989576517","email":"158000000011@test.com","gqid":"4000326","money":0.0,"pmoney":100.0,"createtime":1448868217000,"lasttime":1555392298486,"token":"TGBCHgxZMHv83Fu8HtizNy+5m1fVDGlnh/EO4TBvh7K97TNe1L9tEaJNlV/bCCrBxRU/jxaEwo/fQbjJJq9BrA==","identity":"7ca9dfc5987093f8"}}                                                                                                                                                      Notify:
Notify: Transaction "登錄" ended with a "Pass" status (Duration: 0.5548).
System.out: code:0                                                                                                                                                      Notify:
System.out: token:TGBCHgxZMHv83Fu8HtizNy+5m1fVDGlnh/EO4TBvh7K97TNe1L9tEaJNlV/bCCrBxRU/jxaEwo/fQbjJJq9BrA==                                                                                                                                                      Notify:
System.out: newPasswod:e10adc3949ba59abbe56e057f20f883e                                                                                                                                                      Notify:
System.out: PostMd5Result:{"code":0,"msg":"成功調用","data":{}}                                                                                                                                                      Notify:
Ending action Actions.
Ending iteration 1.

 

同樣的操作,獲取訂單列表代碼如下:

 

/*
 * LoadRunner Java script. (Build: _build_number_)
 * 
 * Script Description: 
 *                     
 */

import lrapi.lr;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.codehaus.jettison.json.JSONObject;


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;


//引入testmd5.HttpClientRequest文件
import mytestMd5.HttpClientRequest;

public class Actions
{

    public int init() throws Throwable {
        return 0;
    }//end of init


    public int action() throws Throwable {
         // 定義登錄URL地址
        String login_url = "http://********/mobile/api/user/login";
        // 定義請求的參數
        String login_data = "{\"mobile\":\"130********\",\"password\":\"123456\"}";
        // 調用HttpClientRequest類里面的sendpost方法
        
        //添加登錄事務函數
        lr.start_transaction("登錄");
        
        String PostResult = HttpClientRequest.sendPost(login_url, login_data);
        System.out.println("登錄返回:"+ PostResult);
        JSONObject jsonobj = new JSONObject(PostResult);
        int status = (int) jsonobj.get("code");
        
        //根據status返回值,判斷登錄事務是否成功
        if(status == 0)
        {
            lr.end_transaction("登錄", lr.PASS);
        }
        else
        {
            lr.end_transaction("登錄", lr.FAIL);
        }
        
        System.out.println("code:" +status);
        // 獲取token值
        String token = (String) jsonobj.getJSONObject("data").get("token");
        System.out.println("token:" +token);

        String tokenUTF8 = "";
        // 進行URLcode
        try {
            tokenUTF8 = URLEncoder.encode(token, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

        String get_url = "http://**********/mobile/api/order/getorders?";
        String param = "offset=0"+"&"+"token="+token;


        // 把token替換成tokenUTF8
        String Param = param.replace(token, tokenUTF8);
        
        //添加獲取訂單列表事務
        lr.start_transaction("獲取訂單列表");
        String GetResult = HttpClientRequest.sendGet(get_url, Param);     
        
        System.out.println("GetResult:" + GetResult);
        
        JSONObject jsonbb = new JSONObject(GetResult);
        int statusbb = (int) jsonbb.get("code");
        
        
        //根據statusbb返回值,判斷獲取訂單列表事務是否成功
        if(statusbb == 0)
        {
            lr.end_transaction("獲取訂單列表", lr.PASS);
        }
        else
        {
            lr.end_transaction("獲取訂單列表", lr.FAIL);
        }
        
        System.out.println("code:" +statusbb);
        return 0;
    }//end of action


    public int end() throws Throwable {
        return 0;
    }//end of end
}

 

 運行結果如下:

Starting iteration 1.
Maximum number of concurrent connections per server: 4      [MsgId: MMSG-26989]
Starting action Actions.
Notify: Transaction "登錄" started.
System.out: 登錄返回:{"code":0,"msg":"成功調用","data":{"id":443,"username":"test11","sex":1,"age":20,"mobile":"15989576517","email":"158000000011@test.com","gqid":"4000326","money":0.0,"pmoney":100.0,"createtime":1448868217000,"lasttime":1555393646521,"token":"TGBCHgxZMHv83Fu8HtizNy+5m1fVDGlnh/EO4TBvh7K97TNe1L9tEaJNlV/bCCrBxRU/jxaEwo/fQbjJJq9BrA==","identity":"7ca9dfc5987093f8"}}                                                                                                                                                      Notify:
Notify: Transaction "登錄" ended with a "Pass" status (Duration: 0.4899).
System.out: code:0                                                                                                                                                      Notify:
System.out: token:TGBCHgxZMHv83Fu8HtizNy+5m1fVDGlnh/EO4TBvh7K97TNe1L9tEaJNlV/bCCrBxRU/jxaEwo/fQbjJJq9BrA==                                                                                                                                                      Notify:
Notify: Transaction "獲取訂單列表" started.
System.out: null--->[HTTP/1.1 200 OK]                                                                                                                                                      Notify:
System.out: Date--->[Tue, 16 Apr 2019 05:47:26 GMT]                                                                                                                                                      Notify:
System.out: Transfer-Encoding--->[chunked]                                                                                                                                                      Notify:
System.out: Content-Type--->[application/json;charset=UTF-8]                                                                                                                                                      Notify:
System.out: Server--->[Apache-Coyote/1.1]                                                                                                                                                      Notify:
System.out: GetResult:{"code":0,"msg":"鎴愬姛璋冪敤","data":{"lists":[]}}                                                                                                                                                      Notify:
Notify: Transaction "獲取訂單列表" ended with a "Pass" status (Duration: 0.1213).

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM