QTP Action篇

Action調用與Action0

打開QTP腳本目錄,我們可以看到有一個Action0目錄,這個並不是我們自己寫的,它是幹什麼用的呢?打開這個Action0目錄,用文本編輯器打開scrīpt.mts可以看到一條或多條RunAction或Call RunAction
對比我們在QTP中用Keyword View查看的Action就可以看出這個結構是與之對應的,顯然是與Action調用有關,記錄了調用Action的順序以及循環情況
下面我們就來分析一下QTP中Action的調用:
首先,Action的存在與被調用的關係
Action的存在和調用之間沒有相關性:存在,但是可以沒有調用
Action調用有兩種情況,一種是腳本調用,一種是Action調用
第一種就是通過這個看不見的Action0組織腳本直接運行的Action調用
第二種就是在我們看到的Action中來調用Action

其次,我們怎麼看到Action的存在和調用
要看到Action存在很容易,到Expert View,下拉框裏選一下就可以看到存在的Action的內容
我們在Keyword View中兩種調用都可以看到
但在Expert View中只可以看到第二種調用
再次,調用怎麼修改
第二種調用可以在Expert View中添加一句RunAction ActionName來添加
但第一種調用就沒法直接添加了,因爲Action0是直接看不到的
可以直接改Action0的腳本內容
還有就是可以在Expert View中添加一句RunAction ActionName做成第二種調用,
再切到Keyword View,然後用拖動節點的方法變成第一種調用

另外就是用Call to Existing Action
但是隻能call可複用的action,也就是要在準備調用的Action的Action Properties中勾選Reusable action
最後還要再說一下外部的調用
QTP腳本調用其它腳本的Action,只要把被調用的Action設爲可複用。至於調用的方式方法等等仍遵循上述內容


'RunAction “aaa”,oneIteration:只運行一次。(參數表只走一行)
'RunAction “aaa”,allIteration:參數表每行走一次
'RunAction “aaa”,”1-4”:只運行參數表1-4行

最後,不同action

調用新action  :RunAction "Action2", oneIteration

調用copy的action,把原來的action拷貝到本地一份:RunAction "Copy of login_test", oneIteration

調用存在的action,只調用,不拷貝:RunAction "open_test [源action文件名稱]", oneIteration

 

QTP中的ACTION可以調用其他的ACTION,即使不在一個腳本內。

點擊insert,選擇call to existing action ,這是調用已經存在的ACTION,節約了時間又提高了複用率,另外這個方法佔有空間較小。被調用的ACTION必須在ACTION properties 中將reuseable勾上。

還有一種爲call to copy action,這是將被調用的ACTION的對象庫也一併拷貝過來,不推薦使用。

關聯函數庫 將函數保存到文件夾內,後綴爲.VBS


一、Action的管理

QTP的Test Flow也是一個層次結構,最頂層的Test工程,在工程下面掛着N個Action,通常每個Action有自己的功能,就像C語言的main函數與一般函數。在每個Action下,可能還有一個或多個的Action被調用。這就是Action的層次,一層層調用。由此就可以看出Action之間有兩種關係,舉個例子:

Test Flow下掛着Action1、Action2,而Action1下掛Action3、Action4,Action3下掛Action5。那麼Action1和Action2之間就是兄弟關係,而Action1和Action3是父子關係。另外還有一種特殊的關係,Action1和Action5,它們通過Action3來聯繫。

二、Action的拆分和合並

Action可以通過Split Action拆分,形式就有兄弟或者父子兩種。父子關係就存在調用。

Action的合併有多種方式。

Call一個新的Action、Call一個已經存在的Action和Call一個存在Action的拷貝。

而每種方式又有兩種模式,在Test工程的結尾調用或者在當前步之後調用。

在Test工程的結尾調用:相當於與已經存在的Action是兄弟關係,而且新的Action在Test工程的末尾。

在當前步之後調用:就是在當前插入了一句調用新的Action的代碼,當前步結束就執行被調用的Action

Action調用的語法:

RunAction "Action名", 迭代次數,輸入參數列表,輸出參數列表

RunAction "Action3", oneIteration,num1,num2,output

三、Action的迭代模式

Action的迭代次數根據兩個因素:一是調用或者設置的迭代次數:oneIteration或者allIteration或者“1-n”;二是DataTable中的數據行數。Global是全局的,作爲Test工程迭代數據、每個Action又有各自的sheet。

四、Action間的參數傳遞

Action間的參數傳遞可以通過設置來實現,也可以進行參數化,在Call properties來進行設置。其中的參數傳遞必須要有直接的父子結構才行,如果像前面說到的Action1和Action5,它們就不能直接來進行參數的傳遞,而必須通過中間的Action3來實現。

五、Action間的變量訪問和共享

1.       通過DataTable共享

DataTable對於每個Action都是可見的

2.       通過環境變量共享

環境變量也是Test工程的共享變量,但是個人認爲要是環境變量太多,會不會難以管理?

3.       通過Action之間的參數傳遞

對Action的屬性設置和對調用的屬性設置來進行參數傳遞,只有有調用關係才能共享。

值得一提的是Public聲明的變量並不能讓Action間共享。

六、Action事務時間統計

一個小小的功能,提供對於一個事務的時間統計。

點擊setting,選擇RESOURCE,找到文件夾,保存。

現在就可以隨意的使用函數了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章