QTP中對用戶自定義環境變量的XML操作的幾個函數

發表于:2012-07-25來源:Csdn作者:tulituqi點擊數: 標簽:qtp
大家可能都知道怎么在一個Test里的多個action之間傳遞參數,可以用DataTable也可以用Parameter。 那么在多個Test之間如何傳遞參數呢,一般常用的有excel,這個方法應該比較普遍了。這里介紹一下我自己設計的方法。 就是用環境變量來傳遞參數,

  大家可能都知道怎么在一個Test里的多個action之間傳遞參數,可以用DataTable也可以用Parameter。

  那么在多個Test之間如何傳遞參數呢,一般常用的有excel,這個方法應該比較普遍了。這里介紹一下我自己設計的方法。

  就是用環境變量來傳遞參數,我們都知道有個Environment環境變量(在File-Test Setting下),其中有一個是user-define,用戶自定義的變量,而且這里還可以使用調用外部文件的方式來使用。那么我的方法就是基于此。

  這里面我自己寫了4個函數,

  addVar(filepath,varname,varvalue) 給指定地址的xml添加一個變量。

  delVar(filepath,varname) 刪除xml里的變量

  GetVars(filepath) 獲得xml里的所有變量,以dictionary對象返回

  updateVar(filepath,varname,varvalue) 更新xml里的變量的值。

  我自己寫的函數都不是很完善,沒有過多考慮異常處理,大部分還是以正常通過為主寫的,希望大家見諒。

  這里的XML文件是QTP支持的格式,具體格式大家可以自己先創建幾個環境變量,然后導出到外部文件,再看看那個xml的結構就行了。

  大體上是這樣的結構:

  

  

  upload

  T:/TestData/產險測試組/自動化公共庫/upload.gif

  

  

  newVar

  ssdfff

  

  

  所以我寫的代碼只能用于QTP這個環境變量的xml文件,對于其他的xml很可能不支持了。

  再談談具體的用法,我這里的Test每一個都是獨立的案例,其內部可以再調用其他可重用的action,也就是之前大家常用的方式,而我寫這些函數的用途是為了能讓多個獨立的案例串連起來執行,在QC中通過執行流依次調用。

  首先,在Test里開頭使用

  Environment.LoadFromFile(Path)

  這個方法來讀取環境變量文件。

  使用的時候只要知道變量名即可了,直接使用Environment("upload")就可以了。

  如果這個案例最后有需要傳遞出去的參數,就可以用addVar的方法。

  另外需要考慮的問題就是在使用環境變量前,xml文件里如果沒有那個變量就會報錯。這里需要慎重一些。

  這樣使用的好處,每一個案例都是獨立的,方便傳遞參數,同時,如果提出一個新的概念就是Test重用。我在做的一個項目就完整的使用我這套設計,把很長的案例都細化分解成一個個獨立的案例,我就是為了Test之間傳遞參數方便使用的這個方法。而且在使用中發現有很多關鍵環節的Test可以重用,這比action的重用范圍大了一些。不過我這些案例并沒有什么特殊的,本身也會用到action重用,比如登錄退出。

  關于Test重用的話題,改天我拿幾個例子來說比較好??上诸^沒有QC環境,不然可以截圖配合QC使用來詳細說明。

  [vb] view plaincopyprint?

  filepath="C:/UserDedinedEnvironment.xml"

  Set dics = GetVars(filepath)

  addVar filepath,"tttt","aaaa"

  Set dics = GetVars(filepath)

  updateVar filepath,"tttt","55555555"

  Set dics = GetVars(filepath)

  delVar filepath,"tttt"

  Set dics = GetVars(filepath)

  xx=1

  Function GetVars(filepath) '已完成

  Set objxml= CreateObject("MSXML.DOMDocument")

  objxml.load filepath

  Set Environ = objxml.lastChild '獲得節點

  Set dic = CreateObject("Scripting.Dictionary")

  allVar = Environ.childNodes.length '獲得節點的子節點數量,即變量個數。

  For i=0 To allVar-1

  Set vars=Environ.childNodes.item(i) '獲得節點

  var_name=vars.childNodes.item(0).nodeTypedValue

  var_value=vars.childNodes.item(1).nodeTypedValue

  dic.Add var_name,var_value

  Next

  Set GetVars = dic '返回dictionary的環境變量列表

  Set dic = Nothing

  End Function

  Function addVar(filepath,varname,varvalue) '已完成

  Set objxml= CreateObject("MSXML.DOMDocument")

  objxml.load filepath

  Set Environ = objxml.lastChild '獲得節點

  Set dic = CreateObject("Scripting.Dictionary")

  allVar = Environ.childNodes.length '獲得節點的子節點數量,即變量個數。

  For i=0 To allVar-1

  Set vars=Environ.childNodes.item(i) '獲得節點

  var_name=vars.childNodes.item(0).nodeTypedValue

  var_value=vars.childNodes.item(1).nodeTypedValue

  dic.Add var_name,var_value

  Next

  If dic.Exists(varname) Then

  updateVar filepath,varname,varvalue

  Exit Function

  End If

  Set vars =Environ.childNodes.item(0)

  Set newVar= vars.cloneNode(1) '復制

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97