Robot_Framework:基礎_關鍵字

資源文件

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

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

 

創建資源文件

創建資源

步驟1:
1、右鍵“測試項目”選擇“New Resource”創建資源

2、這種創建在項目內的資源文件我叫它是內部資源文件,區別與下面的外部資源文件

步驟2:

1、填寫好資源文件的相關信息:名稱、類型(TXT)

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

 

資源文件的Settings設置項

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

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

 

 

加載資源

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

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

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

步驟1:
1、選擇測試套件(Resource)的Edit標籤頁右側的“Resource”按鈕來添加資源

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

步驟2:
1、填寫資源文件的相關信息後,點擊"OK"按鈕即可導入資源文件

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

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

 

 

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中添加外部資源文件

 

 

Keyword 關鍵字

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

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

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

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

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

 

用戶關鍵字

新增用戶關鍵字

步驟1:
1、在前面創建的資源文件上右鍵->選擇"New User Keyword"

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


步驟2:查看關鍵字的Settings頁面(這步可以不算在創建關鍵字的步驟裏)

關鍵字的Settings頁面和Test Case有些區別(這裏面主要的就是Arguments和Return Value了)
    ⑴Documenttation:文檔,該關鍵字的相關說明
    ⑵Arguments:關鍵字的傳入參數
    ⑶Teardown:和Case的類似,設置關鍵字執行完成時的動作
    ⑷Timeoue:和Case的類似,運行超時的時間設置
    ⑸Return Value:關鍵字的返回值

 

步驟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腳本後,腳本路徑顯示爲黑色(紅色時表示未成功,不過也有例外)。下圖中其他三項可以不管


步驟5:設置關鍵字
1、選擇要創建的關鍵字並切換到其下的"Edit"頁面

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

3、因爲我們的PY函數接收的是一個參數(將列表作爲一個值傳入),因此這裏設置參數時用的是Scalar型變量(RF中設置的參數個數要與PY函數設置的參數個數對應,不然會報錯)

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

 

步驟6:導入資源

1、因爲這裏創建的關鍵字所在資源文件屬於外部資源文件,因此在使用時需要導入對應的資源文件,才能使用該資源文件下的關鍵字

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

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

 

步驟7:調用關鍵字

1、創建一個關鍵字:因爲該關鍵字是的參數是一個列表,因此需要先創建一個列表

2、用例的意思爲:
    ⑴使用RF自帶關鍵字"create list"創建一個列表,並將創建的列表賦值給變量"${數字列表}"(這裏需要注意的是:要使用Scalar型變量,不能使用List型變量,因爲這個列表是作爲一個值傳遞給PY腳本的)
    ⑵將上一步創建的列表變量"${數字列表}"作爲參數傳遞給關鍵字"加法_補充",並將關鍵字的返回值賦值給變量"${和}"(調用關鍵字和設置關鍵字的格式差不多:返回值在左邊、函數(關鍵字)在中間、參數在右邊)
    ⑶最後通過關鍵字"log"打印上一步關鍵字的返回值"${和}"

注:
PY腳本、關鍵字、資源文件、測試用例之間的關係爲:
    ⑴PY腳本組成關鍵字,關鍵字組成資源文件,資源文件中的關鍵字組成測試用例
    ⑵關鍵字通過Library關聯PY腳本,測試用例(所在Suite)通過Resource關聯資源文件(測試用例也可直接通過Library關聯PY腳本)
    

 

 

關鍵字參數補充

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

 

參數分類

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


必填參數

Log關鍵字裏面的第一個參數message就是必填參數,只要是這種參數(後面沒有默認值的)就是必填參數,即在調用時必須傳入正確個數的參數

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

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

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

 

選填參數

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、定義關鍵字
    ⑴定義默認參數的格式爲:${變量名}=默認值
    ⑵在設置關鍵字參數時:上面需要設置爲${變量名}=默認值,下面就不需要在設置值了(表格中)爲${變量名}

 

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}作爲參數傳遞給關鍵字"加法_隨機",將關鍵字"加法_隨機"的返回值賦值給變量@{和},其他關鍵字又可以繼續使用這個變量


 

 

返回值

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變量是可變參數:有幾個元素就是有多少個參數)


 

多個返回值

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
"""

 

關鍵字設置

 

測試用例

由運行結果可以看出:如果關鍵字的返回值只使用了一個變量來承接的話,就是一個由所有返回值組成的列表。如果使用對應個數的變量來承接返回值的話,就是一個變量對應一個值。至於返回值變量的類型由@或$確定


 

 

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