-
[转载]TestComplete对数据库的支持
2009-02-03 16:05:28
作者: 陈能技 来源: 陈能技的博客
在自动化测试中,有时候需要对数据库进行操作,例如,从数据库读取测试数据、检查软件对数据库的更改操作是否正确等等。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的所有类和方法。
-
[转载]厦门px项目的大概位置示意图!(1)
2007-05-24 10:29:48
-
数据库的常用命令
2007-01-29 10:05:21
1、sql数据恢复后使用的脚本
exec sp_change_users_login 'update_one','yy_pub','yy_pub'
go
exec sp_change_users_login 'update_one','yy_sg','yy_sg'
go
exec sp_change_users_login 'update_one','yy_db','yy_db'
go
exec sp_change_users_login 'update_one','yy_sc','yy_sc'
go
exec sp_change_users_login 'update_one','yy_ca','yy_ca'
go
exec sp_change_users_login 'update_one','yy_fk','yy_fk'
go2、SYBASE数据库更改语言
查询:select Name,id from syscharsets
更改ISO_1语言: sp_configure "default character",13、用命令进行SYBASE数据备份
dump database yymis to "d:\yymis.1009"4、oracle数据库导入导出
在运行输入CMD--->然后导入文件:IMP,导出文件:EXP
客户端
//host exp system/orcl@orcl ōwner=fk_eip file=d:\fkeip.dmp
//system/orcl和system用户和密码
//@orcl为服务名exp system/manager@fkeip ōwner=fk_eip file=c:\fkeip.dmp
alter user ... account unlock;(解锁)
5、SYBASE查看日志
sp_helpdb yymis(数据库名)6、SYBASE删除日志
dump tran yymis(数据库名) with truncate_only7、要对账户解锁,可在数据库管理员账户中使用“alter user”命令的account unlock子句,如下所示:
alter user TESTUSER account unlock; -
TD的数据迁移的另外一种方法[转载]
2007-01-26 23:24:23
环境
我们使用是TD7.6+sp4,服务器为win2003系统,数据库均为sql2000,采用集成环境,也就是把TD服务程序以及TD数据库均放在同一台机器上.
步骤
1、安装好sql2000和TD7.6后,使用TD建立一个和服务器上要迁移的项目名称相同的项目。如:需要迁移原服务器上在LOTT域下的sd-004项目,则需要在电脑上的TD中建立一个同样域名、同样项目名的项目。如图原服务器上的sd-004项目。(注意:在安装TD时最好按照它的默认进行安装,安装完毕后设置数据库别名,数据库别名一定要和安装TD时默认的数据库名称一致)
2、关闭TD,打开sql,本地服务器的数据库中已有了刚才我们建立的sd-004数据库,此时在sql中建立与TD服务器的连接,将TD服务器中sd-004数据库导出到本地服务器中,并覆盖本地服务器的sd-004数据库。
3、将TD服务器C:\TD_Dir\LOTT\sd-004文件夹下的文件全部拷出,覆盖到电脑的C:\TD_Dir\LOTT\sd-004文件夹下。
4、将TD服务器C:\Program Files\Common Files\Mercury Interactive\DomsInfo文件夹下的文件doms文件拷出,覆盖到电脑的C:\Program Files\Common Files\Mercury Interactive\DomsInfo文件夹下。
5、重新启动电脑的TD服务,此时项目已经移植成功。
-
关于"RPC server is unavailable"的解决方案[转载]
2007-01-25 16:37:54
Remote Procedure Call (RPC):
一种消息传递功能,允许分布式应用程序呼叫网络上不同计算机上的可用服务。在计算机的远程管理期间使用。远程过程调用也被称为 RPC。
在TD上经常会报出RPC失败或者连接不上的信息,出现这种情况的原因就是因为本地进程与远程服务之间的连接不畅。“The RPC server is unavailable”是TD使用中相当常见的问题,在这里做个总结,希望朋友们一起交流探讨一下。
The RPC server is unavailable.翻译过来就是“RPC(远程过程调用)服务不可行。”--可以这么理解,它指的是“权限不够”的意思。
导致此原因的可能性很多很多,以下是我总结的几点(其中包含其它网友提供的资料,这里向他们表示感谢),希望大家补充:
1. RPC服务未启动。解决:控制面板-管理工具-服务-“Remote Procedure Call(RPC)”,启动一下(自动),服务状态“启动”;
2.服务器端IIS没装。解决:安装IIS。以2000系统为例,控制面板-添加删除程序-添加删除windows组件-“Internet 信息服务(IIS)”打一下勾,下一步……
3.你的系统没有打过补丁。如果你的系统是win2000,那么最好是打上sp3或者sp4补丁。根据个人猜测:如果你的TD的补丁是sp4,那么最好你的2000系统也打上sp4补丁(注意:别搞错了!一个是操作系统的补丁,一个是TD的补丁)。解决:安装系统补丁——去微软网站上down吧,伙计^_^
4.TD服务未启动。此种情况比较复杂,需要尝试不同的解决方案,先到TD所在的那台机器上,点右键的testdirector checker,看看出错提示,对症下药。
以下几种可以结合起来尝试(反正你都登不上了,不如死马当作活马医,您说对不):
①清空IE的cookies、History、缓存;删掉TD_76目录,重新下载一次插件;
②进入TD后,点add-ins page;进入后点TestDirector Connectivity ;然后点download add-in;手动下载插件安装;
③启动一下TD。到TD所在的那台电脑上,在系统栏右边有个小图标,鼠标移上去,点右键“Start TestDirector”;
④TD补丁没打,可以试安装TD sp4;
⑤密码被改了,请询问管理员;
⑥TD服务器装了多个版本的TD,兼容性问题;请卸载其中一个版本,重装TD;
⑦把http://IP/tdbin/start_a.htm 改为 http://计算机名/tdbin/start_a.htm 试试;
⑧如果TD被移植过,到TD所在的那台机器上,点右键的CHANGE RUNAS,更改一下账号;
⑨TD数据库文件毁坏(文件都搁屁了,还混啥?),和管理员沟通一下吧;
⑩TD服务器的那台机器有问题。或许是中毒了,或许是操作系统问题(可能系统内存泄露导致服务器崩溃,可能是注册表问题,可能是其它问题……),或许是硬盘坏道问题--这几种情况的共性是有时有问题,有时又没问题,莫名其妙的。
在尝试了上述几种方案恢复均告失败后,这个情况的可能性大之又大,千万别忽略了,还真有人就遇到过这种情况。
重装TD的那台机子的系统或者干脆把TD转移到另一台机器上试试。
标题搜索
我的存档
数据统计
- 访问量: 6517
- 日志数: 6
- 文件数: 2
- 书签数: 5
- 建立时间: 2007-01-25
- 更新时间: 2009-02-03