天天看點

QTP 參數化

ps:方法内容是轉的别人的,我們項目中隻用到了方法三,主要用于将測試資料與業務分離,增強測試資料的可維護性。

方法一、datatable方法

  這是qtp提供的一種方法,也是最容易實作參數化的一種方式。qtp針對datatable對象提供了很多方法,可以對datatable進行靈活的操作。datatable分為global和local兩種,global所有的action都可以用,而local就是隻能目前action自己用。

  通過datatable做參數化最直接的方法就是在keyword view視圖下通過選項進行,這樣即友善又減少出錯的幾率。單擊要參數化項目的value列,選擇出現的箭頭彈出value configuration option對話框,在這裡可以很友善的進行參數化。

QTP 參數化

  parameters選擇資料來源類型。下拉清單選擇datatable後,選擇所要使用的資料表global還是local,最後選擇name參數取自哪列,點選确定後即可完成參數化過程。

代碼如下:dialog("login").winedit("agent name:").set datatable("user", dtglobalsheet)

  這是最簡單最直接的方式。用這種方式需要注意,在file---seting---run需要做相應設定,否則運作結果很容易出錯,使實際取到的參數值和預期的不一樣或是循環不正确的錯誤。最好的方式是通過寫語句來控制疊代過程中的取值。在腳本開發過程中,這種方式是最常用的。類似如下代碼:

QTP 參數化
QTP 參數化
QTP 參數化

關于datatable iterations的問題:

a、 file-->settings-->run下data table iterations中設定控制的是資料表中global裡資料的運作方式;global是全局的!當運作方式設定為運作全部或多行時,運作幾行資料“程式”就要回放幾次!!不能重新設定!!

b、edit-->action-->action call properties-->run下data table iterations中設定控制的是資料表中該action裡資料的運作方式;local 是局部的!當運作方式設定為運作全部或多行時,運作幾行資料“該action”就要回放幾次!! 

進一步說明:

當global有多行資料file-->settings-->run on all rows ;action有多行資料action call property->run on all rows 程式每次運作時,action中的每行都要執行一次

當global 有多行資料file-->settings-->run on all rows ;action有多條資料,action call property->run  one iteration only 而且global的行數>action的行數,當action執行到最後一行後,不管此時global 的行數為幾,下次回放時action都執行最後一行! 如果global的行數<action的行數,action就執行不到最後一行

action call property->run from rows to rows,就結合上面所說可以了解

當同一個action中有多個參數時,且action call property->run on all rows, 這個時候每個參數的資料個數需要相等

方法二、環境變量實作參數化

  environment 對象提供對環境變量的通路。環境變量的來源有兩種方式:内部環境變量和使用者定義的環境變量,其中後者支援從外部導入,格式為xml檔案。用環境變量做參數化有一定的局限性,因為環境變量對資料的操作沒有方法一靈活,是以環境變量用的最多還是資料的共享。在此暫作為一種方式來學習,靈活運用就好。

  首先說使用者定義的環境變量,需要自己定義變量名和值。定義好後就可以用這些變量去參數化腳本中的常量。

  dialog("login").winedit("agent name:").set environment("test3")

QTP 參數化

  這樣做參數時,每個參數值都需要指定,而且不能批量的生成。是以它有一定的應用場景:當一個test中的不同action需要同樣一個參數,用環境變量去參數化常量是很好的一種方式;其次就是不同的test需要用到同樣的參數時,用環境變量可以很好的解決這個問題。

  其次說内部環境變量。它是qtp預設定義的一組變量,包括一些系統資訊、項目資訊等。目前用到最多的是testdir,利用這個可以實作一個相對目錄的目的。具體應用,在做一個資料驅動的腳本時,将資料檔案放到腳本檔案夾中,然後利用environment("testdir")+filename導入資料檔案。這樣可以很友善的移植,而不需要考慮将資料檔案放到具體目錄下。 

方法三、外部資料源實作參數化

  利用外部資料驅動腳本的運作,這是經常用到的方法,這樣可以很友善的組織測試資料。相對前兩種方法,這種方式資料的讀取、控制稍有些麻煩。下面以常見的幾種方式進行說明。

1. 資料檔案以excel組織

  用excel組織測試資料是最常用的了。此種驅動可以采用兩種方式,将資料import到datatab中或是利用com來操縱excel檔案。

  方式1、導入到datatable中

QTP 參數化
QTP 參數化
QTP 參數化

注意:qtp支援xls字尾的excel文檔,不支援xlsx字尾的

  方式2、利用com操縱excel

QTP 參數化
QTP 參數化

備注:excelapp.visible 是否把excel顯示為目前視窗。

2. 資料檔案以txt組織

QTP 參數化
QTP 參數化
QTP 參數化

備注:atendofline 屬性僅應用于以讀方式打開的 textstream 檔案,否則會出現錯誤。

3. 資料檔案以資料庫組織

用access建立資料庫login,并建立表login,字段分别為user,pwd,表建立時自動産生主鍵id

QTP 參數化
QTP 參數化
QTP 參數化

4. 資料檔案以xml組織

QTP 參數化
QTP 參數化
QTP 參數化

方法四、随機數

  随機數參數化相對調用外部資料實作參數化來說,簡單好多,我們直接看例子吧。。

  參數的變化範圍已知的情況下,腳本切換到keyword view視圖下,點選要參數化項目的value列,parameter選項選擇randomnumber,輸入參數的取值範圍,點選ok。

window("flight reservation").dialog("open order").winedit("edit").set randomnumber(0, 100)

  以下拉框為例,随機選擇下拉框中的值: