TestComplete对数据库的支持
陈能技
2007-9-7
在自动化测试中,有时候需要对数据库进行操作,例如,从数据库读取测试数据、检查软件对数据库的更改操作是否正确等等。TestComplete提供好几种对数据库进行操作的方法。
TC的三类数据库操作方法
1、通常开发人员会使用特殊的控件或组件(例如Microsoft ADO Components)来与数据库打交道。如果这些组件是ActiveX控件,则你也可以在TC中使用它们。你可以在TC项目中添加ActiveX Object项目Item,并把数据组件加入。然后就可以在ActiveX Object editor中设置控件属性,定义事件处理,然后在脚本中像VC++或VB中一样使用这些控件的方法和属性。
2、使用windows的ADO数据库引擎来连接数据库。你可以把连接、数据集和命令作为COM对象在脚本中使用它的方法和属性。
3、使用TC的ADO和BDE编程对象的属性和方法来操作数据库。
微软ADO DB对象的使用
下面脚本实例化一个ADO DB对象,然后遍历数据库的一个表:
procedure TestADO;
var
Conn, Rs, Fldr : OleVariant;
begin
Fldr := Log.CreateFolder('Authors table');
Log.PushLogFolder(Fldr);
// 创建并打开数据库连接
Conn := Sys.OleObject['ADODB.Connection'];
Conn.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.3.51;' +
'Data Source=C:/Program Files/Microsoft Visual Studio/VB98/biblio.mdb';
Conn.Open();
// 创建并打开一个数据集
Rs := Sys.OleObject['ADODB.Recordset'];
Rs.Open('Authors', Conn, 3 {adOpenStatic},
1 {adLockReadOnly}, 2 {adCmdTable});
// 处理数据
Rs.MoveFirst();
while not Rs.EOF do
begin
Log.Message(Rs.Fields.Item('Author').Value);
Rs.MoveNext();
end;
// 关闭数据集和连接
Rs.Close();
Conn.Close();
end;
使用BDE操作数据库
BDE即Borland Database Engine,要使用BDE,首先要创建一个DSN连接,在操作系统的控制面板的管理工具找到数据源(ODBC)并打开,然后创建一个BDE别名,选择一个数据库驱动。
下面脚本使用BDE对象连接到一个别名为MYSQL的数据库的Products表,打开这个表取出字段名,然后遍历整个表取出所有记录。
procedure TestSQL_BDE;
var
aTable, S, i : OleVariant;
begin
// Create a table
aTable := BDE.CreateTable;
// Specify the database name
aTable.DatabaseName := 'MYSQL'; // <-- BDE alias
// Specify the table name
aTable.TableName := 'Products';
// Open the table
aTable.Open;
aTable.First;
// Retrieve field names
S := '';
for i := 0 to aTable.FieldCount - 1 do
S := S + aTable.Field(i).FieldName + Chr(9);
S := S + Chr(13) + Chr(10);
// Scan through dataset records
while not VarToBool(aTable.EOF) do
begin
for i := 0 to aTable.FieldCount - 1 do
S := S + aTable.Field(i).AsString + Chr(9);
S := S + Chr(13) + Chr(10);
aTable.Next;
end;
// Output results
Log.Message('Products', S);
// Close the table
aTable.Close;
end;
使用ADO对象操作数据库
ADO,即ActiveX Data Object,使用ADO同样需要先创建ODBC连接。
TC支持两种使用ADO的方法,一种是跟Delphi ADO对象一致的方法,一种是按照ADO本身的使用方法。
下面把两种方法都列出。
//类似Delphi ADO的使用方法
procedure TestSQL_ADO;
var
aTable, S, i : OleVariant;
begin
// Creates a table
aTable := ADO.CreateADOTable();
// Specifies the database name
aTable.ConnectionString := 'Provider=MSDASQL.1;Persist Security Info=False;Data Source=NameOfMyDSN';
// Specifies the table name
aTable.TableName := 'Products';
// Opens the table
aTable.Open;
aTable.First;
// Retrieves field names
S := '';
for i := 0 to aTable.FieldCount - 1 do
S := S + aTable.Field(i).FieldName + Chr(9);
S := S + Chr(13) + Chr(10);
// Scans dataset records
while not VarToBool(aTable.EOF) do
begin
for i := 0 to aTable.FieldCount - 1 do
S := S + aTable.Field(i).AsString + Chr(9);
S := S + Chr(13) + Chr(10);
aTable.Next;
end;
// Outputs results
Log.Message('Products', S);
// Closes the table
aTable.Close;
end;
// “原生”ADO的使用方法
procedure TestSQL_ADO2;
var
aCon, aCmd, aRecSet, S, i : OleVariant;
begin
// Creates ADO connection
aCon := ADO.CreateConnection;
// Sets up the connection parameters
aCon.ConnectionString := 'Provider=MSDASQL.1;Persist Security Info=False;Data Source=NameOfMyDSN';
// Opens the connection
aCon.Open;
// Creates a command and specifies its parameters
aCmd := ADO.CreateCommand;
aCmd.ActiveConnection := aCon; // Connection
aCmd.CommandType := adCmdTable; // Command type
aCmd.CommandText := 'Products'; // Table name
// Opens a recordset
aRecSet := aCmd.Execute;
aRecSet.MoveFirst;
// Obtains field names
s := '';
for i := 0 to aRecSet.Fields.Count - 1 do
s := s + aRecSet.Fields.Item(i).Name + Chr(9);
s := s + Chr(13) + Chr(10);
// Scans recordset
while not aRecSet.EOF do
begin
for i := 0 to aRecSet.Fields.Count - 1 do
s := s + VarToString(aRecSet.Fields.Item(i).Value) + Chr(9);
s := s + Chr(13) + Chr(10);
aRecSet.MoveNext;
end;
// Outputs results
Log.Message('Products', s);
// Closes the recordset and connection
aRecSet.Close;
aCon.Close;
end;
扩展
实际上,除了上面说的三类使用方法外,TC还支持ADO.NET等更新的数据库驱动的使用,通过TC的Open Application机制,我们可以直接调用.NET的库,使用.NET的System.Data命名空间下的ADO.NET的所有类和方法。
分享到:
相关推荐
数据库的操作是最常见的,这部分包括四个函数 Function ExecSql(strCon,strSql):执行sql语句,例如update,insert一类的 Function GetValue(strCon,strSql):执行sql语句,得到一行多列的返回 Function GetValue1...
把程序目录bin下:用TestComplete替换掉原有TestComplete 然后启动替换后的程序。 首次登陆按照如下设置: User Name: Eternal Shield Company Name: HOMEZ, Inc. Registration Code: 558B8FDC-6BF62C26-F83BF6FF
TestComplete中文帮助手册 TestComplete中文帮助手册 TestComplete中文帮助手册 TestComplete中文帮助手册 TestComplete中文帮助手册
TestComplete中文帮助手册,教你如何使用TestComplete
介绍TestComplete的基本使用方法,以及如何利用TestComplete的各种特性对.NET软件进行自动化的功能测试
TestComplete5 KeyGen 可以生成TestComplete5的注册码,其中的keygen.exe杀毒软件可能会报是病毒,本人用是正常的,各位下载时自己衡量吧。提供一组我自己生成的注册码: KLP KLP SSG D8563359-9400D3D0-05000000
Testcomplete750ent的破解
TestComplete is an automated testing tool, designed for advanced and novice testers alike, to create, manage and run tests for any desktop, Web or rich client software. It does not depend on any ...
testcomplete7.2企业版注册机 记得使用的时候关闭杀毒软件
介绍TestComplete的关键字测试介绍TestComplete的关键字测试
TestComplete与QTP的简单比较, 如何选择,一对比便知道!
关于TestComplete7的学习说明
原来链接不能用了,很多人问,重新上传,跟这个内容一致。 https://download.csdn.net/download/fvafuc/8239685
TestComplete 入门教程(英文版),教你如何创建第一个TestComplete工程
Test Complete自带帮助文档的中文版
testcomplete7安装程序及激活码(part3)
这是一个TestComplete的中文帮助,主要包括内容: 1。TestComplete基础教程,大概讲了测试种类,创建一个自动化测试的基本过程,测试对象模型这些基础内容; 2。TestComplete数据驱动测试 3。如何测试.NET应用...
Testcomplete基础培训 PPT 软件测试 PPT教程
TestComplete 自动化测试 培训教材 中文帮助 中文教材 还可以,不错。
Testcomplete包含了一系列的教程来帮助你熟悉testcomplete和学习相关的测试技术。每一个教程都详细的步骤来指引你轻松完成整个项目的创建,涵括了各种类型的测试场景。