1. 腳本需要處理成功和失敗的用戶的登陸
2. 數(shù)據(jù)驅(qū)動(dòng)
設(shè)計(jì)開發(fā)腳本如下:
第一步錄制腳本如下
Browser("智能變電巡檢儀系統(tǒng) 4.0").Page("智能變電巡檢儀系統(tǒng) 4.0").WebEdit("txtLoginName").Set "呂巍"
Browser("智能變電巡檢儀系統(tǒng) 4.0").Page("智能變電巡檢儀系統(tǒng) 4.0").WebButton("登 錄").set ""
Browser("智能變電巡檢儀系統(tǒng) 4.0").Page("Page").Syn
Browser("智能變電巡檢儀系統(tǒng) 4.0").Close
以上為錄制的正確的用戶名,下邊錄制錯(cuò)誤的用戶名
Browser("智能變電巡檢儀系統(tǒng) 4.0").Page("智能變電巡檢儀系統(tǒng) 4.0").WebEdit("txtLoginName").Set "xx"
Browser("智能變電巡檢儀系統(tǒng) 4.0").Page("智能變電巡檢儀系統(tǒng) 4.0").WebButton("登 錄").set ""
出現(xiàn)錯(cuò)誤提示“該用戶不存在”
第二步 增強(qiáng)腳本
現(xiàn)在需要設(shè)計(jì)的是一套腳本驅(qū)動(dòng)所有的測(cè)試數(shù)據(jù),這樣可以驅(qū)動(dòng)所有的用例數(shù)據(jù),qtp中提供了datatable。
但是有數(shù)據(jù)驅(qū)動(dòng)也要做一個(gè)事情就是如何處理錯(cuò)誤的用戶名和正確的用戶名,如何結(jié)合起來呢?
這里我把datatable看作存放測(cè)試用例的地方,里面放入測(cè)試數(shù)據(jù),還放入測(cè)試的預(yù)期結(jié)果。這樣我的設(shè)計(jì)已經(jīng)出現(xiàn)雛形了。
我把datatable設(shè)計(jì)為三列
username password status
呂x
xxx xxxx 該用戶不存在
第三列放入最后執(zhí)行的結(jié)果,我設(shè)計(jì)的是空為成功登陸,如果有信息就用實(shí)際運(yùn)行的結(jié)果和這一列對(duì)比.好了萬事俱備只欠東風(fēng)了
修改腳本如下:
Dim iStatus
Browser("智能變電巡檢儀系統(tǒng) 4.0").Page("智能變電巡檢儀系統(tǒng) 4.0").WebEdit("txtLoginName").Set DataTable("username", dtLocalSheet)
Browser("智能變電巡檢儀系統(tǒng) 4.0").Page("智能變電巡檢儀系統(tǒng) 4.0").WebButton("登 錄").set DataTable("password", dtLocalSheet)
iStatus = DataTable("status", dtLocalSheet)
If iStatus="" Then
Browser("智能變電巡檢儀系統(tǒng) 4.0").Close
End If
If iStatus="該用戶不存在" Then
Reporter.ReportEvent micFail, "登陸", "登陸失敗."
End If
Browser("智能變電巡檢儀系統(tǒng) 4.0").Close
第三步,設(shè)置腳本運(yùn)行過程
打開 tests-〉settings
設(shè)置RUN TAB頁面下 Datatable iterations中 Run On all rows
這樣就完成了整個(gè)腳本的設(shè)計(jì)工作,以上通過一個(gè)簡(jiǎn)單例子吧腳本的設(shè)計(jì)和軟件的功能結(jié)合起來,達(dá)成腳本的設(shè)計(jì)效果。
QTP的錯(cuò)誤恢復(fù)場(chǎng)景機(jī)制
在腳本運(yùn)行過程中,可能會(huì)出現(xiàn)一些非預(yù)期的事件、錯(cuò)誤、程序崩潰等情況,阻止腳本繼續(xù)執(zhí)行下去,測(cè)試腳本可能會(huì)一直暫停執(zhí)行直到某些界面操作被執(zhí)行才能恢復(fù)。
為了處理這類型的錯(cuò)誤,QTP通過創(chuàng)建Recovery Scenarios,并關(guān)聯(lián)到某個(gè)測(cè)試腳本??梢园堰@些定義的Recovery Scenarios稱為恢復(fù)場(chǎng)景,這些恢復(fù)場(chǎng)景會(huì)被相應(yīng)的事件觸發(fā)而執(zhí)行。
Recovery Scenarios的設(shè)計(jì)目的是用于處理那些不可預(yù)見的事件,例如,可以定義一個(gè)Recovery Scenario用于處理打印錯(cuò)誤,這樣當(dāng)運(yùn)行腳本過程中打印機(jī)出現(xiàn)錯(cuò)誤時(shí),Recovery Scenario就會(huì)指導(dǎo)QTP執(zhí)行某個(gè)操作,例如單擊打印錯(cuò)誤提示框的默認(rèn)按鈕。對(duì)于那些可預(yù)見的錯(cuò)誤,則應(yīng)該使用IF語句在腳本中處理,而不要依賴Recovery Scenario。
在QTP中使用Dictionary對(duì)象
VBScript的Dictionary 對(duì)象與PERL的關(guān)聯(lián)數(shù)組(associative array)類似,其中存儲(chǔ)的內(nèi)容可以是任何數(shù)據(jù),每一個(gè)存儲(chǔ)的數(shù)據(jù)都與一個(gè)唯一的鍵(Key)關(guān)聯(lián),鍵用于獲取每一項(xiàng)數(shù)據(jù),鍵通常是整型或字符串類型。
在QTP中,可以把Dictionary 當(dāng)成數(shù)組來用,而且可以隨時(shí)添加數(shù)據(jù),而不需要預(yù)先定義大小。下面是一個(gè)使用的例子:
' 創(chuàng)建Dictionary對(duì)象
Set Dic = CreateObject("Scripting.Dictionary")
' 添加Dictionary的key和value
For Iterator = 1 To 3 Step 1
Dic.Add CStr(Iterator),Iterator & "_Value"
Next
' 循環(huán)讀取Dictionary的key和value
For Iterator = 1 To Dic.Count Step 1
Msgbox Dic.Item(CStr(Iterator))
Next
DicArray = Dic.Items
'For I = 0 To Dic.Count
For I = 0 To UBound(DicArray)
Msgbox DicArray(I)
Next
' 判斷是否存在某個(gè)Key,如果存在,則把其去掉
If Dic.Exists("2") Then
Msgbox Dic.Item("2")
Dic.Remove("2")
End If
Msgbox Dic.Count
' 清空所有 Key和Value
Dic.RemoveAll()
Msgbox Dic.Count
聯(lián)系客服