小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

QTP參數(shù)化

 小豬窩969 2014-11-21

方法一、DataTable方法

  這是QTP提供的一種方法,也是最容易實(shí)現(xiàn)參數(shù)化的一種方式。QTP針對(duì)DataTable對(duì)象提供了很多方法,可以對(duì)DataTable進(jìn)行靈活的操作。DataTable分為Global和Local兩種,Global所有的Action都可以用,而Local就是只能Action自己用。

  通過(guò)DataTable做參數(shù)化最直接的方法就是在Keyword View視圖下通過(guò)選項(xiàng)進(jìn)行,這樣即方便又減少出錯(cuò)的幾率。單擊要參數(shù)化項(xiàng)目的value列,選擇出現(xiàn)的箭頭彈出Value Configuration Option對(duì)話(huà)框,在這里可以很方便的進(jìn)行參數(shù)化。

                                                  

  Parameters選擇數(shù)據(jù)來(lái)源類(lèi)型。下拉列表選擇DataTable后,選擇所要使用的數(shù)據(jù)表Global還是local,最后選擇name參數(shù)取自哪列,點(diǎn)擊確定后即可完成參數(shù)化過(guò)程。

代碼如下:Dialog("Login").WinEdit("Agent Name:").Set DataTable("user", dtGlobalSheet)

  這是最簡(jiǎn)單最直接的方式。用這種方式需要注意,在File---Seting---Run需要做相應(yīng)設(shè)置,否則運(yùn)行結(jié)果很容易出錯(cuò),使實(shí)際取到的參數(shù)值和預(yù)期的不一樣或是循環(huán)不正確的錯(cuò)誤。最好的方式是通過(guò)寫(xiě)語(yǔ)句來(lái)控制迭代過(guò)程中的取值。在腳本開(kāi)發(fā)過(guò)程中,這種方式是最常用的。類(lèi)似如下代碼:

For i=0 to DataTable.GetCurrentRow

  Dialog("Login").WinEdit("Agent Name:").Set DataTable("user", dtGlobalSheet)

  DataTable.SetNextRow

Next

                        

關(guān)于DataTable iterations的問(wèn)題:

a、 file-->settings-->run下data table iterations中設(shè)置控制的是數(shù)據(jù)表中g(shù)lobal里數(shù)據(jù)的運(yùn)行方式;global是全局的!當(dāng)運(yùn)行方式設(shè)置為運(yùn)行全部或多行時(shí),運(yùn)行幾行數(shù)據(jù)“程序”就要回放幾次!!不能重新設(shè)置!!
b、edit-->action-->action call properties-->run下data table iterations中設(shè)置控制的是數(shù)據(jù)表中該action里數(shù)據(jù)的運(yùn)行方式;local 是局部的!當(dāng)運(yùn)行方式設(shè)置為運(yùn)行全部或多行時(shí),運(yùn)行幾行數(shù)據(jù)“該action”就要回放幾次!!
進(jìn)一步說(shuō)明:

  • 當(dāng)global有多行數(shù)據(jù)file-->settings-->run On all Rows ;action有多行數(shù)據(jù)action call property->Run On all Rows 程序每次運(yùn)行時(shí),action中的每行都要執(zhí)行一次
  • 當(dāng)global 有多行數(shù)據(jù)file-->settings-->run On all Rows ;action有多條數(shù)據(jù),action call property->Run  one iteration only 而且global的行數(shù)>action的行數(shù),當(dāng)action執(zhí)行到最后一行后,不管此時(shí)global 的行數(shù)為幾,下次回放時(shí)action都執(zhí)行最后一行! 如果global的行數(shù)<action的行數(shù),action就執(zhí)行不到最后一行
  • action call property->Run from rows to rows,就結(jié)合上面所說(shuō)可以理解
  • 當(dāng)同一個(gè)action中有多個(gè)參數(shù)時(shí),且action call property->Run On all Rows, 這個(gè)時(shí)候每個(gè)參數(shù)的數(shù)據(jù)個(gè)數(shù)需要相等

方法二、環(huán)境變量實(shí)現(xiàn)參數(shù)化
  Environment 對(duì)象提供對(duì)環(huán)境變量的訪(fǎng)問(wèn)。環(huán)境變量的來(lái)源有兩種方式:內(nèi)部環(huán)境變量和用戶(hù)定義的環(huán)境變量,其中后者支持從外部導(dǎo)入,格式為XML文件。用環(huán)境變量做參數(shù)化有一定的局限性,因?yàn)榄h(huán)境變量對(duì)數(shù)據(jù)的操作沒(méi)有方法一靈活,所以環(huán)境變量用的最多還是數(shù)據(jù)的共享。在此暫作為一種方式來(lái)學(xué)習(xí),靈活運(yùn)用就好。

  首先說(shuō)用戶(hù)定義的環(huán)境變量,需要自己定義變量名和值。定義好后就可以用這些變量去參數(shù)化腳本中的常量。

  Dialog("Login").WinEdit("Agent Name:").Set Environment("test3")

                                      

  這樣做參數(shù)時(shí),每個(gè)參數(shù)值都需要指定,而且不能批量的生成。所以它有一定的應(yīng)用場(chǎng)景:當(dāng)一個(gè)Test中的不同Action需要同樣一個(gè)參數(shù),用環(huán)境變量去參數(shù)化常量是很好的一種方式;其次就是不同的Test需要用到同樣的參數(shù)時(shí),用環(huán)境變量可以很好的解決這個(gè)問(wèn)題。

  其次說(shuō)內(nèi)部環(huán)境變量。它是QTP默認(rèn)定義的一組變量,包括一些系統(tǒng)信息、項(xiàng)目信息等。目前用到最多的是TestDir,利用這個(gè)可以實(shí)現(xiàn)一個(gè)相對(duì)目錄的目的。具體應(yīng)用,在做一個(gè)數(shù)據(jù)驅(qū)動(dòng)的腳本時(shí),將數(shù)據(jù)文件放到腳本文件夾中,然后利用Environment("TestDir")+FileName導(dǎo)入數(shù)據(jù)文件。這樣可以很方便的移植,而不需要考慮將數(shù)據(jù)文件放到具體目錄下?!?/p>

方法三、外部數(shù)據(jù)源實(shí)現(xiàn)參數(shù)化

  利用外部數(shù)據(jù)驅(qū)動(dòng)腳本的運(yùn)行,這是經(jīng)常用到的方法,這樣可以很方便的組織測(cè)試數(shù)據(jù)。相對(duì)前兩種方法,這種方式數(shù)據(jù)的讀取、控制稍有些麻煩。下面以常見(jiàn)的幾種方式進(jìn)行說(shuō)明。

1. 數(shù)據(jù)文件以Excel組織

  用Excel組織測(cè)試數(shù)據(jù)是最常用的了。此種驅(qū)動(dòng)可以采用兩種方式,將數(shù)據(jù)Import到DataTab中或是利用com來(lái)操縱Excel文件。

  方式1、導(dǎo)入到DataTable中

DataStr = Environment("TestDir")&"\Login.xls"

DataTable.AddSheet("Login")
DataTable.ImportSheet DataStr,"Sheet1","Login"

rowCount1 = DataTable.GetSheet("Login").GetRowCount
For i = 1 to rowCount1
 datatable.SetCurrentRow(i)
  user = DataTable.Value("user","Login")
 pwd = DataTable.Value("pwd","Login")
  Dialog("Login").WinEdit("Agent Name:").Set user
  Dialog("Login").WinEdit("Password:").SetSecure pwd
Next
Dialog("Login").WinButton("OK").Click
Window("Flight Reservation").WinMenu("Menu").Select "File;Exit"

                                                        

注意:QTP支持xls后綴的excel文檔,不支持xlsx后綴的

  方式2、利用com操縱Excel

set excel = createobject("excel.application")
excel.Visible = true
excel.DisplayAlerts = false 'VBA 如果宏運(yùn)行時(shí)micresoft excel顯示特定的警告和消息,則該值為true,bool類(lèi)型,可讀寫(xiě)。

Set book = excel.Workbooks.Open(DataStr)
Set sheet = book.Worksheets("Sheet1")

count1= sheet.usedrange.rows.count 'VBA VB of Applications 是VB的一種宏語(yǔ)言

For i = 2 to count1
user = excel.Worksheets("Sheet1").Cells(i,1) '獲取excel單元格中的內(nèi)容

pwd = excel.Worksheets("Sheet1").Cells(i,2)
Dialog("Login").WinEdit("Agent Name:").Set user
Dialog("Login").WinEdit("Password:").SetSecure pwd

Next
excel.Quit
Set excel = nothing

2. 數(shù)據(jù)文件以txt組織

Const ForReading=1  '以只讀方式打開(kāi)文件
TFilePath= Environment("TestDir")&"\Login.txt"

Set Fso = CreateObject("Scripting.FileSystemObject")
Set DataFile= Fso.OpenTextFile(TFilePath,ForReading,False)

DataFile.SkipLine '在讀取TextStream 文件時(shí)跳過(guò)下一行。如果讀的文件沒(méi)有打開(kāi),則產(chǎn)生一個(gè)錯(cuò)誤。

Do while DataFile.AtEndOfLine<>true

ReadString = DataFile.ReadLine '從 TextStream 文件中讀取一整行字符,并以字符串返回結(jié)果。

DataStr=split(ReadString,",") '用于把一個(gè)ReadString用逗號(hào)分割成字符串?dāng)?shù)組。
Dialog("Login").WinEdit("Agent Name:").Set DataStr(0) '訪(fǎng)問(wèn)字符串?dāng)?shù)組的第一個(gè)字符
Dialog("Login").WinEdit("Password:").SetSecure DataStr(1)

loop

DataFile.close

Set Fso=Nothing

                                             

3. 數(shù)據(jù)文件以數(shù)據(jù)庫(kù)組織

用access創(chuàng)建數(shù)據(jù)庫(kù)Login,并創(chuàng)建表Login,字段分別為user,pwd,表創(chuàng)建時(shí)自動(dòng)產(chǎn)生主鍵ID

                                             

strDB="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\HP\QuickTest Professional\Tests\Flight\FlightLogin\Login.mdb;"_
&"Persist Security Info=False"
strTableName="Login"
Set Conn=createobject("adodb.connection")
Set Rst=createobject("adodb.recordset")

Conn.open strDB
Rst.open "select * from "+strTableName,Conn,2,2

Dim strTest(1) '聲明一個(gè)長(zhǎng)度為2的數(shù)組

Rst.MoveFirst
Do while not Rst.eof

strTest(0)=trim(cstr(Rst.fields(1))) 'cstr 把括號(hào)中的內(nèi)容轉(zhuǎn)換為字符串

strTest(1)=trim(cstr(Rst.fields(2)))
Dialog("Login").WinEdit("Agent Name:").Set strTest(0)
Dialog("Login").WinEdit("Password:").SetSecure strTest(1)

Rst.MoveNext
Loop

Rst.close
Set Conn=nothing

4. 數(shù)據(jù)文件以XML組織

                                                      

 

Dim xmlDoc 'As DOMDocument 需要引用xml對(duì)象

set xmldoc=CreateObject("microsoft.xmldom")
xmldoc.load(Environment("TestDir")&"\Login.xml")

Set Root=xmldoc.documentElement '返回文檔的根節(jié)點(diǎn)。


For i = 0 To Root.childNodes.Length-1 '檢索根節(jié)點(diǎn)下方的子節(jié)點(diǎn)數(shù)
Set TestCases = Root.childNodes.Item(i)
For j = 0 To TestCases.childNodes.Length-1 '檢索testcase下的節(jié)點(diǎn)數(shù)

Set TestCase = TestCases.childNodes.Item(j)
If cstr(TestCase.nodeName)="user" Then
Dialog("Login").WinEdit("Agent Name:").Set TestCase.text
end if
If cstr(TestCase.nodeName)="pwd" Then
Dialog("Login").WinEdit("Password:").SetSecure TestCase.text
End If
Next
Next

Set root=nothing
Set xml=nothing

方法四、隨機(jī)數(shù)

  隨機(jī)數(shù)參數(shù)化相對(duì)調(diào)用外部數(shù)據(jù)實(shí)現(xiàn)參數(shù)化來(lái)說(shuō),簡(jiǎn)單好多,我們直接看例子吧。。

  參數(shù)的變化范圍已知的情況下,腳本切換到Keyword View視圖下,點(diǎn)擊要參數(shù)化項(xiàng)目的value列,Parameter選項(xiàng)選擇RandomNumber,輸入?yún)?shù)的取值范圍,點(diǎn)擊ok。

Window("Flight Reservation").Dialog("Open Order").WinEdit("Edit").Set RandomNumber(0, 100)

  以下拉框?yàn)槔?,隨機(jī)選擇下拉框中的值:

flyFrom = Window("Flight Reservation").WinComboBox("Fly From:").GetItemsCount
Window("Flight Reservation").WinComboBox("Fly From:").Select RandomNumber(0,flyFrom-1
)

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多