头文件
SQABasic头文件包含一系列的声明,头文件可以应用到
一.声明共有或则全局常量,变量和用户定义类型
二.声明自定义sub,procedures和function
头文件中的声明可以应用到任何模块(脚本或者类库文件)。用’$include关键字,放在模块开始的地方-例如:
’$include “global.sbh”
SQABasic头文件类型
Sqabasic支持两种头文件类型:
一. 头文件保存在sqabasic路径。不用指定任何路径信息就可以在本工程或者其他工程中应用他们
二. 工程头文件可以保存在TMS_Script文件夹中。不用指定任何路径信息就可以在同一个工程中处理。
这两种SQABasic头文件都有同样的扩展名- .sbh
库文件
库文件包含一个或者更多供procedure从其它文件调用的sub,procedure和function。
一.SQABasic库文件(扩展名为.sbl或则.rec)
注意,.rec文件可以作为脚本文件或者库文件,但是.sbl只能被用作库文件。
二.动态连接库文件(扩展名.dll)
下边的表格这几种类库文件不同的总结:
| .sbl | .rec | .dll |
位置 | SQABasic路径 | 当前工程文件中Datastore(文件夹 TMS_Script) | TMS_Script/dll文家夹或则其他位置 |
范围 | 在SQABasic路径中,对所有工程文件都可用 | 对同一个工程所有脚本可用 | 依靠位置 |
验证点 | 不支持 | 支持标准的robot验证点 | 支持自定义验证点 |
任何.rec文件都能作为库文件。不管怎样,如果一个.rec文件作为脚本(可以从robot中直接运行或者用callscript命令),他必须有一个main过程。
在SQABasic库文件中声明过程
如果在SQABasic过程中有一个自定义的过程,你声明类文件的方法同样适用声明过程。
下边的例子是在sqabasic库文件中(mylib.sbl)声明一个自定义过程(mysub):
Declare Sub MySub Basiclib “MyLib”( arg1 as string,arg2 as integer)
一.关键字basiclib,表示过程mysub在一个sqabasic库文件中
二.库文件的名字“mylib”,这里不需要写扩展名(.sbl或者.rec)
备注:basiclib关键字特指.sbx库文件的声明(和.dll库文件相对),这里不需要也不推荐带有.sbx扩展名的声明。
什么地方声明SQABasic库文件
可以在任何位置声明SQABasic库文件
一.在脚本或者其他库文件,仅在模块中应用过程
二.头文件中,用道的模块
库文件包含不需要指定的例程或者’include头文件
在dll文件声明过程文件
如果在dll文件的自定义过程,声明过程同样可以声明dll文件。
下边是dll文件中(mydll.dll)声明自定义过程(mysub)的例子:
declare sub mysub lib “mydll”(byval arg1 as string,Byval arg2 as integer)
一.声明中加入Lib关键字,表示声明的过程在dll文件中(相对于.sbl或者.rec sqabasic库文件)
二.库文件名字(mydll),跟随库指定的名称
三.参数声明通常包括关键字byval(参数声明包括任何关键字)
如果编译位置在sqabas32路径或在系统路径的库文件(.dll),你不用特别声明路径。如果库文件不再sqabas32或者在系统路径,你需要制定路径,比如
Declare Sub MySub Lib “E:MyDll” (byval arg1 as string,Byval arg2 as integer)
在什么地方声明dll文件
你可以声在任何为指声明dll文件:
1. 脚本或者sqabasic库文件,要用过程的模块
2. 头文件,任何模块指定的头文件
SQABasic路径
Sqabasic路径是robot保存和寻找sbl库文件和头文件的地方,用户在robot中也可以定义。
一旦你在robot中指定sqabasic路径,这个路径是固定的。不管怎样,robot自动设置sqabasic路径,当下列条件是真的时候:
i. 仍没有明确在robot中定义sqabasic
ii. 已经在rational Aministrator建立新的工程和数据仓库
iii. 打开最近创建的工程和数据仓库
当上边所有条件为真的时候,robot自动在新工程和数据仓库中设置sqabasic路径到下列位置:
[NewProject][NewDatastore]DefaultTestScriptDatastoreTMS_ScriptSQABas32
设置步骤:
1) 点Tools->General Options
2) 点Preferences页面
3) 在SQABasic路径中输入路径
Rational test早期版本没有提供菜单选项来设置sqabasic路径 – 参阅sqa common directory片断
指导使用头文件和库文件
推荐下边使用库文件方法:
a) 自定义函数或者过程应该使用有同样文件名字的头文件(.sbh)和库文件(.sbl),比如DataFunctions.sbh和DataFunctions.sbl。这个过程和函数在头文件中定义(指定声明头文件)和在库文件中定义。看下边的例子
b) 分离头文件(参阅常量头文件)用于包含常量,变量和用户定义类型用于脚本或者库文件调用。头文件用同样的文件名字后边附加_x或则_C(附加是早期命名规定)。注意包含常量和变量的头文件必须加入到声明头文件和库文件之前。(DataFunctions.sbh和DataFunctions.sbl),比如’include “DateFunctions_c.sbh”。这样做很容易维护。
c) 通过分类或者程序把相关的函数放在同一个库里,例如,把所有日期相关的函数放到DataFunctions.sbh/sbl,或者把所有的函数加入为特定程序开发的函数库中(比如AppName.SBH/SBL)
d) 函数是在库文件中子程序的的首选方式,处分过程的结果对于调用脚本是不相关的。函数应该返回一个值,或者适当的,数据可以通过变量或者数组返回。在后边的例子中,函数返回的结果表示成果或者失败。
e) 库文件中的所有得函数和子程序必须有“注释“,包含这个过程的目的和用途::
· 目的描述
· 调用陈述 (类似函数声明)
· 参数声明
· 返回值
· 例子
· 可能产生的错误
· 历史修改纪录
请看下边的例子。
f) 库文件的注释有合理的解释,通过读注释可以知道过程的逻辑
g) 如果开发和维护robot库文件是集中管理的方式,那么你可以加入到’$include 所有库文件到global.sbh头文件中,这样做对所有头文件都有用。这可以加入缺省的脚本模板。作为选择,测试人员在每个脚本中可以选择或者包含需要的库文件。
Rational Robot测试指导
Paul Downes (Paul_Downes@providian.com)
Carl Nagle (Carl.Nagle@sas.com)
7 December 20, 2001
头文件和库文件的例子
(NB. 这只是个例子.)
___________________ Declarations Header: Excel.sbh ___________________
'##############################################################################
'# Excel Function Library v4.0 Library Header File
'# ===========================
'#
'# DESCRIPTION:
'# Contains functions that utilize Excel's COM Automation interface to use
'# spreadsheets. See Excel.sbl for library details.
'#
'# PACKAGE:
'# Excel.sbh Library Header File
'# Excel.sbl Source Code and Documentation
'# Excel_X.sbh Library Include File
'#
'# HISTORY:
'# Orig Author: Andy Tinkham <andy@tinkham.org>
'# Orig Date : 12-10-98
'#
'# Error Handling Code by Mark Butler (MKButler@russell.com) and Andy Tinkham
'#
'# CHANGES:
'# 00/00/00 Author Change details
'#
'# COPYRIGHT:
'# This code is copyright 1998-2002 by Andy Tinkham <andy@tinkham.org>.
'# except where otherwise indicated. Permission is given for use by the
'# Rational TeamTest community. Redistribution is allowed as long as no charge
'# is made for this code and all authorship credits remain intact.
'##############################################################################
'# CONSTANTS, VARIABLES, DATATYPES