51Testing软件测试论坛

标题: 有关数据库查询功能检测的脚本编写 [打印本页]

作者: happychap    时间: 2008-6-19 15:51
标题: 有关数据库查询功能检测的脚本编写
最近俺学习QTP,已经把Flight那个Sample主界面的功能已经实践完毕了,包括Flight按钮功能的检测、Insert Order、Update Order等等按钮功能正确性的验证等。
但是接下来在实践“Open Order”的时候遇到了麻烦,就是如何检测出Search Result窗口中所列数据的正确性。我知道这里的检测可以采用与点击Flight按钮弹出Flight Table窗口处一样的方法(即:自己编写数据库查询脚本,然后使用查询到的结果与窗口的数据进行一一比较),不过这种方法过于迂腐,不好用,效率也很低下。如果使用Database CheckPoint,但好像这种CheckPoint没办法检测“Open Order”这样的场景。
在上面的困难上,我考虑了好久也没找到解决的办法,所以,特邀请大家一起交流、讨论一下,望各位同道不吝赐教啊。
作者: happychap    时间: 2008-6-19 15:59
现在把我所编写的Flight按钮功能正确检测方法的代码贴在下面,纯手工编写,注释不多,大家包含一下。
'@Description 将非标准格式的日期转换成VBScript标准格式日期
'@Documentation 将非标准格式的日期转换成VBScript标准格式日期
Public Function GenerateDate(ByRef strOriginalFormatDate)
           Dim retVal        '返回值
           retVal = Left(strOriginalFormatDate,2) & "-" & Mid (strOriginalFormatDate, 3,2) & "-" & Right(strOriginalFormatDate,2)
           GenerateDate = CDate(retVal)
End Function

'@Description 获取日期所在星期数(英文格式)
Private Function GetWeekDayEn(ByRef theDate)
    Select Case WeekDay(theDate)
        Case 2
                GetWeekDayEn = "Monday"
        Case 3
                GetWeekDayEn = "Tuesday"
        Case 4
                GetWeekDayEn = "Wednesday"
        Case 5
                GetWeekDayEn = "Thursday"
        Case 6
                GetWeekDayEn = "Friday"
        Case 7
                GetWeekDayEn = "Saturday"
        Case 1
                GetWeekDayEn = "Sunday"
        end select
End Function

'判断表格中日期是否晚于当前日期
If GenerateDate(DataTable("DateOfFlight", "FlightsButtonTest")) <= Date Then
        Msgbox "输入的日期不正确,执行下一条记录"
        Reporter.ReportEvent micWarning, "测试数据失效", "DateOfFlight晚于当前日期"
        ExitActionIteration
End If

'填写日期,出发地,目的地,并点击Flights按钮。
Window("Flight Reservation").WinObject("ctrlDateOfFlight").Type Datatable("DateOfFlight", "FlightsButtonTest")
Window("Flight Reservation").WinComboBox("cmboxFlyFrom").Select Datatable("FlyFrom", "FlightsButtonTest")
Window("Flight Reservation").WinComboBox("cmboxFlyTo").Select DataTable("FlyTo","FlightsButtonTest")
Window("Flight Reservation").WinButton("btnFLIGHT").Click

'根据Datatable中输入的数据,从数据库中查询数据。
Dim conn,appPath
appPath = Environment("roductDir") & "\samples\flight\app"
set conn = CreateObject("adodb.connection")
conn.Open "Driver={Microsoft Access Driver (*.mdb)};Dbq=" & appPath & "\flight32.mdb;"
Set rs = CreateObject("ADODB.RecordSet")
sqlstr = "Select  * from Flights WHERE Departure = '" & Datatable("FlyFrom", "FlightsButtonTest") &_
                        "' and Arrival = '" & Datatable("FlyTo", "FlightsButtonTest") & "' and Day_Of_Week = '" &_
                         GetWeekDayEn(GenerateDate(DataTable("DateOfFlight", "FlightsButtonTest"))) & "'"
rs.Open sqlstr,conn,1,1
rs.MoveFirst

'判断Flights按钮功能的正确性。
If Window("Flight Reservation").Dialog("Flights Table").WinList("lstFrom").GetItemsCount <> rs.RecordCount Then
        Reporter.ReportEvent micFail, "Flights按钮功能检测", "Flights查询所得结果不正确(记录数量不匹配)!"
else
        Dim currentRow, result
        currentRow = 0
        '比较WinList和上面的查询结果中每行的内容是否本部相同
        result = true
        While rs.EOF <> true
                content=rs.Fields("Flight_Number") & "   " & rs.Fields("Departure_Initials") & "   " & rs.Fields("Departure_Time")_
                         & "   " & rs.Fields("Arrival_Initials") & "   " & rs.Fields("Arrival_Time") & "   " & rs.Fields("AirLines") & "     $"_
                         & FormatNumber(rs.Fields("Ticket_Price"),2)
                If Window("Flight Reservation").Dialog("Flights Table").WinList("lstFrom").GetItem(currentRow) <> content Then
                        Reporter.ReportEvent micFail, "Flights按钮功能检测", "Flights所查询结果于第" & currentRow & "行处值不正确!"
                        result = false
                Else
                        Reporter.ReportEvent micPass, "Flights按钮功能检测", "Flights所查询结果于第" & currentRow & "行处值正确!"
                End If
                rs.MoveNext
                currentRow = currentRow + 1
        Wend
        If result = true Then
                Reporter.ReportEvent micPass, "Flights按钮功能检测", "Flights按钮功能完全正确"
        Else
                Reporter.ReportEvent micFail, "Flights按钮功能检测", "Flights按钮功能不正确"
        End If
End If
Window("Flight Reservation").Dialog("Flights Table").WinButton("btnCancel").Click
Window("Flight Reservation").WinButton("tlbNew").Click
作者: happychap    时间: 2008-6-19 16:53
我的贴子快沉了,救一下。
作者: lqin1982121    时间: 2008-6-24 16:09
好东西,我帮你顶
作者: wzdoxu    时间: 2008-6-24 18:05
楼主学QTP订飞机票Flight,学的还是比较扎实啊,对验证、检查做的还不错
不过有些东西看的不是太明白,不知道是自己水平差了,还是楼主没写清楚,
帮顶,希望熟悉的人参与讨论!
作者: happychap    时间: 2008-9-5 11:49
楼上有啥子疑问提出来一起交流噻。
我现在已经更新的检测方式,呵呵,好象思路更清晰一些了,等哪天做完了,再贴上来。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2