1. 程式人生 > >RFS的web自動化驗收測試——第9講 使用者關鍵字User Keyword(1)

RFS的web自動化驗收測試——第9講 使用者關鍵字User Keyword(1)

引言:什麼是RFS——RobotFramework+Selenium2library,本系列主要介紹web自動化驗收測試方面。

我搞了個RobotFramework自動化測試公眾號

歡迎大家掃一下加入。

這裡有最新的安裝指南,本文裡的版本都比較舊了。

在我們做自動化案例的時候,用的最多的主要是使用者關鍵字。說到關鍵字,大體上可以分為測試庫關鍵字(或叫系統關鍵字)和使用者關鍵字,前者一般都是通過載入Library得到的,而使用者關鍵字一般都是通過載入Resouce得到的。

以之前的這個case為例:

圖中的Import Variables和log都是測試庫關鍵字,而搜尋測試這個就是使用者關鍵字,只要RIDE的版本高一些,就能看出他們的顏色是有區別的。

接下來,我們新建一個案例,並針對使用者關鍵字的用法進行介紹。

1、先新建一個使用者關鍵字,不用帶arguments。

在Setting下面的這些呢,Documentation就不多說了。主要看下面4個設定,其實前面的文章裡也簡單介紹過,這裡再說一下。

Arguments: 設定傳入引數

Teardown: 設定完成時的動作,比如寫上Close All Browsers,表示在這個使用者關鍵字執行完成之後會執行什麼關鍵字。

Timeout: 設定超時時間,如寫上1min,表示1分鐘超時,如果這個關鍵字執行超過1分鐘則認為失敗。

Return Value: 設定返回值

一直以來我都覺得使用者關鍵字就像一個函式一樣,有傳入引數Arguments,有返回值Return Value,而且還可以用Teardown作為函式完成後的清理動作。

所以我們也要像函式一樣來使用User Keyword。

2、傳入引數Arguments

前面在做案例分層的時候其實已經用到了一些引數設定了,可以看看前面2篇文章。這裡提一下多引數及可選引數的設定。

    0)變數型別

順帶提一下變數的型別,RF裡的變數分兩種,一種是Scalar,可以理解為單值變數,一種是List Variable,list型變數,或者可以理解為陣列變數。Scalar型變數用$符號開頭,List型變數用@符號開頭。這裡只是簡單介紹,後面會專門寫一篇兩種變數關係的。

    1)必填引數

給我們的關鍵字先新增4個引數,引數之間使用 |  進行分隔。(如果想在預設值裡使用 | 作為一個值而不是分隔符,那麼就要使用 \| 來表示|的值。

 

如果是這樣新增引數呢,表示這些引數都是必填的,我們建一個case3,並呼叫關鍵字測試看一下,這裡的關鍵字測試後面的4個格子都是紅色,提示引數必填。

    2)選填引數

假設我們想把其中第2個引數設成選填引數,選填引數就是給引數加上預設值,預設值使用 =  加上值,如果想預設為空,只寫等號就行了。

預設值的意思不需要細講了哈,就是如果你在呼叫這個關鍵字的時候,如果不給這個選填引數傳值,那麼就使用預設值作為引數的值

如果我們直接這樣加的話,點選OK就會報錯。意思是說必填引數不允許在選填引數後面。

也就是說如果某一個引數設定成了選填引數,那麼他後面的引數都必須是選填引數,不能是必填引數。

在我們這裡就是第2個引數如果要可選,要麼把3、4引數也都設定上預設值,要麼就把第2個引數調整到最後去。我先調整成下面這樣,就不會報錯了。

    3)List變數引數

List變數也是可以作為引數,但是List變數只能放在最後一位。如果放在前面,就會報錯。

我把arg4改成了@{arg4}這樣的List變數,儲存時就會提示List變數只能作為最後一個引數。

為啥只能是最後一個呢?從英文的角度看是the last argument,沒有s。。。。得意

如果一定要試試最後2個都放list變數呢,也是會報錯的。

這是為什麼呢?首先,List變數本來來說,他是一個可變的,即List的成員數量不確定。而List作為引數的話,有幾個成員就是相當於幾個單值引數,他實際上是提供了一種引數個數可變的方式。那麼既然可變,如果放在前面的話(見第一個例子的圖),他就沒法確定傳入的引數到底哪些是給arg4的,哪個是給arg2的了;同理,如果放2個List也是不行的(見第二個例子的圖),因為也是無法區分傳入的引數到底哪些是給arg4哪些是給arg2

而且2個可變和1個可變沒什麼差別滴,所以最終限定是隻能有1個List引數,並且必須放在最後

注意一下:變數名和等號間不能有空格,如果有空格系統會報引數語法錯誤

最後看一下List引數的例項,其他幾種例項應該沒什麼複雜的,大家自己練習一下即可。

為了看的方便,我把引數數量減少點,只放2個引數,${arg1} | @{arg2},然後用了個Fail,目的是想把值列印在執行介面上。

然後我們在case3裡給他傳幾個值。

我特意把關鍵字的說明也截圖下來,大家可以看到agr2前面有個*,表示他可以接受任意個引數,Python裡其實也是這樣處理多引數的。

執行一下案例,看一下打印出來的內容。

好了,這一篇就先介紹到這裡,我們把傳入引數的部分詳細介紹了一下,我做的例子只是簡單基礎的例子,大家可以根據自己的需要進行發揮。

下一篇會繼續介紹User Keyword裡面的Teardown和Return Value的內容,預計今晚或明天~