|
Default recovery system:
The default recovery system specifies what SilkTest does to restore your application’s BaseState. It also specifies what SilkTest does whenever:
· A script file is first accessed
· A script file is exited
· A testcase is about to begin
· A testcase is about to exit
defaults.inc
The defaults.inc file is provided by SilkTest and implements the recovery system for a single application test. That is, it contains the DefaultBaseState function that performs any cleanup needed after an operation under test fails and returns the application to its base state.
具体一句话: Default recovery system的功能是在defaults.inc里面实现的
测试过程中,如果silktest遇到情况,无法继续执行,比如测试程序崩溃,silktest会尝试把测试对象的状态恢复到最开始的BaseState,这个过程就叫recovery system.
默认情况下的recovery system需要做的工作是在default.inc里面记录的。而default.inc里面同时提供了silktest运行script/testcase的具体操作;
这里拿defaultTestCaseEnter来作说明,每个TestCase被触发时候就会寻找本身对应的TestCaseEnter函数,如果没有找到这个函数,就运行defaults.inc里面的
defaultTestCaseEnter函数;该函数的内容如下:
[-] DefaultTestCaseEnter ()
[ ] SetAppState ()
DefaultTestCaseEnter函数就尝试首先恢复AppState,而所有的Appstate,归根究底,都是从BaseState延伸出来的,所以会首先运行到BaseState,即default.inc里面的appstate DefaultBaseState ()函数,这个函数的作用简单说就是启动主窗口;
如果最终不能找到主窗口,会尝试执行主window里面的Invoke()方法;所以如果用户需要自己启动测试程序,就可以在重写在主window的Invoke()方法
[-] window MainWin MyFirstWindow
[ ] tag "Dummy Window"
[ ] /********************** Methods *********************/
[-] BOOLEAN Invoke (INTEGER iInit optional)
[ ] string sCmdLine ="c:\Setup.exe"
[-] if SYS_FileExists(sCmdLine)
[-] do
[ ] MyFirstWindow.Start (sCmdLine)
[ ] return true
[-] except
[ ] return false
那么就剩下最后一个问题了,testcase一运行,就进入了defaults.inc,那么它怎么知道哪个window是主window呢?defaults.inc里面的内容是固定的阿。
呵呵,简单说,如果没有特殊的设置,defaults.inc里面的DefaultBaseState函数会运行到:MainWin = @ "wMainWindow",
所以只要设置了wMainWindow就可以,在inc里面增加一个global变量
mywin.inc:
const wMainWindow = MyFirstWindow |
|