鏈接:https://www.zhihu.com/question/263687755/answer/271878708
單從做Web UI 自動化來說,這兩種方案沒什么區別。看個人喜好!接下來我從實現原理和優缺點兩方面來介紹這兩種方案。
Selenium 支持不同的編程語言,說白了就是針對不同的編程語言都寫一遍API。
不理解的可以去看 selenium開源項目的目錄,其中 java目錄就是針對java語言的,py目錄是針對python語言的,rb目錄就是Ruby語言的...
那針對 robot framework的呢?
robotframework/SeleniumLibrary
在這里,不過不是由 selenium團隊維護,而是由 robot framework 團隊維護。
問題來了,不同的團隊去寫Selenium 的實現不會有偏差么?
一般不會,因為大家都遵循 WebDriver 規范。
包括瀏覽器廠商,以及他們自家出的瀏覽器驅動。所以,你才可以這么順暢的寫一遍Selenium 腳本,任意切換瀏覽器來執行。
所以,這兩個方案的對比,重點是 unittest 單元測試框架和 robot framework 框架的對比!題主問到點上了,說明對這兩個工具還是有所了解的。(不過,你的unittest單詞拼錯了噢!哈哈!)
unittest 是基於Python的單元測試框架,所以,本質上在使用它的時候,寫的還是Python語言。
from selenium import webdriver import unittest class MyTest(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() self.base_url = "https://www.baidu.com" def test_baidu(self): driver = self.driver driver.get(self.base_url) driver.find_element_by_id("kw").send_keys("selenium") driver.find_element_by_id("su").click() def tearDown(self): self.driver.quit() if __name__ == "__main__": unittest.main()
這里貼了一個用unittest + selenium寫UI 自動化測試的demo,你可以感受一下它有語法。
優點:
靈活,只要你懂Python開發,想怎么玩就怎么玩。想實現什么功能就實現什么功能(自動發郵件,定時任務...)。
缺點:
學習成本高,我們寫的UI自動化項目也是項目啊。開發考慮的問題,我們也需要,比如封裝,設計模式等。
什么都要自己來,如果你想生成HTML格式的報告,還需要去找HTMLTestRunner這樣擴展。
robot framework也是基於Python的一個測試框架,不過,它是專門為了解決自動化問題而生的。並且,它封裝了一套自己的語法。
*** Settings *** Library SeleniumLibrary *** Test Cases *** Baidu search case Open Browser http://www.baidu.com chrome Input text id=kw robot framework click button id=su close Browser
這里貼一個robot framework + seleniumLibrary 寫的UI 自動化測試的的demo。你可以再來感受一下。
優點:
1、不需要懂編程也可以用。
2、有豐富的測試庫:AutoItLibrary,AppiumLibrary,HTTP library (Requests) ... ,所以,滿足了主流的各種自動化測試需求。
3、實再滿足不了測試需求,只要你懂Python,也可以自己去開發關鍵字來用。
4、便於團隊推廣,不是所有測試團隊都懂編程的,也不是每個測試都對技術有追求的。這個時候,只要團隊中有一個人懂python開發robot famework 關鍵字,其它人會關鍵字就可以。
5、集成了非常棒的HTML測試報告,還帶錯誤截圖噢!
缺點:
1、一樣有學習成本。robot framework 也不帶錄制功能;不是錄個腳本隨便跑的那種。
2、robot framework 目前對Python3 的支持性不好,主要是它的擴展庫的問題。
3、我不太喜歡 robot framework的語法(我說的是我)。
鏈接:https://www.zhihu.com/question/263687755/answer/271878708
Robot Framework: 自定義自己的python庫
利用Robot Framework編寫測試用例,往往需要開發自己的關鍵字,有的關鍵字需要通過自己編寫python代碼來實現。這在rf中,就需要自己定義python庫。這個過程其實不復雜,本文來介紹下。
1、在python安裝目錄下的 Lib\site-packages 目錄下 新建一個目錄,目錄名就是庫名,如 NewLibrary
2、在新建的NewLibrary目錄下創建一個python文件,任何合法的文件名即可,擴展名為py。如:myclass.py
其內容如下
class MyClass(object): def __init__(self): pass def printMsg(self,msg): print "hello "+msg
上面代碼定義了一個python類,其中除構造方法 _init_ 外,還定義了一個printMsg方法,該方法其實就是rf中的關鍵字,可以直接在rf中使用。下面我們介紹。
3、在新建的NewLibrary目錄下創建 __init__.py 文件,文件名必須固定這樣。該文件的功能,就是把關鍵字類暴露出來,讓rf能知道。
其內容如下:
from myclass import MyClass class NewLibrary(MyClass): ROBOT_LIBRARY_SCOPE = 'GLOBAL'
4、通過前面三個步驟,一個最簡單的自定義的NewLibrary庫就創建好了,在rf工具中就可以使用了
1)先要導入 NewLibrary 庫
2)使用關鍵字printMsg。需要說明的是,在rf中引用時,既可以寫成 printMsg,也可寫成 print msg。一般習慣用空格把單詞分開。因為rf關鍵字不區分大小寫。
*** Test Cases *** successsd print msg god printMsg ss printmsg yy
5、增加新的關鍵字
增加新的關鍵字很簡單,只需在MyClass類中增加新的方法即可。如:
class MyClass(object): def __init__(self): pass def printMsg(self,msg): print "hello "+msg def join_info(self,a,b): print a+b
這里定義了 join_info方法。在rf中使用時,可以寫成 join info 用空格分開。
上面介紹了最簡單的自定義模塊,雖然簡單,但實際可以滿足大部分自己開發的需求了。
https://www.cnblogs.com/51kata/p/5126227.html