用LR录制文件下载并随机产生文件名

用LR录制文件下载并随机产生文件名

{H.IY:X.Tn0

8h&~-D|6fV0Action()51Testing软件测试网GE$nV}s,R
{51Testing软件测试网 }9sUS‘q
          int flen;        //定义一个整型变量保存获得文件的大小51Testing软件测试网Vf0U.JK m
    
a[email protected]%xT?U0          long filedes;    //保存文件句柄
"fY*e gvr$~P$}0       51Testing软件测试网o0eB6b;j~+[!x7Sw
          char file[256]="/0"; //保存文件路径及文件名 51Testing软件测试网.e1BA.yHb

51Testing软件测试网5J;[email protected]\M:a vnf

int rNum;         //定义一个随机数
#\({a.J8a\X0     
x@:V@x/W r q0          char S[8];       //数字由int转为char
g[XB i%E6vwC0                51Testing软件测试网n L5^,~ucV(r[5d
          srand(time(NULL)); //初始化

L*w‘yejyQ0

]"o‘F%{zkIH!E#zH"x0          rNum= rand() % 100; //获得0~100的随机数51Testing软件测试网$J6OfaS{!R"RyR

$m2au F*LR0          sprintf(S,"%d",rNum);//int 转换为 char51Testing软件测试网9q|M l%x y Ufe4u!S

"c$g2zVm0          strcat(file,"c://test");//将C:/test路径赋值给file
`%FF‘``5Gb2z0        
j-vC_W5\0          strcat(file,S);//在file后面加上随机数51Testing软件测试网 Sfm+Um5MW KTU!d*R

zkpz$u)s:q)N0          web_set_max_html_param_len("2000000");//设置页面接收最大的字节数,该设置应大于下载文件的大小

-r} Q@~G0

0RMk.JS$Me!O uOQ0//使用关联函数获取下载文件的内容,在这里不定义左右边界,获得服务器响应的所有内容51Testing软件测试网W^H:@1c D!k;A{8i9A-O
          web_reg_save_param("fcontent",
9UGSI5a)I‘m0          "LB=",51Testing软件测试网#F&O\ Ge&D.b*d:c S:P
          "RB=",
#en^ R"p0          "Search=BODY",
Mf @ roZG!w#M‘v\0          LAST);

X‘Q.O4Tb0

X6v8HL9W.t#i2s7?0
jl%?9~s sT2m0 web_url("download",
)`6|:P|Qqb-l0          "URL=http://www.51testing.com/ddimg/uploadsoft/20100107/testingguifan.pdf", //下载页面的URL51Testing软件测试网w$LU8F R b/^_
          LAST);51Testing软件测试网4T7i1yr,M5~

oe.v!B,V^:m0
w0P@/lRAD9vs5`0          flen = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE); //获得文件大小51Testing软件测试网A9y P%E7x k

51Testing软件测试网"j U4_/I8DP O#j

if(flen > 0)51Testing软件测试网#s+oC?l-F
                {
FUk7DdKY:M0                      if((filedes = fopen(file, "wb")) == NULL)51Testing软件测试网2N ]~0S`7]5L
                    {
zb@ Kmq8p m0                       lr_output_message("Open File Failed!");

9[G*|w5{)~e.Y)]:R051Testing软件测试网VL\!^$`9W;^

return -1;
z lA-g(E_iL:q0                    }
^ x.l:|"bx7F0             fwrite( lr_eval_string("{fcontent}"),flen,1,filedes );51Testing软件测试网R#[M-zIH

51Testing软件测试网[:K"p"L$a0~A!y"zf

fclose( filedes );51Testing软件测试网`‘v‘e,dmA
                 }

0A|F.QwhL7O0

P6X%\\9`0     return 0;
/b{A8ry@0}

LoadRunner下载文件脚本 

   在看普泽关于pezybase的测试报告的时候,发现里面有用到jmeter(http协议)并发测试下载文件,考虑到后面可能需要在公司pezybase的并发下载,把之前使用过的loadrunner下载文件脚本重新运行和整理一下。

   一、http协议

  loadrunner使用http协议是无法录制到下载过程的,只会往服务器发送一个下载请求,其实服务器已经把数据返回给客户端了,但是loadrunner是录制不到保存文件到本地这个过程,所以就是需要我们手动把收到的内容保存打本地即可。(http协议上传文件的完整过程是可以直接录制的,在UC中已经使用过)。

  注意:下面脚本中用到的LR函数如下,还使用了一些C语言基本的文件操作方法。在脚本中还可以加入一些判断来进行事务是否成功以及文件大小是否正确等的判断;

  web_reg_save_param:关联函数,放在http请求前面,保存请求返回的内容;

  web_url:http请求函数,向指定的url发送请求,下载文件也就是直接往下载链接发送请求;

  web_get_int_property:获取下载请求返回的文件长度;

  web_set_max_html_param_len:设置web_set_max_html_param_len方法中参数的最大长度,要求大于需要下载文件的大小;

Action() {

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

long fileContent;//保存文件句柄,也就是文件的内容

char fileName[]="";//保存文件路径及文件名

char * strNumber;

strNumber=lr_eval_string("test{NewParam}");//获取一个随机数并转化成字符串 ,NewParam设置参数为随机类型,这里根据自己需要进行参数化设置

strcat(fileName,"C:/test/");//将路径保存到file变量中

strcat(fileName,strNumber); //拼接文件名

strcat(fileName,".pdf");//拼接后缀名,根据需要设置,最后就完成了完整的路径和文件名

web_set_max_html_param_len("20000");//设置参数的最大长度,注意该值必须大于文件的大小

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

web_reg_save_param("fcontent", //返回的内容全部存储在fcontent这个参数中

"LB=",

"RB=",

"SEARCH=BODY",

LAST);

lr_start_transaction("下载文件");   #设置的事务开始点

#web_url方法你可以直接编写,也可以在启动录制的时候,输入下载链接URL进行简单录制,主要注意URL和Resource这两个参数即可;

web_url("file.php",      #函数名,没有实际作用

"URL=http://forum.ubuntu.org.cn/download/file.php?id=129973&sid=78fc8d76767ef49b606595824ceb963d",    #下载链接,也就是该链接输入到浏览器会提示下载,获取方法很多;

"Resource=1",    #1表示是下载资源,0表示是页面资源

"RecContentType=application/octetstream",

"Referer=",

"Snapshot=t1.inf",

LAST);

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

if(flen > 0)

{               //以写方式打开文件

fileContent = fopen(fileName, "wb");

if(fileContent == NULL)  #看是否正确打开了需要保存下载内容的文件,fileName是上面准备组织的文件路径;

{

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

return -1;

}

fwrite(lr_eval_string("{fcontent}"), flen, 1, fileContent);//写入文件内容

fclose(fileContent);//关闭文件

}

lr_end_transaction("下载文件",LR_AUTO);#事务结束点

return 0;

} 

 二、java user协议

  使用java user协议更简单,就是直接使用java编写一段从指定链接下载文件的脚本即可;

import java.io.BufferedInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.net.MalformedURLException;

import java.net.URL;

import java.net.URLConnection;

import lrapi.lr;

public class Actions {

public int init() throws Throwable

{

return 0;

}//end of init

public int action() throws Throwable

{

int DownLoadSize = 0;

String path = "c:\\temp\\";  //设置下载文件保存路径

String vuid = String.valueOf(lr.get_vuser_id()); //获取当前虚拟用户ID并转换成字符串

DownLoadSize = UrlTools.getHttpFileByUrl("http://forum.ubuntu.org.cn/download/file.php?id=129973&sid=78fc8d76767ef49b606595824ceb963d",vuid,path); //调用UrlTools.getHttpFileByUrl()

return 0;

}//end of action

public int end() throws Throwable

{

return 0;

}//end of end }

class UrlTools

{

public static int getHttpFileByUrl(String address,String userid,String path)

{

//定义下面需要用到的变量

URL url;

URLConnection conn = null;

int BUFF_SIZE = 1024;

byte[] buf = new byte[BUFF_SIZE];

int DownLoadSize = 0;

BufferedInputStream bis;

FileOutputStream fos = null;

int size = 0;

try

{

url = new URL(address); //address为传递进来需要下载的链接

conn =  url.openConnection();//使用url实例化需要下载的链接

bis = new BufferedInputStream(conn.getInputStream()); //把需要下载的文件内容保存在bis这个输入流中

fos = new FileOutputStream(path+"\"+userid+"test000001"+“.pdf”));//组成完整路径,并实例化到输出流,这里可以进行参数化,如参数化文件名, // 路径需要事先手动创建好,当然你也可以在脚本中创建实现不同的路径

System.out.println("需要下载的文件大小为:" + conn.getContentLength()/1024 + "k");

while((size = bis.read(buf)) != -1)   #按照设置的buf大小写文件并记录下载的大小

{

fos.write(buf,0,size);

DownLoadSize = DownLoadSize+size;

}

bis.close();

fos.close();

System.out.println("用户" + userid + "下载" + url +"完成!");

}catch(MalformedURLException e)

{

System.out.println("下载发生异常:");

e.printStackTrace();

}catch(IOException e)

{

System.out.println("下载发生异常:");

e.printStackTrace();         }

return DownLoadSize/1024;

}

}
时间: 2024-12-10 09:49:44

用LR录制文件下载并随机产生文件名的相关文章

Struts2 .apk 文件下载及解决中文文件名乱码问题(转)

1.Tomcat服务器不能下载 .apk类型文件 Android的APK安装包不能下载或下载文件是以 .zip为后缀名而不是 .apk为文件后缀名时,需在 Tomcat 的 web.xml 配置文件中加入以下 MIME 类型: 1 <mime-mapping> 2 <extension>apk</extension> 3 <mime-type>application/vnd.android.package-archive</mime-type>

LR录制脚本---参数化和关联

1.什么是参数化? a) LR发送数据始终是录制记录的一种数据,为保证LR每次发送的数据都是独立的 b) 模拟接近真实数据: c) 仅一种情况不用参数化:模拟多个用户,使用同一账号和密码登 如:网页登录.用户名不能重复.密码可以重复,但是用户名和密码关联起来才能真正使用,此时用户名和密码都要参数化 d)啥样的参数可以参数化????? 需要参数化的参数一定是输入的: 该参数只会在请求的参数中找: 不是所有输入参数都要参数化,根据自己需求做参数化 ****************有些还是不太明白,等

LR录制手机APP脚本的一种方法

这段时间有个项目是我们的平台对接手机APP约车功能,公司提供接口给手机APP开发,之前没有测试接口,所以当别人说要验证性能的时候,我有点蒙了,但是也比较激动,因为我一直很想从事性能测试的工作,抓住这个机会小研究下,今天终于把脚本录制成功,并可以跑并发了,至于最后的结果是不是对的,还有待研究. 今天上班就跟我们经理说,这段时间有没有性能要求测试的项目,希望分配给我,可是好像很少那种项目的样子,有点失望呀. 废话不多说.进入正题,录制手机APP测试服务器的方法应该很多,网上查询了一把,找到了一个我可

php文件下载时遇到中文文件名的处理方法

php做文件下载主要用到一下几行代码 header('Content-Type: application/octet-stream');  header('Content-Disposition: attachment; filename="/tmp/abc.pdf"');  header('Content-Length: '.filesize('/tmp/abc.pdf')); header('Content-Transfer-Encoding: binary');  readfil

php之上传小案例,根据时间:月日分创建目录并随机生成文件名

<?php /* 接收文件,并分目录存储,生成随机文件名 1.根据时间戳,并按一定规则创建目录 2.获取文件名的后缀名 3.判断大小 */ //根据月日分计算并创建目录 function mk_dir(){ $dir = date('md/i', time()); if(is_dir('./' .$dir)){ return $dir; }else{ mkdir('./'.$dir,0777,true); return $dir; } } //获取文件后缀 function getExt($fi

LR录制https协议设置方法

1.New一个脚本,option --> port mapping --> 选择第二个  WinNet level data 2.Run-time Setting --> Preferences中,选择Winlnet replay instead of Sockets(Windows only) 然后进行录制就可以了 参考:http://blog.csdn.net/hxp317028929/article/details/46557937

企业Shell面试题1:批量生成随机字符文件名案例

使用for循环在/oldboy目录下批量创建10个html文件,其中每个文件需要包含10个随机小写字母加固定字符串oldboy,名称示例如下: [[email protected]]# ls /oldboy apquvdpqbk_oldboy.html mpyogpsmwj_oldboy.html  txynzwofgg_oldboy.html bmqiwhfpgv_oldboy.html mtrzobsprf_oldboy.html  vjxmlflawa_oldboy.html jhjdcj

LR录制socket协议,回放脚本报错解决

录制socket协议,回放脚本报错: 基本的问题调试思路:出错了,自己先琢磨下,问题可能在哪,培养自己的排错思维能力 1.加断点,运行调试 2.打开cmd运行,netstat -ano,查看到端口为0.0.0.0:60000 3.觉得IP有问,百度0.0.0.0是什么意思 4.查看help帮助文档,查看该函数怎么用,经查看,改"RemoteHost=IP:端口",回放终于报错,解决该问题 lrs_create_socket("socket1", "TCP&

LR录制脚本IE不能打开解决方法

运行环境:win7 64位 解决方法:1.卸载IE11 2.计算机——属性——高级系统设置——性能里的设置——数据执行保护——选择“为除下列选定程序之外的所有程序和服务启用”——添加IE浏览器和VUG——应用——确定