初学的,求大虾帮忙!
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 获取测试绝对路径,testname是WR系统自带函数。 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查一下! 把错误弹出的对话框贴出来。还有你的test7脚本里有什么啊?把test7里面的脚本也贴出来看看 谢谢大家帮忙,我的问题已经找到了,test7中定义了open_canyinxt()函数,是我没有把test7改成compiled function module,所以一直出错 用get_var和&经常会多字符的,目前没搞清楚原因 #Initializing customer name array
static cust_arr[]={"John","Steve","Miron","Patrick","Mary","Dan","Kim"};
static lib_path = getvar("testname") & "\\..\\flt_lib";
问一下,最后一句lib_path中“ .." 是什么意思? 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下面! 版主能再说的详细点吗?
我用的是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呢? 顶一下:
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);
这个问题就比较明了点:不想让设置的改变影响到其它脚本,只想设置在这段脚本内作用且需要它作用
敲得好累啊!个人意见,仅供参考 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只显示路径,什么都不会判断,所以显示的路径看起来是不通的! 明白了,谢谢版主! 斑竹好厉害
页:
[1]