用TestComplete实现一个关键字驱动测试框架
作者: 陈能技 来源: 陈能技的博客
最近在做使用TestComplete做一个自动化测试项目的时候,发现在TestComplete中,可以利用其中的FindChild方法来实现一个简单的关键字驱动的框架,方法如下:
(1)在Excel编写测试关键字。
在Excel文件中编写测试关键字,包括测试对象、测试操作、输入的参数等,如图所示:
(2)编写测试脚本,读入Execl中的测试关键字。
// 全局的变量数组,用于存储从Excel读入的测试关键字
Var KeyWord_TestObject,KeyWord_Operation,KeyWord_Parameters;
//.............................................................................
// 目的:通过ADO查询Excel数据
// 输入参数:
// ExcelFilePath :Excel文件的路径
// QueryString:查询语句
// 返回结果:
// 返回所有关键字数据,赋值给KeyWord_TestObject,KeyWord_Operation,KeyWord_Parameters这3个全局的变量数组
// 注意事项:
// 作者:陈能技
// 日期:2008-6-3
//.............................................................................
Function ReadKeyWordFromExcel(ExcelFilePath,QueryString);
Var ConStr,Connection,RS,ClassObjArray,LineIndex,ClassObject:OleVariatn;
begin
// 定义连接串
ConStr := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%S;Extended Properties=Excel 8.0';
ConStr := Utilities.Format(ConStr,[ExcelFilePath]);
Connection := Sys.OleObject('ADODB.Connection');
// 打开连接
Connection.Open(ConStr);
// 执行查询操作
RS := Connection.Execute(QueryString);
// 创建变量数组
KeyWord_TestObject := CreateVariantArray(0,0);
KeyWord_Operation := CreateVariantArray(0,0);
KeyWord_Parameters := CreateVariantArray(0,0);
LineIndex := 0;
// 循环读入所有数据
While Not RS.EOF do
begin
Inc(LineIndex);
// 动态修改数组大小
VarArrayRedim(KeyWord_TestObject,LineIndex-1);
VarArrayRedim(KeyWord_Operation,LineIndex-1);
VarArrayRedim(KeyWord_Parameters,LineIndex-1);
// 赋值
KeyWord_TestObject[LineIndex-1] := RS['TestObject'].Value;
KeyWord_Operation[LineIndex-1] := RS['Operation'].Value;
KeyWord_Parameters[LineIndex-1] := RS['Parameters'].Value;
// 下一条数据
RS.MoveNext;
end;
RS.Close;
// 关闭连接
Connection.Close;
end;
Procedure Test_ReadKeyWordFromExcel;
Var I : OleVariant;
begin
ReadKeyWordFromExcel('D:\Code\MyTestSuite\Data\KeyWord.xls','Select * from [KeyWord$]');
For I := 0 to VarArrayHighBound(KeyWord_TestObject,1) do
begin
Log.Message(VarToStr(KeyWord_TestObject[I])+ ' | '
+ VarToStr(KeyWord_Operation[I])+' | '
+ VarToStr(KeyWord_Parameters[I]));
end;
end;