LR上传和下载文件

背景:测试中,有一个模块涉及上传和下载文件。

步骤:这里直接上脚本:

*** 上传文件 ***

web_submit_data("upLoadFile",
    "Action=https://{domain}:10001/v1/worksheet/upLoadFile/",
    "Method=POST",
    "EncType=multipart/form-data",     // 请求头中文件的传输格式。一般接口文档中会有。没有的话也可以抓包查看
    "TargetFrame=",
    "RecContentType=application/json",       //接收头中文件的格式
    "Referer=https://{domain}:10001/console/",
    "Snapshot=t9.inf",
    "Mode=HTML",
    ITEMDATA,
        "Name=file", "Value=C:\\upload\\test.png", "File=Yes", ENDITEM,    // 录制时这里只有文件名,但需要添加上传文件的绝对路径,否则回放时会报找不到文件的错误
        "Name=description", "Value=", ENDITEM,
        "Name=id", "Value={sheetId}", ENDITEM,   // 这里是关联的前面表单单号
    LAST);

*** 下载文件 ***

int flen;    // 文件长度
long filedes;   // 文件内容
char filepath[100] = "C:\\downloads\\test_";  // 文件存放路径和文件名

......   // 省略部分为其他操作

web_set_max_html_param_len("400000");    // 注意该值必须大于文件大小。实际上,这里就瞎蒙了一个值
web_reg_save_param("fcontent",     // 获取响应的全部内容,作为文件保存内容
    "LB=",                         // 这里不用写左右边界
    "RB=",
    "SEARCH=BODY",
    LAST); 

strcat(filepath, lr_eval_string("{nums}"));   // 这里是拼接一个随机的文件名。随机数的产生见下文
strcat(filepath, ".png");   // 拼接后缀

flen = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);  //获取响应中的文件长度

if(flen > 0)
{
    if((filedes=fopen(filepath,"wb")) == NULL)    // 以写的方式打开文件。这个文件就是要保存的目标文件
    {
        lr_output_message("文件操作失败");
        return -1;
    }else{
        fwrite(lr_eval_string("{fconent}"),flen,1,fileds);   //写入文件内容
        fclose(fileds);//关闭文件
    }
}

return 0;

PS:

1. 生成随机数的方法,除了使用rand()外,还可以这样用:参数列表中,新建一个参数名称,在Parameter type中选择“Random Number”

2. 在下载文件并保存到本地时,耗费了较长时间。因为没把脚本理解到。fopen(filepath, "wb");这里filepath就是想要保存的文件路径和文件名。

3.对上传文件做一点补充:在上文中的上传文件,请求体是form-data的格式。但如若遇到要传递的是json格式,应该如何处理呢。还是直接代码:

web_submit_data("uploadFile",
   "Action=http://192.168.0.5/api/uploadFile", 
   "Method=POST",
   "EncType=multipart/form-data",
   "TargetFrame=",
   "RecContentType=application/json",
   "Snapshot=t3.inf",
   "Mode=HTML",
   ITEMDATA,
       "Name=content",                             // 这里是文件上传时一起发送的参数的key
       "Value={\"name\":\"myTestFile\", \"type\": \"text\", \"minLength\": 1, \"maxLength\": 100, \"description\":\"\"}",        // 这里是文件上传时一起发送的参数的value
   ENDITEM,
       "Name=file",       
       "Value=C:/Users/admin/Desktop/myFile.txt",       // 这里是文件绝对路径
       "File=yes",
       "ContentType=application/octet-stream",       // 这里是文件上传时的格式
   ENDITEM,
   LAST);

4. 编写脚本过程中,遇到如下报错:

Action.c(13): Error -27216: Invalid argument (number 2)   [MsgId: MERR-27216]

这里的意思是,在函数web_submit_data()这里的第二个参数有误。原来是自己把原本的“Action=”,写成了“URL=”。

 

网上的参考资料:

https://www.cnblogs.com/yezhaohui/archive/2013/07/28/3221440.html

https://www.cnblogs.com/guanhe/archive/2006/06/27/436746.aspx

https://blog.csdn.net/meimei04/article/details/51210458

https://blog.csdn.net/huangjin0507/article/details/52169427

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下载Loadrunner压力机,可以按照以下步骤进行操作: 1. 首先,你可以按照引用中提供的链接,参考CSDN上的demo来自己编写一个Loadrunner压力机脚本。如果你不想自己编写,也可以使用已有的压力机脚本。 2. 如果你使用的是Windows操作系统,你可以通过Loadrunner Controller启用已经安装好的Ubuntu上的压力机,即Linux agent。这样可以利用Ubuntu上的压力机执行负载测试。 3. 如果你选择在Linux上安装压力机,你需要进入/opt/HP/HP_LoadGenerator/bin目录,并执行m_daemon_setup start命令来启动压力机。 4. 下载Loadrunner压力机的压缩文件loadrunner.zip,并将其上传到服务器上。然后使用unzip命令解压该文件。如果服务器上没有安装unzip工具,你可以执行yum install -y unzip命令来安装。 5. 设置压力机文件的权限,可以使用chmod命令将loadrunner文件夹及其内容设置为777权限。 6. 进入loadrunner目录,并执行安装脚本installer.sh,按照提示进行安装。在安装过程中,如果需要增加一个LR负载端的客户端,可以使用higkoo用户添加命令。 7. 配置环境变量,可以使用vim命令编辑/etc/csh.cshrc文件,在最后添加以下内容: ``` source /opt/HP/HP_LoadGenerator/env.csh setenv DISPLAY 0.0 ``` 8. 切换到higkoo用户并启动环境,可以使用su命令切换用户,并执行以下命令: ``` su higkoo ``` 9. 确保安装成功,可以执行以下命令来验证安装: ``` cd /opt/HP/HP_LoadGenerator/bin/ ./verify_generator ``` 请注意,具体的下载步骤可能会因为不同的操作系统和版本而有所不同。以上提供的步骤仅供参考,请根据实际情况进行操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值