使用LR编写下载类脚本

如何下载并保存文件到本地,实现文件下载的脚本制作。以下是本人测试某系统总结整理的脚本,仅供参考。

#include "lrs.h"
Action()
{
// 示例一:

//第一种创建随机数的方法,此种方案是我们采用的
    int flen;             //定义一个整型变量保存获得文件的大小
    long filedes;         //保存文件句柄
    char file[256]="\0";  //保存文件路径及文件名
    char * strNumber;     //定义一个随机数
    strNumber=lr_eval_string("{RandomNum}"); 获取1~100个随机数
    strcat(file,"D:\\DownLoad\\"); //将路径保存到file变量中
    strcat(file,strNumber);        //将获得的随机数拼接在file变量之后
    strcat(file,".zip");           //将下载的文件后缀名.rar拼接在file变量之后

//第二种创建随机数的方法
    int flen;  //文件大小
    long filedes;  //响应数据内容大小
    char file[256]="\0"; //保存文件路径及文件名
    int rNum;         //定义一个随机数
    char S[8];       //数字由int转为char
    srand(time(NULL)); //初始化
    rNum= rand() % 100; //获得0~100的随机数
    sprintf(S,"%d",rNum);//int 转换为 char
    strcat(file,"D:\\DownLoad\\");//将d:\test路径赋值给file
    strcat(file,S);//在file后面加上随机数
    strcat(file,".zip");  //输出的文件格式

     web_set_max_html_param_len("20000");//设置参数的最大长度,注意该值必须大于文件的大小
     web_reg_save_param("Download","LB=","RB=","SEARCH=BODY", LAST);
     lr_start_transaction("下载"); 

     web_url("DownLoadBW","URL=http://IP:port/bsreport/download.action?fileName=/report/workdir/reportfile/20141231.txt.zip",
      "Resource=1",
      LAST ); 

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

  if(flen > 0)   //实际 4KB 的压缩文件
     {
     lr_end_transaction("下载",LR_PASS);
    if((filedes = fopen(file, "wb")) == NULL)  //以写方式打开文件
    {
     lr_output_message("Open File Failed!");
     return -1;
    }
    fwrite(lr_eval_string("{Download}"), flen, 1, filedes); //写入文件内容
    fclose(filedes);  //关闭文件
     }else{
     lr_end_transaction("下载",LR_FAIL); 

     }

  /**
   此种方法是把下载的文件下载到D:\\DownLoad目录下并命名为 C003_15087_01.txt.zip
   测试结果证明:在并发压力下,多个进程对同一个文件做保存、打开和替换,就会出现排队等待现象,
   大量占用执行机的内存资源。可能导致内存溢出。
  **/

//示例二:

    int flen;  //定义一个整型变量保存获得文件的大小
    long filedes;  //保存文件句柄
    char * file = "D:\\DownLoad\\C003_15087_01.txt.zip"; //保存文件路径及文件名
    web_set_max_html_param_len("60000");//设置参数的最大长度,注意该值必须大于文件的大小
    web_reg_save_param("Download","LB=","RB=","SEARCH=BODY", LAST);
    lr_start_transaction("产品下载");
    web_url("DownLoadBW",
            "URL=http://IP:port/bsreport/download.action?fileName=/report/workdir/reportfile/20141231.txt.zip",
   "Resource=1",
    LAST ); 

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

     /***下面的方式是如果获取到的文件大小大于0,则判断交易成功,然后再去写文件,否则直接判断交易失败。

    if(flen > 0)   //实际 4KB 的压缩文件
     {
     lr_end_transaction("下载",LR_PASS);
    if((filedes = fopen(file, "wb")) == NULL)  //以写方式打开文件
    {
     lr_output_message("Open File Failed!");
     return -1;
    }
    fwrite(lr_eval_string("{Download}"), flen, 1, filedes); //写入文件内容
    fclose(filedes);  //关闭文件
     }else{
     lr_end_transaction("下载",LR_FAIL);
     }
    ***/
   /***下面的方式是如果写文件成功就判断交易成功,否则交易失败
   if(flen > 0)
      {
        if((filedes = fopen(file, "wb")) == NULL)
        {
            lr_output_message("Open File Failed!");
         lr_end_transaction("下载",LR_FAIL);
            return -1;
        }
        fwrite(lr_eval_string("{Download}"), flen, 1, filedes);//写入文件内容
        fclose(filedes);  //关闭文件
    lr_end_transaction("下载",LR_PASS);
    }
    ***/

/**
   此种方法是只从服务器上获取下载的文件资源路径即可,不把资源下载到本地。
   测试结果证明:在并发压力下,大量占用执行机的内存资源。压力达到一定程度会导致内存溢出。
**/

//示例三:

     long flen;
     web_set_max_html_param_len("50000");//设置参数的最大长度,注意该值必须大于文件的大小
     web_reg_save_param("Download","LB=","RB=","SEARCH=BODY", LAST);
     lr_start_transaction("下载");
    web_url("DownLoadBW",
             "URL=http://IP:port/bsreport/download.action?fileName=/report/workdir/reportfile/20141231.txt.zip",
             "Resource=1",
               LAST );
       flen = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);//获取响应中的文件长度
    if(flen > 0)   //实际 4KB 的压缩文件
     {
     lr_end_transaction("下载",LR_PASS);
     }else{
     lr_end_transaction("下载",LR_FAIL);
     }

return 0;
  }

原文地址:https://www.cnblogs.com/ssj0723/p/9581610.html

时间: 2024-11-14 23:18:14

使用LR编写下载类脚本的相关文章

LoadRunner下载文件脚本

LoadRunner下载文件脚本 在看普泽关于pezybase的测试报告的时候,发现里面有用到jmeter(http协议)并发测试下载文件,考虑到后面可能需要在公司pezybase的并发下载,把之前使用过的loadrunner下载文件脚本重新运行和整理一下. 一.http协议 loadrunner使用http协议是无法录制到下载过程的,只会往服务器发送一个下载请求,其实服务器已经把数据返回给客户端了,但是loadrunner是录制不到保存文件到本地这个过程,所以就是需要我们手动把收到的内容保存打

编写无Java脚本的JSP页面

在上一章中总结了Web开发中应用MVC架构模式,将Servlet 用做控制器,JSP作为视图,JavaBean作为模型,实现业务流程控制,页面逻辑和业务逻辑的分离.然而,使用前面的技术实现MVC,并不是最完美的. 在当代的一个最佳的JavaWeb开发实践就是在MVC架构模式中,中和使用JavaBean,EL(expression language),JSP自定义标记库以及JSP标准标记库JSTL,编写无java脚本的JSP页面. 一 JSP表达式语言EL 在使用基于MVC架构模式的Web应用开发

linux软件管理之------编译安装nginx服务器并手动编写自动化运行脚本

红帽系列的 linux软件管理分为三类:1. rpm 安装软件.2. yum 安装软件.3. 源码包编译安装.前面两种会在相关专题给出详细讲解.源码包的编译安装是非常关键的,我们知道linux的相关版本非常多,相关的编译器,解释器也有很多,很多还有最小系统,嵌入式系统等等.同一功能的软件如果只有编译好的软件包,在其它linux的平台上,可能并不能正常安装运行,在此情况下,源码包编译安装出现了.所以本文的重点是以nginx为例,给出源码包编译安装的详细过程,同时带你手工编写自动化运行脚本. 准备工

Unity3D脚本:C#计时类脚本

Unity3D脚本:C#计时类脚本  unity3D更多资源教程免费下载,群153442627using UnityEngine;using System.Collections;/// <summary>/// C# timer 改编自Jeff 'PsychicParrot' Murray 的js的timer/// </summary>public class Timer : MonoBehaviour {private float timeElapsed = 0.0f;priv

Android App框架设计之编写基类BaseActivity

Android App框架设计之编写基类BaseActivity 编写基类BaseActivity - OOP里面子类里面能够共享父类的方法,提高代码的可复用性 - 基类的编写要根据实际项目的情况,有的可能很简单 比如只是显示 "关于" 信息, 业务功能非常少 你可以不用继承基类进行扩展 BaseActivity继承Activity 还是 FragmentActivity 还是其它? 也是根据你的技术要求,因为解决问题的方法有很多种,或者你根本不用写基类也能完成工作. 我们的目的是编写

品味性能之道&lt;九&gt;:利用Loadrunner编写socket性能测试脚本简述

一.概述 Loadrunner拥有极为丰富的工具箱,供予我们制造出各种奇妙魔法的能力.其中就有此次要讨论的socket套接字操作. 二.socket概述 socket是操作系统中I/O系统的网络延伸部分,它扩展了操作系统的基本I/O到网络通信,使进程和机器之间的通信成为可能.如果想完全地理解socket在Loadrunner中如何工作的,熟悉一些关于它的历史会很有帮助. 当前常用的socket,最早起源于BSD UNIX类的操作系统.在UNIX系统上,比如BSD,把对网络的支持加入操作系统,以一

工程师技术(五):Shell脚本的编写及测试、重定向输出的应用、使用特殊变量、编写一个判断脚本、编写一个批量添加用户脚本

一.Shell脚本的编写及测 目标: 本例要求两个简单的Shell脚本程序,任务目标如下: 1> 编写一个面世问候 /root/helloworld.sh 脚本,执行后显示出一段话"Hello World!!"   2> 编写一个能输出系统信息的 /root/sysinfo 脚本,执行后依次输出当前红帽系统的版本信息.当前使用的内核版本.当前系统的主机名 方案: 规范Shell脚本的一般组成: 1> #! 环境声明(Sha-Bang)    2> # 注释文本 

Python中的类方法及属性总结举例,编写memcached启动脚本举例

1.类的属性总结类属性,也是公有属性, 类的私有属性, 对象的共有属性, 对象的私有属性, 内置属性, 函数的局部变量, 全局变量, #/usr/bin/env python # -*- coding:utf-8 -*- class MyClass(object): var1 = '类属性,类的公有属性 var1' __var2 = '类的私有属性 __var2' def func1(self): self.var3 = '对象的公有属性 var3' self.__var4 = '对象的私有属性

学习MVC之租房网站(三)-编写实体类并创建数据库

在上一篇<学习MVC之租房网站(二)-框架搭建及准备工作>中,搭建好了项目框架,并配置了EF.Log4Net和进程外Session.接下来会编写Eneity类并采用CodeFirst的方式创建数据库. 一.数据库表结构举例 1. 在按照CodeFirst方式编写Entity类之前,仍然是需要先搞清楚数据库的表结构.首先肯定会有用户.管理员.角色.权限等相关的表,然后针对租房的特殊场景,还有房屋.房屋家电配置.房子所在的地址包括城市和区域等. 2. 这里面有两张表比较特殊,T_Settings和