51Testing软件测试论坛

标题: 08/2/2013这样的格式如何做参数化? [打印本页]

作者: smilesun666    时间: 2013-8-5 09:52
标题: 08/2/2013这样的格式如何做参数化?
本帖最后由 smilesun666 于 2013-8-6 11:08 编辑


就是说服务器要求的格式为08/2/2013和通过参数化 Date/time方式的格式为08/02/2013,稍有差异的原因。。那应该用什么方法做这个日期的参数化呢?主要就是这个日期一位数时前面不显示0的显示的问题。。



用loadrunner 自带网站webtour录制的脚本,做了sessionid关联了的。但是在运行到findflight页面的下一个确认页面时打开的页面中只有框架没有内容,发送脚本如下:
web_submit_data("reservations.pl",
                "Action=http://127.0.0.1:1080/WebTours/reservations.pl",
                "Method=POST",
                "TargetFrame=",
                "RecContentType=text/html",
                "Referer=http://127.0.0.1:1080/WebTours/reservations.pl?page=welcome",
                "Snapshot=t4.inf",
                "Mode=HTML",
                ITEMDATA,
                "Name=advanceDiscount", "Value=0", ENDITEM,
                "Name=depart", "Value=Denver", ENDITEM,
                "Name=departDate", "Value={deparDate}", ENDITEM,
                "Name=arrive", "Value=London", ENDITEM,
                "Name=returnDate", "Value={returnDate}", ENDITEM,
                "Name=numPassengers", "Value={passengerNum}", ENDITEM,
                "Name=seatPref", "Value={seatPref}", ENDITEM,
                "Name=seatType", "Value={seatType}", ENDITEM,
                "Name=.cgifields", "Value=roundtrip", ENDITEM,
                "Name=.cgifields", "Value=seatType", ENDITEM,
                "Name=.cgifields", "Value=seatPref", ENDITEM,
                "Name=findFlights.x", "Value=48", ENDITEM,
                "Name=findFlights.y", "Value=8", ENDITEM,
                LAST);
没有看到有发送cookie的地方,但通过查看view both recording and snapshot 发现client request中还有发送cookie没有录制上的。Cookie: MSO=SID&1375605240; MTUserInfo=hash&17&firstName&&expDate&20169%0A&creditCard&1234567890981234&address1&&lastName&%0A&address2&&username&zhaoxq1
其中,MSO=SID的值是有变化的。于是在最初的导航到webtour页面时通过web_reg_save_param("cookies","LB=Set-cookie:","RB=;","Search=Headers","Ord=2",LAST);获得了cookie值准备作关联;可是在前面那个脚本中是没有发送这个cookie的,我在哪里把这个 cookie参数用上。如何发送??
还请赐教
作者: smilesun666    时间: 2013-8-5 15:52
回复 1# smilesun666

刚才再次检查了下,发现页面执行失败的原因是:
.应该是传递的参数对应的字符格式09/02/13和原格式09/2/2013不一致造成的;
就是说服务器要求的格式和通过参数化 Date/time方式的格式稍有差异的原因。。那应该用什么方法转化日期格式呢?
作者: smilesun666    时间: 2013-8-7 09:06
自己来解答吧!
char *p=lr_eval_string("{datetime}");
        //char *p="08/09/2013";
char test[200];
char strtemp1[200];
char strtemp2[200];
char strtemp3[200];
char str[200];
int i,k;
//lr_save_string(lr_eval_string("{datetime}"),p);
//strcpy(test,lr_eval_string("{datetime}"));
lr_output_message("p=%s",p);

strncpy(strtemp1,p,2);
lr_output_message("strtemp1=%s",strtemp1);

for (i=0;i<3;i++) {
          p++;
}

strncpy(strtemp2,p,2);
lr_output_message("strtemp2=%s",strtemp2);


if ((atoi(strtemp2)-10)<0) {

p++;

strcpy(strtemp2,"0\0");
strncpy(strtemp2,p,1);
lr_output_message("strtemp2=%s",strtemp2);


for (i=0;i<2;i++) {
          p++;
}
}
else{
          for (i=0;i<3;i++) {
          p++;
                                                }

}
                                                               
strncpy(strtemp3,p,4);
lr_output_message("strtemp1=%s",strtemp3);

strcat(str,strtemp1);
strcat(str,"/");
strcat(str,strtemp2);
strcat(str,"/");
strcat(str,strtemp3);
lr_output_message("str=%s",str);
lr_save_string(str,"Param");
lr_output_message("Param=%s",lr_eval_string("{Param}"));

用这些语句来完成格式转化,也可写在函数里来调用;
作者: 云层    时间: 2013-8-7 09:11
我只能说楼上的做法貌似太复杂了,LR自己的参数化是可以设置格式的
作者: smilesun666    时间: 2013-8-13 10:33
是啊。。但,我真没有看到能把日期02变成2的方法;
作者: 地壳    时间: 2013-8-13 10:45
我只能说楼上的做法貌似太复杂了,LR自己的参数化是可以设置格式的
云层 发表于 2013-8-7 09:11



    听云层老师的没错!




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2