zoukankan      html  css  js  c++  java
  • LR之Java Vuser

      虽然LR对C有较好的支持,但有时使用Java Vuser会更方便,以下描述通过LR来编写Java脚本以及调用jar包的基本步骤。

    1、安装配置java环境

      LR的java vuser脚本的执行依赖于脚本所在机器的java环境,LR并没有独立java运行环境,因此首先要在Vugen所在机器上安装java环境。特别注意:LR的不同版本对于JDK版本的支持是不同的,详见:http://blog.csdn.net/achang21/article/details/45540483。

    环境说明:

    LoadRunner11:安装路径:C:Program FilesHPLoadRunner

    平台:windows 7sp1 32位

    java版本:JDK1.6(LR11最高支持jdk1.6 32位)

    步骤:

    1)安装jdk1.6,安装目录:C:Program FilesJavajdk1.6.0_43

    2)配置环境变量CLASSPATH和PAHT

    在CLASSPATH中配置当前路径.和JDK的类库路径以及LR自己的类库路径,如:

    CLASSPATH=.;C:Program FilesJavajdk1.6.0_43lib;C:Program FilesJavajdk1.6.0_43jrelib;C:Program FilesHPLoadRunnerlib;C:Program FilesHPLoadRunnerclasses

    CLASSPATH加入: .;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar;C:Program FilesHPLoadRunnerclasses

    在PATH中增加配置当前路径.和JDK执行目录路径,如:

    PATH=.;C:Program FilesJavajdk1.6.0_43in;C:Program FilesJavajdk1.6.0_43jrein;C:Program FilesSlickEditV18.0.1win;C:ProgramFilesTortoiseSVNin

    PATH中加入%JAVA_HOME%in;%JAVA_HOME%jrein;D:Program FilesHPLoadRunnerin;

    3)重启下电脑,cmd中执行java -version检查环境是否正常

    2、新建java vuser脚本

        启动LR的Vugen中,新建一个Java Vuser协议类型的脚本:

          

       基本示例:

           

        如下可以看到,java vuser自动使用了vugen所在机器的java环境:

          

    3、调用java类

        当在LR中编写java脚本需要使用jdk标准库以外的类库时,直接将被调用的java字节码文件置于脚本目录下即可,步骤如下:

    1)在eclipse(Version: Luna Service Release 1 (4.4.1))中新建java Project项目,定义项目名称、路径以及选定使用的jre版本:

         

    2)在新建的项目中src目录下新建类Class,定义类名(一般以大写字母开头):

         

    3)编写java代码,其中通过package指定java文件所在的包,如下所示:

        

    4)将java项目输出目录(一般为项目的bin目录)下的字节码文件(.class)拷贝到LR的java vuser脚本目录下:

      eclipse java项目下生成的字节码:

         

      置于LR的java vuser脚本下:

       

    5)LR的java vuser脚本中进行调用,注意需要import进被调用的类:

    import lrapi.lr;
    import com.lr.test.*;
    
    
    public class Actions
    {
    
        public int init() throws Throwable 
        {
            return 0;
        }//end of init
    
    
        public int action() throws Throwable 
        {
            helloword.main((String[]) null);
                //lr.message("Notify:vuser:" + lr.get_vuser_id() + " testing!!!");
            return 0;
        }//end of action
    
    
        public int end() throws Throwable 
        {
            return 0;
        }//end of end
    }

    4、调用jar包

         以上调用java类的方法中也可以直接将java的类打包成jar包供LR的java vuser使用。

    1)生成jar包文件

    eclipse中导出jar包方法:

    a、在eclipse中选择你要导出的类或者package,右击,选择Export子选项; 

    b、在弹出的对话框中,选择java文件---选择JAR file,单击next; 

    c、在JAR file后面的文本框中选择你要生成的jar包的位置以及名字,注意在Export generated class files and resources和Export java source files and resources前面打上勾,单击next; 

    d、单击两次next按钮,到达JAR Manifest Specification。注意在最底下的Main class后面的文本框中选择你的jar包的入口类。单击Finish,完成。 你可以在dos环境下,进入你的jar所在的目录,运行 java -jar 名字.jar,检测运行是否正确。

    通过maven打jar包:

      mvn package -Dmaven.test.skip=ture

    2)将jar包导入到LoadRunner脚本中

      在Vuser Generator的Run-time Setting > Java Enviroment settings > Classpath 中选择 Add Jar or zip file,把jar包文件和必要的库文件引入

    5、实例(发送http post请求)

         由于示例脚本中需要调用外部类的加密方法,因此首先将外部的类jar包包含到LR中来,如下图所示,所有依赖的jar包需要都包含进来。

        

    脚本实例:

    注意:当需要使用web系列方法(web.reg_save_param等)时  需要import lrapi.web;

    /*
     * LoadRunner Java script. (Build: _build_number_)
     * 
     * Script Description: 
     *                     
     */
    
    import lrapi.lr;
    import lrapi.web; 
    import com.lr.test.*;
    
    public class Actions
    {
    
        public int init() throws Throwable 
        {
            return 0;
        }//end of init
    
    
        public int action() throws Throwable 
        {
            String str_result = "1";
    
            String html_body = "gw_address=<route_lanip>&gw_port=2060&gw_id=<gw_id>&route_mac=<route_mac>&route_version=<route_version>&SSID1=<ssid>&mac=<client_mac>&imei=&imsi=&openid=";
    
            String html_body_encode = EncruptCode.encruptCode(html_body);
            String htmlbody = "Body=p=" + html_body_encode;
    
            lr.message("html_body_encode:" + html_body_encode);
    
            try {
            
            lr.start_transaction("qq_app");
    
            //关联api_code值
            web.reg_save_param ("param_api_code", 
                   new String []{ 
                   "NOTFOUND=ERROR",
                   "LB=api_code":",
                   "RB=,",
                   "LAST"});
    
            //http post请求
             web.custom_request("web_post_request",
                 "Method=POST",
                          new String[]{ 
                          "URL=http://www.xxx.com/api/qqConnect",
                  htmlbody,
                              "TargetFrame=", 
                          "LAST"});
    
             //lr.output_message("param_api_code:" + lr.eval_string("{param_api_code}"));
    
             if (str_result.equals(lr.eval_string("<param_api_code>"))) 
             {
                 lr.end_transaction("qq_app", lr.PASS);
             }
             else 
             {
                  lr.end_transaction("qq_app", lr.FAIL);
             }     
    
            } 
            catch (Exception e) {}
    
            return 0;
        }//end of action
    
    
        public int end() throws Throwable 
        {
            return 0;
        }//end of end
    }
  • 相关阅读:
    Tenserflow学习日记(13)
    Tenserflow学习日记(12)
    Tenserflow学习日记(10)
    利用file_get_contents();抓取网络上需要的信息
    laravel5.4自定义验证规则
    getimagesize();获取图片的长度与宽度
    php得到程序的执行时间
    laravel 处理图片
    siege 压力测试工具的安装与使用
    laravel 实现点赞功能
  • 原文地址:https://www.cnblogs.com/yezhaohui/p/4180437.html
Copyright © 2011-2022 走看看