zoukankan      html  css  js  c++  java
  • 使用Loadrunner进行文件的上传和下载

    最近使用loadrunner中需要录制文件的上传和下载,上传功能模块利用录制可以直接实现,下载无法实现,在网上找到了一段代码,自己动手试验了下,发现没有用

    辛苦找到的,还是记录下吧

    (1)LoadRunner上传文件

             web_submit_data("importStudent.do",

                       "Action=https://testserver/console/importStudent.do",

                       "Method=POST",

                       "EncType=multipart/form-data",

                       "RecContentType=text/html",

                       "Referer=https://testserver/console/displayStudentList.do",

                       "Snapshot=t12.inf",

                       "Mode=HTTP",

                       ITEMDATA,

                       "Name=uploadFile", "Value=D://Excel//data161955.zip", "File=yes", ENDITEM,

                       LAST);

    注:脚本录制使用Http/Html协议或Click and Script协议均可,以上是使用Http/Html录制的的脚本。需要特别注意的是,无论使用哪种协议录制,待上传的文件路径及文件名称只能为英文字符,而不能为中文字符。否则,可能将文件上传的二进制流同时录制到LR的脚本中。

    这个问题同时也说明,LR对中文的支持还远不够。

    下面是该应用更详细的示例。

    Action()

    {

             //定义double类型的变量trans_time,用来保存事务的执行时间。

             double trans_time;

             //定义int类型的变量status,用来保存事务执行的返回的值。

             int status;

             lr_start_transaction("测试");

            

    //使用内置函数lr_get_transaction_duration获取事务的执行时间。

             trans_time=lr_get_transaction_duration("测试");

             status=     web_submit_data("importStudent.do",

                                         "Action=https://testserver/console/importStudent.do",

                                         "Method=POST",

                                         "EncType=multipart/form-data",

                                         "RecContentType=text/html",

                       "Referer=https://testserver/console/displayStudentList.do",

                                         "Snapshot=t12.inf",

                                         "Mode=HTTP",

                                         ITEMDATA,

                                         "Name=uploadFile", "Value=E://datafile//data01.zip", "File=yes", ENDITEM,

                                         LAST);

             //增加手工事务,如果该测试事务执行返回值为0,则事务执行成功,否则执行失败。

             if (status == 0)

                       lr_end_transaction("测试", LR_PASS);

        else

                       lr_end_transaction("测试", LR_FAIL);

             //打印事务执行时间。

             if (trans_time)

                       lr_output_message("事务执行时间为:%f 秒",trans_time);   

        else

                       lr_output_message("事务执行时间未知!");

       

             return 0;

    }

    以下是LR的帮助文档中的web_submit_data函数的一个应用示例,从该示例中也可见一斑。

             web_submit_data("Attachments",

           "Action=http://barton.cottage@.Devonshire.uk/Attachments?YY=45434",

           "Method=POST",

           "EncType=multipart/form–data",

           "TargetFrame=",

           "RecContentType=text/html",

           "Referer=http:///barton.cottage@.Devonshire.uk/Compose?YY=20435",

           "Snapshot=t5.inf",

           "Mode=HTML",

           ITEMDATA,

               "Name=userFile0",

               "Value=E://sense_sensibility//Elinor.txt",

               "File=yes",

               "ContentType=text/html", // Override default "text/plain" for .txt files

           ENDITEM,

               "Name=userFile1",

               "Value=E://sense_sensibility//Marianne.jpg",

               "File=yes",

           ENDITEM,

           LAST);

    (2)LoadRunner下载文件

    Action()

    {

           /*下载帮助文档*/

           //定义一个整型变量保存获得文件的大小

           int flen;

        //保存文件句柄

           long filedes;

        //保存文件路径及文件名

        char file[256]="/0";

           //定义一个随机数

        char * strNumber;

           //Returns the string argument after evaluating embedded parameters.

        strNumber=lr_eval_string("{RandomNum}");

           //将路径保存到file变量中

           strcat(file,"D://Excel//");

           //将获得的随机数拼接在file变量之后

        strcat(file,strNumber);

           //将下载的文件后缀名.rar拼接在file变量之后

        strcat(file,".rar");

           //到此为止一个LoadRunner已经获得了一个完整的文件名

           //设置参数的最大长度,注意该值必须大于文件的大小

           web_set_max_html_param_len("20000");

           //使用关联函数获取下载文件的内容,在这里不定义左右边界,获得服务器响应的所有内容

           web_reg_save_param("fcontent",

         "LB=",

         "RB=",

         "SEARCH=BODY",

         LAST);

           /*下载帮助文件*/

           lr_start_transaction("下载帮助文件"); 

           //发送下载帮助文件的请求

           web_url("DownLoadServlet",

                  "URL=https://testserver3/servlet/DownLoadServlet?filename=help",

                  "Resource=1",

                  "RecContentType=application/x-msdownload",

                  "Referer=",

                  "Snapshot=t41.inf",

                  LAST);

           //获取响应中的文件长度

           flen = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);

           if(flen > 0) 

           {

                  //以写方式打开文件

                  if((filedes = fopen(file, "wb")) == NULL)

                  {

                         lr_output_message("打开文件失败!");

                         return -1;

                  }

                  //写入文件内容

                  fwrite(lr_eval_string("{fcontent}"), flen, 1, filedes);

                  //关闭文件

                  fclose(filedes);

           }

           lr_end_transaction("下载帮助文件",LR_AUTO);

           return 0;

    }

  • 相关阅读:
    C++成员变量与函数内存分配
    Sqlite ContentProvider Loader 上下文 对话框
    好书好人生--读书的步骤
    小智慧40
    流媒体开发之-直播界面切换电视台频道
    HDU 4617Weapon(两条异面直线的距离)
    BON取代半岛电视,美国人要“换口味”了吗?
    【Todo】Lucene系统学习
    Zookeeper学习 & Paxos
    C++中的虚继承 & 重载隐藏覆盖的讨论
  • 原文地址:https://www.cnblogs.com/hushaojun/p/5651750.html
Copyright © 2011-2022 走看看