天天看點

Robot_Framework:基礎_關鍵字

資源檔案

1、測試套件主要是存放測試案例的,而資源檔案主要就是用來存放使用者關鍵字的的

2、在實際的項目測試過程中,往往需要建立許多這樣的具有通用性的使用者關鍵字。且不希望這些關鍵字依附于某個測試套件,甚至是某個項目。那麼可以建立資源檔案用于存放這些關鍵字

建立資源檔案

建立資源

步驟1:

1、右鍵“測試項目”選擇“New Resource”建立資源

2、這種建立在項目内的資源檔案我叫它是内部資源檔案,差別與下面的外部資源檔案

Robot_Framework:基礎_關鍵字

步驟2:

1、填寫好資源檔案的相關資訊:名稱、類型(TXT)

2、剛剛新增的資源檔案時灰色的,是因為它沒有被任何的suite或Resource加載

Robot_Framework:基礎_關鍵字

資源檔案的Settings設定項

1、Resource的Settings界面如下圖所示

2、Settings裡面隻有一個Documentation。Resource右側的工作區基本上和檔案型的Test Suite一樣。多了一個"Find Usages"按鈕,是查找關鍵字用的

Robot_Framework:基礎_關鍵字

加載資源

1、加載資源主要是在工作區的Add Import裡單擊"Resource"按鈕來添加的,因為Test Suite和Resource的工作區裡面都有Add Import功能,是以可以在這兩個地方進行加載資源

2、加載資源感覺就是調用資源:隻有加載資源後才能使用對應資源裡面的關鍵字

3、關于添加資源的作用域與庫一樣。我這裡是添加到的測試套件中,那麼它的作用域就是目前測試套件下的所有用例

步驟1:

1、選擇測試套件(Resource)的Edit标簽頁右側的“Resource”按鈕來添加資源

2、在"Path"文本框中輸入資源檔案的完整路徑,也可以通過"Browse"按鈕來選擇資源檔案的路徑

Robot_Framework:基礎_關鍵字

步驟2:

1、填寫資源檔案的相關資訊後,點選"OK"按鈕即可導入資源檔案

2、導入資源檔案後,資源檔案路徑顯示為藍色帶下劃線的狀态就表示帶入成功了(有時導入成功了也會顯示成黑色,具體是否成功可以通過調用資源檔案下的關鍵字來确定)

3、下圖中有個黑色的py檔案路徑:其是直接調用的py檔案。即PY檔案沒有封裝成關鍵字,直接使用的是Python函數。這種導入需要通過"Library"按鈕來導入

Robot_Framework:基礎_關鍵字

External Resource外部資源檔案

1、外部資源主要是指不在Project管轄範圍内的資源檔案

2、如果是目錄的Project,隻要不在自己目錄内的資源檔案都算是資源檔案

3、如果是檔案的Project,它自己無法建立資源檔案,其他的資源檔案都算外部資源

添加外部資源

1、在External Resource外部資源目錄上右鍵,點選"Add Resource",點選後會彈出檔案夾,選擇需要添加的資源檔案,選擇好後,點選"OK"即可添加資源檔案

2、成功添加外部資源檔案後,外部資源檔案會顯示在External Resource目錄下

3、在External Resource下添加的資源隻能看看,真正的調用還是要到Test Suite或Resource下去添加才行。方法與調用内部資源檔案(自己叫的)方法一樣

4、要建立一個外部資源檔案的話,我的辦法是:選擇合适的目錄後,先手動增加一個空白的TXT檔案,然後再在RF中添加外部資源檔案

Robot_Framework:基礎_關鍵字

Keyword 關鍵字

1、Robot Framework主要就是關鍵字驅動的自動化測試,關鍵字是它的核心。從關鍵字的類型來說,可以分為系統關鍵字和使用者關鍵字兩種

2、系統關鍵字通常都是來源于測試庫

3、使用者關鍵字更多的是來源于資源檔案(當然也可以在測試套件中加使用者關鍵字,但是不推薦這樣)

4、系統關鍵字底層就是Python函數,而使用者關鍵字其實和函數也沒什麼兩樣,完全可以像設計函數一樣設計自己的使用者關鍵字

5、可以在資源檔案裡添加使用者關鍵字,也可以在測試套件中添加關鍵字,後者不推薦(在資源檔案裡面添加關鍵字:可以将類似的關鍵字放在同一個資源檔案中,如果關鍵字都單獨放,就會顯得很雜亂)

使用者關鍵字

新增使用者關鍵字

步驟1:

1、在前面建立的資源檔案上右鍵->選擇"New User Keyword"

2、在"Name"文本框中輸入關鍵字的名稱,中英文都可以。Arguments可以先不管。點選"OK"按鈕建立成功(這裡建立的相當于隻是創了一個空的關鍵字來占位)

Robot_Framework:基礎_關鍵字

步驟2:檢視關鍵字的Settings頁面(這步可以不算在建立關鍵字的步驟裡)

關鍵字的Settings頁面和Test Case有些差別(這裡面主要的就是Arguments和Return Value了)

    ⑴Documenttation:文檔,該關鍵字的相關說明

    ⑵Arguments:關鍵字的傳入參數

    ⑶Teardown:和Case的類似,設定關鍵字執行完成時的動作

    ⑷Timeoue:和Case的類似,運作逾時的時間設定

    ⑸Return Value:關鍵字的傳回值

Robot_Framework:基礎_關鍵字

步驟3:編寫PY腳本

1、根據業務來編寫對應的PY腳本:如實作一些數字的相加功能

2、因為數字相加時不确定輸入的數字有多少個,是以在寫PY腳本時,選擇一個清單來存需要相加的數字

def Add(numList):
    num = 0
    for number in numList:
        num = int(number) + num #RF中輸入的為字元串,是以需要轉換下
    return num
           

步驟4:關聯PY腳本

1、因為關鍵字是位于資源檔案下的,是以選擇對應的資源檔案并切換到其下的"Edit"頁面

2、點選"Library"按鈕->彈出腳本選擇對話框->點選"Browse"選擇對應的PY腳本路徑(關鍵字關聯的是PY腳本,是以導入的是Library)

4、成功導入PY腳本後,腳本路徑顯示為黑色(紅色時表示未成功,不過也有例外)。下圖中其他三項可以不管

Robot_Framework:基礎_關鍵字

步驟5:設定關鍵字

1、選擇要建立的關鍵字并切換到其下的"Edit"頁面

2、在Arguments和Return Value下填寫關鍵字(函數)需要傳入的參數變量和需要傳回的傳回值變量(其他項可以選填)

3、因為我們的PY函數接收的是一個參數(将清單作為一個值傳入),是以這裡設定參數時用的是Scalar型變量(RF中設定的參數個數要與PY函數設定的參數個數對應,不然會報錯)

4、一般來說關鍵字的格式都是:傳回值    PY函數    函數參數....(關鍵字設定成功了可以看到函數名是藍色的)

Robot_Framework:基礎_關鍵字

步驟6:導入資源

1、因為這裡建立的關鍵字所在資源檔案屬于外部資源檔案,是以在使用時需要導入對應的資源檔案,才能使用該資源檔案下的關鍵字

2、選擇将要建立測試用例所在的Test Suite并切換到"Edit"頁面,點選"Resource"按鈕導入資源

3、這個例子中測試用例(suite)關聯的是資源檔案,是以是通過"Resource"導入的。當然若測試用例直接用的是PY函數(沒有封裝成關鍵字的PY函數,就需要通過Library導入)

Robot_Framework:基礎_關鍵字

步驟7:調用關鍵字

1、建立一個關鍵字:因為該關鍵字是的參數是一個清單,是以需要先建立一個清單

2、用例的意思為:

    ⑴使用RF自帶關鍵字"create list"建立一個清單,并将建立的清單指派給變量"${數字清單}"(這裡需要注意的是:要使用Scalar型變量,不能使用List型變量,因為這個清單是作為一個值傳遞給PY腳本的)

    ⑵将上一步建立的清單變量"${數字清單}"作為參數傳遞給關鍵字"加法_補充",并将關鍵字的傳回值指派給變量"${和}"(調用關鍵字和設定關鍵字的格式差不多:傳回值在左邊、函數(關鍵字)在中間、參數在右邊)

    ⑶最後通過關鍵字"log"列印上一步關鍵字的傳回值"${和}"

注:

PY腳本、關鍵字、資源檔案、測試用例之間的關系為:

    ⑴PY腳本組成關鍵字,關鍵字組成資源檔案,資源檔案中的關鍵字組成測試用例

    ⑵關鍵字通過Library關聯PY腳本,測試用例(所在Suite)通過Resource關聯資源檔案(測試用例也可直接通過Library關聯PY腳本)

Robot_Framework:基礎_關鍵字
Robot_Framework:基礎_關鍵字

關鍵字參數補充

RF中關鍵字的參數類型也有多種類型,如可以看下Log和Set Variable關鍵字的參數

Robot_Framework:基礎_關鍵字
Robot_Framework:基礎_關鍵字

參數分類

從這兩個關鍵字的參數可以看到,常用的參數其實和變量也是相關的,主要就是Scalar變量和List變量。而從參數分類來說,一般就是3種:必填參數、非必填(預設)參數和List參數

必填參數

Log關鍵字裡面的第一個參數message就是必填參數,隻要是這種參數(後面沒有預設值的)就是必填參數,即在調用時必須傳入正确個數的參數

例:建立擁有兩個必填參數的關鍵字

1、關鍵字擁有兩個或以上的參數時:參數之間使用"|"進行分割

2、關鍵字參數類型為"${numberA} | ${numberB}"這樣格式的表示這些參數都是必填的

3、在測試用例中調用擁有必填參數的關鍵字時,RF輸入框會變成紅色來提示需要輸入必填參數

Robot_Framework:基礎_關鍵字

選填參數

1、Log關鍵字裡的第二個參數level=INFO就是選填參數(預設值參數),主要是因為它有一個預設值

2、預設值用"="加上值來設定,如果想預設為空,隻寫等号也是可以的

3、預設值的意思是:在調用這個關鍵字時,如果不給這個關鍵字的預設參數傳值,那麼就使用預設值作為參數的值;如果傳了值則使用傳入的值作為參數

4、因為參數之間使用"|"進行分割,如果參數的預設值為"|"時,就需要使用"\|"來表示值為"|"

5、關鍵字的預設參數必須位于必填參數之後

例:定義一個含有預設參數的關鍵字

1、PY腳本為

def Add(numberList,big=100):
    num = 0
    for number in numberList:
        num = number + num
    return num + big
           

2、定義關鍵字

    ⑴定義預設參數的格式為:${變量名}=預設值

    ⑵在設定關鍵字參數時:上面需要設定為${變量名}=預設值,下面就不需要在設定值了(表格中)為${變量名}

Robot_Framework:基礎_關鍵字

List變量

List變量也可以作為參數,但是List變量隻能放在最後一位:List變量本身來說,它是可變的(可變參數),即List的成員數量不确定,如果放在前面的話,就沒法确定傳入的參數到底是給誰的

例:建立參數為List變量的關鍵字

1、PY腳本

def Add1(num_A,num_B,*args):
    num = 0
    for number in args:
        num = int(number) + num
    return num + int(num_A) + int(num_B)
           

2、關鍵字設定

    ⑴RF中在設定參數為List型時:需要使用@辨別,@辨別辨別可變參數

    ⑵PY腳本中設定可變參數使用*号

    ⑶下面測試用例的意思為:建立一個清單并複制給變量@{list}(該變量為List型),再将變量@{list}作為參數傳遞給關鍵字"加法_随機",将關鍵字"加法_随機"的傳回值指派給變量@{和},其他關鍵字又可以繼續使用這個變量

Robot_Framework:基礎_關鍵字
Robot_Framework:基礎_關鍵字

傳回值

1、因為傳入參數的時候可以用單值變量,也可以用List變量,那麼在Return Value時也可以用單值變量和List變量

2、在将傳回值指派給變量時,一定要弄清楚變量的類型,如果弄錯了變量類型,那麼在運作時就回出錯

例1:

PY腳本如下:函數接收的是一個清單參數(清單是作為一個值傳入的)

def Add(numList,big=100):
    num = 0
    for number in numList:
        num = int(number) + num #RF中輸入的為字元串,是以需要轉換下
    return num + int(big)
           

測試用例

    ⑴測試用例中将建立的變量指派為List類型:清單中有幾個參數,就有幾個參數(但是PY函數接收的是一個參數)

    ⑵下面用例之是以運作報錯是因為:關鍵字"加法_清單"接收的是一個清單參數,但是傳進來的參數@{list}是多個參數(List變量是可變參數:有幾個元素就是有多少個參數)

Robot_Framework:基礎_關鍵字
Robot_Framework:基礎_關鍵字

多個傳回值

1、在設定傳回值時,也支援設定多個傳回值(PY函數需要與關鍵字設定對應),也是使用"|"進行分割

2、知道傳回值的個數比較重要,如果不确定傳回值的個數,就有可能出現報錯情況,是以最好使用List變量或單個變量來取值,避免出現傳回值個數少于取值變量個數的情況

例:

PY腳本:Python腳本可以以清單、元組等形式一次性傳回多個值

def Sub(a,b):
    a = int(a)
    b = int(b)
    x = a - b
    y = a + b
    return x,y
x1 = Sub(3,1)#未分片指派的話,就是一個元組,一個變量對應所有值組成的元組
print(x1)

x1,y1 = Sub(3,1)#分片指派,一個變量對應一個值
print(x1,y1)

"""
(2, 4)
2 4
"""
           

關鍵字設定

Robot_Framework:基礎_關鍵字

測試用例

由運作結果可以看出:如果關鍵字的傳回值隻使用了一個變量來承接的話,就是一個由所有傳回值組成的清單。如果使用對應個數的變量來承接傳回值的話,就是一個變量對應一個值。至于傳回值變量的類型由@或$确定

Robot_Framework:基礎_關鍵字
Robot_Framework:基礎_關鍵字

繼續閱讀