51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 11622|回复: 7
打印 上一主题 下一主题

[原创] Loadrunner脚本内部定义变量问题,请帮助解答!

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-1-7 12:34:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在action中定义变量,就运行不了,在Action外面定义,就可以运行,请高手解答,为什么呢?

在Action内部定义变量:
Action()
{
    lr_load_dll("LR_USER_DLL.dll");
int a=5;
int b=6;
int sum=0;

sum=add(a,b);
lr_message("和为%d",sum);
return 0;
}
运行输出:
Action.c (6): illegal statement termination
Action.c (6): skipping `int'
Action.c (6): undeclared identifier `a'
Action.c (7): illegal statement termination
Action.c (7): skipping `int'
Action.c (7): undeclared identifier `b'
Action.c (8): illegal statement termination
Action.c (8): skipping `int'
Action.c (8): undeclared identifier `sum'
d:\\program files\\mercury\\loadrunner\\scripts\\http\\\\combined_http.c (5): 9 errors, not writing pre_cci.ci

将变量定义移动到action外面,就可以运行,得到正确结果。
int a=5;
int b=6;
int sum=0;
Action()
{
    lr_load_dll("LR_USER_DLL.dll");

sum=add(a,b);
lr_message("和为%d",sum);
return 0;
}
运行输出:
Virtual User Script started
Starting action vuser_init.
Web Turbo Replay of LoadRunner 8.1.0 for WINXP; Web build 4788   [MsgId: MMSG-27143]
Run-Time Settings file: "D:\Program Files\Mercury\LoadRunner\scripts\http\\default.cfg"   [MsgId: MMSG-27141]
Ending action vuser_init.
Running Vuser...
Starting iteration 1.
Starting action Action.
和为11
Ending action Action.
Ending iteration 1.
Ending Vuser...
Starting action vuser_end.
Ending action vuser_end.
Vuser Terminated.
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2009-1-7 12:50:44 | 只看该作者
咋没人回复呢,呵呵!
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2009-1-7 13:42:35 | 只看该作者
请问下上面的脚本是怎么来的呢,好象LR是用来录制脚本的,但是感觉你上面的象是自己写进去的.如果自己写的,应该怎么做呢,我也想验证下你说的那个问题,但是不知道是怎么实现的
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2009-1-7 15:29:58 | 只看该作者
变量的声明一定要放在脚本的最前面
声明的语句中不要有其他的脚本代码(在lr必须这样写)

正确的例子::
Action()
{
/*变量声明*/
int a=5;
int b=6;
int sum=0;
/*变量声明*/

lr_load_dll("LR_USER_DLL.dll");
sum=add(a,b);
lr_message("和为%d",sum);
return 0;
}
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2009-1-7 16:08:50 | 只看该作者
4楼说的对。
你在Action中定义的是局部变量,只能在Action中使用,
而在Action外面定义的是全局变量,都可以使用。
不是因为LR,因为传统的C就是这样,只有后来一些其它的语言才允许在方法的任何地方定义变量。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2009-1-7 16:35:10 | 只看该作者
学习了!
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2009-1-7 18:05:07 | 只看该作者
原来这样啊,c语言忘光了.
嗯,刚查了资料:
是C89的标准不允许在随便位置声明变量,只允许在块的开始处
C99和C++放松了限制,允许在随便位置声明变量,这个规定更合理

谢谢5楼的同学
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2009-11-3 17:57:38 | 只看该作者
正好需要这方面的
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-13 16:17 , Processed in 0.075203 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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