您的位置:首页 > 其它

使用Loadrunner进行文件的上传和下载

2017-03-26 16:30 357 查看
最近使用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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: