Python3+Robot Framework+RIDE安裝使用教程

1、說明

Python3----網上不少文章都是用Python2,Robot Framework的部分文檔沒更新也直接寫着不支持Python3(如RIDE does not yet support Python 3),但事實上Robot Framework下的全部項目的最新版本都是支持Python3.6+了的,反卻是Python2之後不久可能就不支持了(如RIDE 1.7.4 THIS IS THE LAST RELEASE SUPPORTING PYTHON 2.7)。html

Robot Framework----Robot Framework是一個開源的自動化框架。更本質一點就是能夠把你編寫好的函數導出來,而後像寫存儲過程同樣寫代碼,達到下降難度的目的。好比你在python文件中寫好了一個函數login_system(username,password),而後Robot Framework就能夠導出爲Login System,別人寫腳本時就能夠寫成Login System username password。python

RIDE----RIDE是使用wxPython庫編寫的Robot Framework的圖形界面。Robot Framework的使用者還是程序員,而代碼本就是程序員所寫的如今又要多封裝一層多學一套語法不只沒有下降難度反而增長了工做量。因此僅就Robot Framework而言我的以爲沒什麼值得稱道的地方,加上RIDE有了圖形界面則能夠算一套工程化的管理工具,因此通常講Robot Framework其實也是講經過RIDE使用的方式。git

 

2、安裝

Robot Framework github地址:https://github.com/robotframework/robotframework程序員

RIDE github地址:https://github.com/robotframework/RIDEgithub

安裝方法千千萬,pip大法最簡單。直接使用pip安裝ride就能夠了,Robot Framework、wxPython等依賴庫都會自動安裝好。瀏覽器

pip install robotframework-ride

進入本身當前python環境的Scripts目錄(好比我這裏是F:\PyChram\robot\Scripts)使用如下命令啓動ride:框架

python ride.py

啓動後界面以下,常規的一個窗口程序界面。ide

 

3、使用

咱們說ride是一個簡單的小工具,就不一個個菜單一個個功能地介紹了,直接說它通常怎麼用。函數

咱們前面說Robot Framework的功能就是把代碼文件中的函數抽象成所謂的關鍵字,咱們直接看這主要功能如何實現。工具

 

3.1 準備好代碼文件

將如下代碼使存到桌面,並命名爲test_lib.py

import urllib.request def get_url_source_code(url): """這個函數的功能是獲取傳來的url頁面的代碼並打印 url----形如https://www.baidu.com""" request_obj=urllib.request.Request(url) response_obj=urllib.request.urlopen(request_obj) html_source_code=response_obj.read().decode('utf-8') print(html_source_code) # 這個main只是用於運行演示,做爲Robot Framework的庫是不須要的
if __name__ == "__main__": url = "https://www.baidu.com" get_url_source_code(url)

咱們先看一下直接運行的結果,在main中傳入的百度的url,而後打印出返回的頁面的代碼。

 

3.2 新建項目及測試用例

主菜單----File----New Project

主要是填寫項目名稱(好比我這裏是test),其餘默認便可。Type/Format這種東西無非是存放格式的區別沒必要太在乎。

 

在新建的項目上鼠標右鍵---New Test Case---輸入測試用例(我這裏是testCase1)名稱點擊OK。

經以上步驟項目和測試用例都已建立好,當前界面以下:

 

3.3 導入自定義庫函數

對咱們這裏頁言,自定義庫就是前面的test_lib.py,庫含數就是其中的get_url_source_code。

左側窗格選中項目,右側窗格選中Edit選項卡,點擊Library按鈕

 經過Browse選中咱們的test_lib.py,其餘不用填,點擊OK。

回到主窗口上能夠看到導入了一個庫(若是呈紅色說明導入報錯,通常是腳本代碼有問題,可藉助cmd窗口的輸出進行定位)

在上邊界面中使用F5鍵,喚出關鍵字搜索對話框,Source中下拉選中test_lib。

如無心外,能夠看到以下圖咱們腳本中的get_url_source_code被抽取成了Get Url Source Code關鍵字,註釋這些也都有展示在上面(url那行沒換行是\n和\r\n的問題)。

 

3.4 使用自定義庫函數

通過前面幾步咱們已經將本身寫的函數導入了進來,下來看如何調用,這步也是Robot Framework(或者RIDE)的主要用法。

回到主窗口,左側窗口選中測試用例,右側窗口選中Edit選項卡,界面以下。

測試用例就真的是測試用例,其中的一、二、三、四、5就是測試步驟,其中第一列是關鍵字(即本質上的函數),其後各列用於輸入參數。

咱們輸入咱們要使用的關鍵字「Get Url Source Code」(可以使用Ctrl+Alt+Space獲取補全提示),此時界面以下圖。

一列爲粉紅底色,表示須要一個參數;其他後續列爲灰色表示不使用(但若是想的話能夠把本身的註釋寫在這些灰色格子上)。

咱們把參數設置成「https://www.baidu.com」,此時再看界面以下,白色底代表填寫上沒有錯誤。

若是本身的測試用例後續還有各步,就繼續在二、三、四、5那些行繼續寫下去便可。

 

3.5 運行測試用例及查看其報告

運行很簡單,左側窗格鉤選要運行的測試用例,右側窗格切換到Run選項卡,點擊Start按鈕。

底部窗格的輸出其實就只是咱們在get_url_source_code函數中的打印。

點擊Report和Log按鈕查看生成的報告,能夠看到主要仍舊只是把打印記錄到文件裏。

 

4、一些相關性問題討論

4.1 不少教程都介紹SeleniumLibrary到底在介紹什麼?

能夠看到網上不少教程不是像咱們上邊介紹如何導入和使用本身的代碼,而是介紹安裝SeleniumLibrary的庫(舊版叫Selenium2Library現已遷移到SeleniumLibrary,Selenium2Library仍可安裝但事實上還是引用SeleniumLibrary),而後使用裏邊的Open Browser關鍵字(函數)使用瀏覽器打開某個網頁(例如百度首頁)。

安裝直接使用pip安裝便可:

pip install robotframework-seleniumlibrary

導入時教程都會說直接輸入SeleniumLibrary便可,而不像咱們前面3.3說的那樣得點擊「Browse」選擇具體的文件。

這並非什麼玄學,只要輸入名字RIDE就能自動把庫導進去了,實際上若是RIDE看到輸入的只是一個名字而不是路徑,就會到當前啓動ride所用python的Lib/site-packages目錄下尋找同名文件夾導入。

也就是說不少教程中SeleniumLibrary的例子,其做用就只是演示如何導入第三方庫;而實際上導入第三方庫是沒多大用,不少人都介紹我的感受只是人云亦云的行爲。

由於若是是程序員那確定願意直接寫代碼而不是RIDE來調用庫;而若是是通常的維護人員,通常也只會導入本身企業的針對本身業務寫好庫其餘第三方庫他也不會用;再則除非SeleniumLibrary這種針對Robot Framework寫好的庫,否則不少第三方庫(好比requests/scapy等)的方法是封裝於類中的,並不能抽取成關鍵字。

 

4.2 如何導入類中的方法?

在前面3.3小節中咱們導入的是直接定義的方法get_url_source_code,在上面一小節最後咱們又說類中的方法不能直接被RIDE抽取成關鍵字。

那麼類中的方法到底能不能被抽取成關鍵字呢,不能的話是由於什麼,能的話該如何操做?

首先能夠確定類中的方法不能直接抽取成關鍵字但確實能夠間接抽取成關鍵字的,好比咱們前面提到的SeleniumLibrary的Open Browser自己就是一個類中的方法。

 

不能直接抽取的緣由也在上圖中展現了,那就是類的方法總要有一個參數self,若是直接抽取出來self這個參數不知道該傳什麼。

SeleniumLibrary中的作法是使用一個@keyword註解,而後在其餘地方又作了一些處理。這裏我並無研究得很清楚,即怎麼導入類中的方法暫時還不知道。

 

4.3 Resource是什麼?

在Library按鈕的下方有一個Resource按鈕,這個Resource是什麼,和Library有什麼區別?

左側窗格選中項目Test,而後點擊New User Keyword。我這裏填入「Get Baidu Index Source Code」

左側窗格選中剛建的Resource,右側窗格同樣是寫獲取百度首頁的代碼。

此時咱們再新建一個測試用例,能夠看到能夠直接使用「Get Baidu Index Source Code」關鍵字

因此到這就清楚了,資源就是已有關鍵字組合成的新的關鍵字。咱們再來具體看一下在文件上到底長什麼樣,右側窗格切換到Text Edit選項卡。

*** Keywords ***節區(包括該行)單獨複製出來保存成文件就是Resource File了(如比testResource.txt),長這樣的文件就能夠經過Resource按鈕導入到RIDE中了。

另外在左側窗格還能夠看到一個External Resources的東西,這部分的Resource是和項目無關的,添加到這裏的Resource即使新建了一個項目仍是會列在那裏;而經過Resource導入的Resource只能在當前項目中使用。

不過External Resources並不會自動導入到新建項目的,而是每一個項目都得再經過Resource按鈕再導入一遍才能使用,感受這是一個External Resources的實現Bug。

 

4.4 數據驅動是什麼?

據說RIDE右下方的Metadate還能數據驅動的功能,「數據驅動」這麼高大上的名字沒據說過搞得本身都慌了,趕忙研究一番。

而後看了半天,所謂數據驅動就是把測試載荷全寫到文件中使用時從文件遍歷載荷;而具體到RIDE中,就是可讓你加幾個變量,而後在編寫testCase時可使用這些變量。

一如動輒AI、大數據,我總覺如今搞計算機的愈來愈博(會)學(吹)多(牛)識(逼),一個司空見慣的東西都能給換個這麼有文采的名字,完後還能靠個名字加東拉西扯把人給唬得一愣一愣的。

相關文章
相關標籤/搜索