51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 6859|回复: 12
打印 上一主题 下一主题

初学的,求大虾帮忙!

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2005-1-11 15:38:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Sample Text
请帮忙看看下面的代码
static i=0, error_flag=0;
#Initializing customer name array
static cust_arr[]={"John","Steve","Miron","Patrick","Mary","Dan","Kim"};
static lib_path = getvar("testname") & "\\..\\flt_lib";

reload(lib_path);

# Open the flight application
rc = open_flight();
if (rc == E_GENERAL_ERROR){
        tl_step(invoking_aut, FAIL,couldnt_open_flight);
        clean_up();
        texit;
}

# Opening the Open Order Form
open_OpenOrderForm ();

#..........
上面的代码是winrunner自带的flight的测试例子,路径为 Mercury Interactive\WinRunner\samples\flight\tests\initstat


我要问的是static lib_path = getvar("testname") & "\\..\\flt_lib";
中的testname是什么意思,
我模仿它编写了一段测试程序可老是出现格式错误的提示框
请斑竹帮我看看是什么地方错了
static rc;

reload("F:\\test7");
rc = open_canyinxt();
if (rc == E_GENERAL_ERROR){
        tl_step(initialization, FAIL,couldnt_open_canyinxt);
        texit;
}
其中test7是个compiled function module
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏

该用户从未签到

2#
发表于 2005-1-11 16:06:50 | 只看该作者
获取测试绝对路径,testname是WR系统自带函数。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2005-1-11 21:01:08 | 只看该作者
static rc;

reload("F:\\test7");
rc = open_canyinxt();
if (rc == E_GENERAL_ERROR){
        tl_step(initialization, FAIL,couldnt_open_canyinxt);
        texit;
}
其中test7是个compiled function module
1. static 是定义一个静态变量,像你的这样的程序static rc;可以去掉
根本用不到STATIC这个来定义!
open_canyinxt这个function没有定义,所以当然调不到它啦,还有出错是很正常的
你上面那个例子的open_flight();已经定义好的了!
你可以在FLT_LIB查一下!
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2005-1-12 08:40:20 | 只看该作者
把错误弹出的对话框贴出来。还有你的test7脚本里有什么啊?把test7里面的脚本也贴出来看看
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2005-1-12 11:18:33 | 只看该作者
谢谢大家帮忙,我的问题已经找到了,test7中定义了open_canyinxt()函数,是我没有把test7改成compiled function module,所以一直出错
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2005-1-12 23:20:43 | 只看该作者
用get_var和&经常会多字符的,目前没搞清楚原因
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2005-1-13 08:36:16 | 只看该作者
#Initializing customer name array
static cust_arr[]={"John","Steve","Miron","Patrick","Mary","Dan","Kim"};
static lib_path = getvar("testname") & "\\..\\flt_lib";


问一下,最后一句lib_path中“ .." 是什么意思?
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2005-1-13 09:02:29 | 只看该作者
Originally posted by fzyerma at 2005-1-13 08:36 AM:
#Initializing customer name array
static cust_arr[]={"John","Steve","Miron","Patrick","Mary","Dan","Kim"};
static lib_path = ...

..  省略路径,像LINUX命令一样!可以这样打
他用的是相对路径,
LTL_LIB放在SAMPLES下面!
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2005-1-13 09:34:06 | 只看该作者
版主能再说的详细点吗?
    我用的是7.6。以WR自带的例子为例(WinRunner\samples\flight\tests);flt_lib放在tests下面。
    假如我运行这个路径下的datbound脚本,在该脚本开始有语句:static lib_path = getvar("testname") & "\\..\\flt_lib";
我使用下面两条语句:tl_step("TESTNAME",0,getvar("testname"));
                    tl_step("LIB_PATH",0,lib_path);
得到结果是:
<Step:TESTNAME, Status: Pass, Description: C:\Program Files\Mercury Interactive\WinRunner\samples\flight\tests\datbound

<Step:LIB_PATH, Status: Pass, Description: C:\Program Files\MercuryInteractive
\WinRunner\samples\flight\tests\datbound\..\flt_lib

这样的话,脚本程序如何找到flt_lib呢?
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2005-1-13 13:19:40 | 只看该作者
顶一下:
getvar是一个专门用来读取WR本身自定义的一些专门的参数,比如"testname", "curr_dir", "delay", "silent_mode",具体的就参照TSL,有全部的可用参数,和它配合使用的是setvar,相反的,它是用来设置的。注意,这两个函数只能使用的TSL里面定义好的这些参数,如果自己随便写一些就会报错。仔细观察这些参数(其实从名字就可以看出来),它是对WR本身的一些参数设置,并没什么特殊的含义,下面说一下用法:
有些是只能够用getvar的,比如常提到的"testname"
它在TSL中的说明是这样的:
testname (getvar)   
Displays the full path of the current test.
只标了一个getvar说明它只能get不能set,至于用途下面的英文也很明白,获得当前脚本的绝对路径(包括脚本名),如果用这个参数:getvar("curr_dir")就会发现它和上面这个参数的get返回值就差一个脚本名

有些参数却可以set和get,比如"silent_mode",它的说明如下:
silent_mode (getvar/setvar)
Displays whether WinRunner is running in silent mode. In silent mode, WinRunner suppresses messages during a test run so that a test can run unattended. When you run a test remotely from TestDirector, you must run it in silent mode, because no one is monitoring the computer where the test is running to view the messages.
可以看出它既可以set也可以get,可以通过设置这个参数来达到Option设置里的作用:让脚本在执行出现不匹配的时候(比如sychronization没有实现等等)仍然继续执行。具体使用如下:
oldMode = getvar("silent_mode");
setvar("silent_mode", "on");
.......  #执行一些语句,在这些语句中实现了silent_mode
setvar("silent_mode", oldMode);
为什么要设置这些参数呢?我想主要是因为可能这样对于脚本在多台机器上共用时比较好:因为不能保证多台机器上的设置一样,而某些设置又会对脚本运行的结果产生影响。再说这样通过语句来实现一些Option参数设置也比较灵活
为什么要执行下面两条语句呢?
oldMode = getvar("silent_mode");
。。。。。
setvar("silent_mode", oldMode);
这个问题就比较明了点:不想让设置的改变影响到其它脚本,只想设置在这段脚本内作用且需要它作用
敲得好累啊!个人意见,仅供参考
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2005-1-13 14:27:24 | 只看该作者
Originally posted by fzyerma at 2005-1-13 09:34 AM:
版主能再说的详细点吗?
    我用的是7.6。以WR自带的例子为例(WinRunner\samples\flight\tests);flt_lib放在tests下面。
    假如我运行这个路径下的datbound脚本,在该脚本开始有语句:static lib_path = ge ...


首生,上面的两个tl_step正好显示正确阿,但如果用TL_STEP正好意思相反了,
如果你用命令来打就可以清楚的知道了,
..是回到上一个目录,也就是回到TEST目录下面,
然后再打开FLT_LIB这个文件,这样才是对的,
而TL_STEP只显示路径,什么都不会判断,所以显示的路径看起来是不通的!
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2005-1-13 14:30:08 | 只看该作者
明白了,谢谢版主!
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2007-5-8 11:50:46 | 只看该作者
斑竹好厉害
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-25 11:54 , Processed in 0.069733 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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