51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 9670|回复: 22
打印 上一主题 下一主题

[原创] lr脚本里面如何比较两个字符串变量是否相等?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-4-2 13:38:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
lr脚本里面如何比较两个字符串变量是否相等?
弱弱的问一下。
例如:param1和param2是否相等?
最好提供段代码研究研究,谢谢。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-4-2 13:42:57 | 只看该作者
c语言中怎么做的.

LR就是用的C的语法
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2007-4-2 13:48:36 | 只看该作者
我试过了,没好使,请楼上的给段测试代码我研究研究吧。谢谢了。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2007-4-2 14:26:19 | 只看该作者
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2007-4-2 14:52:50 | 只看该作者
首先晕一下- -#
我举个例子吧。
        lr_save_string( lr_eval_string("param1"),"param2" );
          lr_save_string( lr_eval_string("param3"),"param4" );
我如何用strcmp比较param2和param4是否相等?
    int result;
    result = strcmp("param2","param4");     
这样吗?结果不对啊。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2007-4-2 15:52:29 | 只看该作者
我顶一下。希望高手指点指点。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2007-4-2 16:28:45 | 只看该作者
能不能说详细一点?哪里不对?
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2007-4-2 16:52:46 | 只看该作者
比较两个字符串相等.既然你已经知道param1.和param2了
看一下输出不就得了.为什么非要用什么函数比较呢.
lr_output_message("param1=%s",lr_eval_string("{param1}"));
lr_output_message("param2=%s",lr_eval_string("{param2}"));
两个语句前都用F9加上断点.自己看一下就知道相等不相等了.
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2007-4-2 17:27:22 | 只看该作者
是这样:我在运行脚本的时候不可能每个都看一下,所以我针对相等和不相等的情况各做出了一个动作,通过比较这两个变量是否相等来进行选择。
例如:
        lr_save_string( lr_eval_string("{param1}"),"param2" );
        lr_save_string( "\0","param3" ); //lr_save_string( "","param3" ); 这里我一直没想明白用那个才对?字符串为空的情况。
    result = strcmp("param2","param3");     
        if ( result == 0 ) {
        lr_save_string( " ","param2" );
}
事实上result恒不为0(经过验证)。即使是
lr_save_string( "123","param3" );
lr_save_string( "123","param2" );
result = strcmp("param2","param3");     
result 也不为0。
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2007-4-2 17:57:47 | 只看该作者
以下脚本,定义两个一样的字符数组,对比后,打印出result的值:

vuser_init()
{

int result;
     char string1[] = "We can see the string:zee";
     char string2[] = "We can see the string:zee";
lr_output_message("the string1 is %s.",string1);
lr_output_message("the string2 is %s.",string2);

result = strcmp(string1,string2);  
   if ( result == 0 )
           {
        lr_output_message("the result is 0.");
        }
   else
   {
     lr_output_message("the result is not 0.");
   }

        return 0;
}

运行结果:

Starting action vuser_init.
Web Turbo Replay of LoadRunner 8.1.0 for WINXP; Web build 4788          [MsgId: MMSG-27143]
Run-Time Settings file: "C:\Documents and Settings\Zee\Local Settings\Temp\noname26\\default.cfg"          [MsgId: MMSG-27141]
vuser_init.c(7): the string1 is We can see the string:zee.
vuser_init.c(8): the string2 is We can see the string:zee.
vuser_init.c(13): the result is 0.
Ending action vuser_init.
Running Vuser...

[ 本帖最后由 Zee 于 2007-4-2 17:59 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2007-4-2 18:06:17 | 只看该作者
厄。。。我已经拜读过版主的blog了。
版主大人,能够把这两句
     char string1[] = "We can see the string:zee";
     char string2[] = "We can see the string:zee";
替换成
     lr_save_string( "We can see the string:zee","string1" );
     lr_save_string( "We can see the string:zee","string2" );
比较一下么?我还是没太明白result = strcmp(string1,string2);  的语法。
我的string1和string2怎么会不等?

[ 本帖最后由 QM 于 2007-4-2 18:07 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2007-4-2 18:24:18 | 只看该作者
这样行了吧?


脚本:
vuser_init()
{

int result;
char string1;
char string2;
     lr_save_string( "We can see the string:zee","string1" );
     lr_save_string( "We can see the string:zee","string2" );

lr_output_message("the string1 is %s.",lr_eval_string("{string1}"));
lr_output_message("the string2 is %s.",lr_eval_string("{string2}"));

result = strcmp(lr_eval_string("{string1}"),lr_eval_string("{string1}"));  
   if ( result == 0 )
           {
        lr_output_message("the result is 0.");
        }
   else
   {
     lr_output_message("the result is not 0.");
   }

        return 0;
}

结果:

Starting action vuser_init.
Web Turbo Replay of LoadRunner 8.1.0 for WINXP; Web build 4788          [MsgId: MMSG-27143]
Run-Time Settings file: "C:\Documents and Settings\Zee\Local Settings\Temp\noname26\\default.cfg"          [MsgId: MMSG-27141]
vuser_init.c(10): the string1 is We can see the string:zee.
vuser_init.c(11): the string2 is We can see the string:zee.
vuser_init.c(16): the result is 0.
Ending action vuser_init.
Running Vuser...
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2007-4-2 18:30:35 | 只看该作者
thanks a lot.
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2007-4-3 10:01:36 | 只看该作者
原帖由 QM 于 2007-4-2 17:27 发表
是这样:我在运行脚本的时候不可能每个都看一下,所以我针对相等和不相等的情况各做出了一个动作,通过比较这两个变量是否相等来进行选择。
例如:
        lr_save_string( lr_eval_string("{param1}"),"param2" ); ...



你的语法写错了,不应该是:result = strcmp("param2","param3");  
你这样比较的是字符param2是否等于param3,
param2当然与param3不一样了,
你应该写成:result = strcmp(&param2,&param3);  


Action()
{
int result;
char string1,string2;
lr_save_string("123","string1");
lr_save_string("123","string2");

result=strcmp(&string1,&string2);

if (result==0)
        lr_output_message("123==123");
        else
        lr_output_message("123!=123");
        return 0;
}

虚拟用户脚本已启动
正在开始操作 vuser_init。
Web Turbo 重播 LoadRunner 8.1.0 for WINXP; Web 内部版本 4788          [MsgId: MMSG-27143]
运行时设置文件: "d:\Temp\noname4\\default.cfg"          [MsgId: MMSG-27141]
正在结束操作 vuser_init。
正在运行 Vuser...
正在开始迭代 1。
正在开始操作 Action。
Action.c(11): 123==123
正在结束操作 Action。
正在结束迭代 1。
正在结束 Vuser...
正在开始操作 vuser_end。
正在结束操作 vuser_end。
Vuser 已终止。
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2007-4-3 11:14:03 | 只看该作者
不错,学习了。
已经收编整理到我的blog中作为经验教训的分享。
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2007-4-3 15:12:31 | 只看该作者
...... ......

loop:
    rc = lrs_create_socket("socket1", "TCP", "RemoteHost=server:port",  LrsLastArg);
    if(rc!=0)
         lr_message("Socket creatation failed!");  
    lrs_receive("socket1", "buf100", LrsLastArg);
    rc=lrs_send("socket1", "buf101", LrsLastArg);
    if(rc!=0)
         lr_message("Send buf101 failed!");
    lrs_receive("socket1", "buf102", LrsLastArg);
    rc=lrs_send("socket1", "buf103", LrsLastArg);
    if(rc!=0)
         lr_message("Send buf103 failed!");
    lrs_receive("socket1", "buf104", LrsLastArg);
    lr_think_time(6);
    rc=lrs_send("socket1", "buf105", LrsLastArg);
    if(rc!=0)
         lr_message("Send buf105 failed!");
    rc=lrs_receive("socket1", "buf106", LrsLastArg);
         lr_message("receive buf106 failed!");
    mailnum=lrs_get_received_buffer ("socket1", 0, -1, NULL);
    lr_message(mailnum);
        if(strstr(mailnum, "+OK 1 ") == NULL){
        lr_message("Have not received ! Wait......");
            lrs_disable_socket("socket1", DISABLE_SEND_RECV);
            lrs_close_socket("socket1");               
        goto loop;
        }

...... ......

这样可以吗

[ 本帖最后由 selon 于 2007-4-3 15:14 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2007-4-4 09:25:23 | 只看该作者
我比较热衷于代码脚本.感觉不错.收藏.
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2007-4-4 09:57:01 | 只看该作者
学习拉!
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2007-8-23 15:17:29 | 只看该作者
收藏,不错.
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2007-8-23 15:42:41 | 只看该作者
sdlkfj5 打个烙印 以做备用
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-10-5 19:14 , Processed in 0.117215 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表