SilkTest提供了编写DDT 测试用例的功能,你可以使用silktest提供的各种函数来操作数据库,这组函数被统称为DB Tester。DDT让你可以让多组不同的数据驱动同一份测试用例,这在很多复杂测试中非常有用,真正体现了测试数据在测试活动中的重要性。
DDT其实并不复杂,主要由三步组成:
1. 连接到数据源
2. 操作数据源的数据(读取或者写入)
3. 断开数据连接
一般地,在DB Tester中,有两个非常重要的句柄,一个是hstmnt, 它是SQL语句句柄,它的类型是HSQL,用来存储执行完SQL语句后得到的结果。另外一个是hdbc, 是数据库句柄,由DB_Connect函数返回,它的类型是HDATABASE。下面的例子演示了如何打印一个Excel文件每一行的内容。在运行该例之前,你必须建立一个students.xls的Excel文件,并且保存其内容如下图所示。注意其中Class1表包括6行3列的内容,表有三个field,它们分别是ID, Age, Name
代码中给出了DB Tester语句的注释
[ ] use “msw32.inc”
[ ] use “Registry.inc”
[ ]
[-] boolean printTableRows(string sFileName, string sTableName)
[ ] string sSqlCmd // sql statement
[ ] list of string lsCurrentRow
[ ] HDATABASE hDB
[ ] HSQL hstmnt
[-] do
[ ] // connect database source
[ ] hDB = DB_Connect (“DRIVER=Microsoft Excel Driver (*.xls);HDR=Yes;FIRSTROWHASNAMES=1;IMEX=1;READONLY=FALSE;DRIVERID=790;DBQ={sFileName};”)
[ ] // if any error
[-] if(hDB == NULL)
[ ] print(“Error: Can not create the connection with the data base.”)
[ ] return false
[ ] // create SQL statement
[ ] sSqlCmd = “select * from ” + sTableName
[ ] // execute the SQL statement
[ ] hstmnt = DB_ExecuteSql(hDB, sSqlCmd)
[ ] // get each row
[-] while(DB_FetchNext(hstmnt, lsCurrentRow))
[ ] Print(“ID: {lsCurrentRow[1]}, Age: {lsCurrentRow[2]}, Name: {lsCurrentRow[3]}”)
[ ] // finish transation
[ ] DB_FinishSql(hstmnt)
[ ] // close connection
[ ] DB_Disconnect(hDB)
[-] except
[ ] ExceptLog ()
[ ] return false
[ ] return true
[ ]
[-] testcase PrintTable()
[ ] string sFileName = “K:/pdf/Students.xls”
[ ] string sTableName= “Class1”
[ ] printTableRows(sFileName, sTableName)
|