有关数据库查询功能检测的脚本编写
最近俺学习QTP,已经把Flight那个Sample主界面的功能已经实践完毕了,包括Flight按钮功能的检测、Insert Order、Update Order等等按钮功能正确性的验证等。但是接下来在实践“Open Order”的时候遇到了麻烦,就是如何检测出Search Result窗口中所列数据的正确性。我知道这里的检测可以采用与点击Flight按钮弹出Flight Table窗口处一样的方法(即:自己编写数据库查询脚本,然后使用查询到的结果与窗口的数据进行一一比较),不过这种方法过于迂腐,不好用,效率也很低下。如果使用Database CheckPoint,但好像这种CheckPoint没办法检测“Open Order”这样的场景。
在上面的困难上,我考虑了好久也没找到解决的办法,所以,特邀请大家一起交流、讨论一下,望各位同道不吝赐教啊。 现在把我所编写的Flight按钮功能正确检测方法的代码贴在下面,纯手工编写,注释不多,大家包含一下。:lol
'@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("ProductDir") & "\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 我的贴子快沉了,救一下。:Q 好东西,我帮你顶 楼主学QTP订飞机票Flight,学的还是比较扎实啊,对验证、检查做的还不错
不过有些东西看的不是太明白,不知道是自己水平差了,还是楼主没写清楚,
帮顶,希望熟悉的人参与讨论! 楼上有啥子疑问提出来一起交流噻。
我现在已经更新的检测方式,呵呵,好象思路更清晰一些了,等哪天做完了,再贴上来。
页:
[1]