1 Datatable參數化
???????? Global表的數據可以被所有的action訪問,Action的數據只能被對應的Action訪問
???????? 本地表循環的次數設置:Action Call Properties
???????? Global表循環的次數設置:File -> Test Settings -> Run
?
注:
???????? ① Global全局變量循環一次,本地Action表全部運行一次
???????? ② 刪除表的內容:Edit -> Delete
???????? ③ 修改列名:鼠標右擊對應的列
?
Example4 : Flight程序登錄驗證
Data Table :
? |
username |
password |
errmsg |
1 |
? |
mercury |
Please enter agent name |
2 |
mer |
mercury |
Agent name must be at least 4 characters long |
3 |
mercury |
? |
Please enter passwoed |
4 |
mercury |
mercury |
null |
Text :
dialog("Login").WinEdit("Agent Name:").Set datatable("username","login") dialog("Login").WinEdit("Password").Set datatable("password","login") dialog("Login").WinButton("OK").Click expected_result = datatable("errmsg","login") If dialog("Login").Dialog("Flight Reservations").Exist Then ???????? actual_result = dialog("Login").Dialog("Flight Reservations").Static("errmsg").GetROProperty("text") if expected_result = actual_result Then ?????????????????? reporter.ReportEvent micPass, "登陸驗證","輸入錯誤的用戶名和密碼,彈出正確的提示信息!" else ?????????????????? reporter.ReportEvent micFail, "登陸驗證","輸入錯誤的用戶名和密碼,彈出錯誤的提示信息!" End if dialog("Login").Dialog("Flight Reservations").WinButton("確定").Click else ???????? If expected_result = "null" Then ?????????????????? If window("Fight Reservations").Exist Then ??????????????????????????? Reporter.ReportEvent micPass, "登陸驗證","輸入正確的用戶名和密碼,登陸系統成功!" ?????????????????? else ??????????????????????????? Reporter.ReportEvent micFail, "登陸驗證","輸入正確的用戶名和密碼,登陸系統失敗!" ?????????????????? End If ???????? else ?????????????????? Reporter.ReportEvent micFail, "登陸驗證","輸無效的用戶名和密碼,系統沒有任何響應!" ???????? End If End If |
?
Practice2 : Agileone自動登錄驗證
Data Table :
username |
password |
errmsg |
? |
admin |
出錯啦: 用戶名不能為空 ... |
adm |
admin |
出錯啦: 找不到該用戶名 ... |
admin |
adm |
出錯啦: 密碼輸入錯誤 ... |
admin |
admin |
null |
Text :
Browser("AgileOne - Welcome to").Page("AgileOne - Welcome to").WebEdit("WebEdit").Set? datatable("username","Action1") Browser("AgileOne - Welcome to").Page("AgileOne - Welcome to").WebEdit("WebEdit_2").Set datatable( "password","Action1") Browser("AgileOne - Welcome to").Page("AgileOne - Welcome to").Image("loginbt").Click expected_result = datatable("errmsg","Action1") If? Browser("AgileOne - Welcome to").Page("AgileOne - Welcome to").WebElement("errmsg").Exist Then ???????? actual_result = Browser("AgileOne - Welcome to").Page("AgileOne - Welcome to").WebElement("errmsg").GetROProperty("innertext") ???????? If? expected_result = actual_result Then ?????????????????? reporter.ReportEvent micPass,"登陸驗證","輸入錯誤的用戶名和密碼,提示正確的提示信息!" ?????????????????? else ?????????????????? reporter.ReportEvent micFail,"登陸驗證","輸入錯誤的用戶名和密碼,提示錯誤的提示信息!" ???????? End If else ???????? If expected_result = "null" Then ?????????????????? If? Browser("AgileOne - Welcome to").Page("AgileOne - Power to Agile").WebElement("wellcome").Exist Then ???????? reporter.ReportEvent micPass,"登陸驗證","輸入正確的用戶名和密碼,登陸系統成功!" ???????? Browser("AgileOne - Welcome to").Page("AgileOne - Power to Agile").Link("exit").Click ???????? else ???????? reporter.ReportEvent micFail,"登陸驗證","輸入正確的用戶名和密碼,系統登陸失敗!" ?????????????????? End If ?????????????????? else ?????????????????? reporter.ReportEvent micFail,"登陸驗證","輸入無效的用戶名和密碼,系統無響應!" ???????? End If End If |
2 Excle參數化
利用datatable 對象導入
???????? Import:將指定的Excle的所有數據導入,第一個sheet導入Global,第二個導入Action1,以此類推
???????? ImportSheet:可將指定的sheet頁導入到指定的表中,第一行默認導入為列標題
???????? QTP只支持Excle2003,將Excle另存為Excle2003
Example1 : datatabe.ImportSheet"C:\123.xls","Sheet1","Action1" (在代碼開始前加入)
?
通過環境變量
???????? 環境變量設置:File -> Setting -> Environment -> Variable:User-defined 添加環境變量,用戶定義的環境變量,需要自己定義變量名和值,定義好后就可以用這些變量去參數化腳本中的常量。
Example2 : Dialog("Login").WinEdit("Agent Name:").Set Environment("password")
?
Example3 : Excle讀取、寫入操作(Filith程序)
datatable :
username |
password |
errmsg |
actual_result |
test_result |
? |
mercury |
Please enter agent name |
? |
? |
mer |
mercury |
Agent name must be at least 4 characters long |
? |
? |
mercury |
? |
Please enter passwoed |
? |
? |
mercury |
mercury |
null |
? |
? |
Text :
datatabe.ImportSheet"C:\123.xls","login","Action1" For i=1 to datatable.GetSheet("Action1").GetRowCount ???????? dialog("Login").WinEdit("Agent Name:").Set datatable("username","Action1") ???????? dialog("Login").WinEdit("Password").Set datatable("password","Action1") ???????? dialog("Login").WinButton("OK").Click ???????? If dialog("Login").Dialog("Flight Reservations").Exist Then ?????????????????? expected_result = datatable("errmsg","login") ?????????????????? actual_result = dialog("Login").Dialog("Flight Reservations").Static("errmsg").GetROProperty("text") ?????????????????? if expected_result = actual_result Then ??????????????????????????? datatable("actual_result", "Action1")=actual_result ??????????????????????????? datatable("test_result", "Action1")="pass" ?????????????????? else ??????????????????????????? datatable("actual_result", "Action1")=actual_result ??????????????????????????? datatable("test_result", "Action1")="Fail" ?????????????????? End If ?????????????????? dialog("Login").Dialog("Flight Reservations").WinButton("確定").Click ???????? End If ???????? datatable.GetSheet("Action1").SetNextRow Next datatable.Export"C:\Flight_result.xls" |
?
Practice1 : Agileone登錄讀取、寫入Excle(window7,需調試)
寫入Excle 的函數:
Function QTP_WriteExcel(sExcelName,SheetNum,x,y,Content) Set xlsobj=createobject("excel.application") Set xlsbook=xlsobj.Workbooks.Open(sExcelName) Set xlssheet=xlsbook.Sheets(SheetNum) xlssheet.cells(x,y)=Content xlsbook.Save xlsbook.Close End Function |
調用: QTP_WriteExcel"C:\Users\In_october\Desktop\agileone.xls","sheet2",5,5,"abcde"
Text :
Function QTP_WriteExcel(sExcelName,SheetNum,x,y,Content) Set xlsobj=createobject("excel.application") Set xlsbook=xlsobj.Workbooks.Open(sExcelName) Set xlssheet=xlsbook.Sheets(SheetNum) xlssheet.cells(x,y)=Content xlsbook.Save xlsbook.Close End Function ? Col=5 Row=2 datatable.ImportSheet"C:\Users\In_october\Desktop\agileone.xls","Sheet1","Action1" Browser("AgileOne - Welcome to").Page("AgileOne - Welcome to").WebEdit("WebEdit").Set? datatable("username","Action1") Browser("AgileOne - Welcome to").Page("AgileOne - Welcome to").WebEdit("WebEdit_2").Set datatable( "password","Action1") Browser("AgileOne - Welcome to").Page("AgileOne - Welcome to").Image("loginbt").Click expected_result = datatable("errmsg","Action1") If? Browser("AgileOne - Welcome to").Page("AgileOne - Welcome to").WebElement("errmsg").Exist Then ???????? actual_result = Browser("AgileOne - Welcome to").Page("AgileOne - Welcome to").WebElement("errmsg").GetROProperty("innertext") ???????? QTP_WriteExcel"C:\Users\In_october\Desktop\agileone.xls","sheet2",Row,Col,actual_result ???????? Row=Row+1 ???????? If? expected_result = actual_result Then ?????????????????? reporter.ReportEvent micPass,"登陸驗證","輸入錯誤的用戶名和密碼,提示正確的提示信息!" ?????????????????? else ?????????????????? reporter.ReportEvent micFail,"登陸驗證","輸入錯誤的用戶名和密碼,提示錯誤的提示信息!" ???????? End If else ???????? If expected_result = "null" Then ?????????????????? If? Browser("AgileOne - Welcome to").Page("AgileOne - Welcome to").WebElement("wellcome").Exist Then ???????? reporter.ReportEvent micPass,"登陸驗證","輸入正確的用戶名和密碼,登陸系統成功!" ???????? Browser("AgileOne - Welcome to").Page("AgileOne - Welcome to").Link("exit").Click ???????? else ???????? reporter.ReportEvent micFail,"登陸驗證","輸入正確的用戶名和密碼,系統登陸失敗!" ?????????????????? End If ?????????????????? else ?????????????????? reporter.ReportEvent micFail,"登陸驗證","輸入無效的用戶名和密碼,系統無響應!" ???????? End If End If |
3 對象庫管理
保存共享數據庫: Action1的對象數據庫 -> File -> Export Local Objects -> Save
關聯共享數據庫: Action2關聯Action1的對象數據庫:右鍵點擊Action2 –> Association Repository to local -> 選擇文件,Open,關聯的對象數據庫不能修改
關聯的對象數據庫修改: 1.本地修改,加入到本地對象數據庫 2.全局修改,在Objict Repository中修改
Action 管理: 調用Action? 增加Action? 劃分Action? Action管理的原則
Action 管理的原則:
???????? 1.每個Action其實就是一個用戶場景,如登錄,訂票,退出等
???????? 2.每個業務流程由若干個用戶場景組成,即由若干個Action組成,在業務流程測試時需要首先分析該流程可以劃分為多少個用戶場景
???????? 3.Action劃分的粒度以是否方便作為可復用Action被其他業務流程復用為標準,不能太粗也不能太細
?
Example1 : 訂票業務場景(Flight程序)
???????? 訂票業務場景,劃分為3個業務場景:login,order,logout? Reusable Action打勾才能被其他的調用
???????? 1.創建對象庫,新建3個Action:login,order,logout
???????? 2.-> Record業務流程
???????? 3.Save Test
???????? 4.新建Action:Call to Copy of Action 選擇Test
???????? 5.劃分Action:定位鼠標,-> Split Action
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
