自2018年被評選爲編程語言以來,Python在各大排行榜上一直都是名列前茅。目前,它在Tiobe指數中排名第三個,僅次於Java和C。隨着該編程語言的普遍使用,基於Python的自動化測試框架也應運而生,且不斷髮展與豐富。編程
所以,開發與測試人員在爲手頭的項目選擇測試框架時,須要考慮許多方面的因素,其中包括:框架的腳本質量,測試用例的簡單性,以及運行模塊可能存在的技術弱點。爲了不出現「選擇困難症」,我在此爲你們準備了五種Python類型的自動化測試框架,以供比較和討論。框架
做爲最重要的Python測試框架之一,Robot
Framework主要被用在測試驅動(test-driven)類型的開發與驗收中。雖然是由Python開發而來,可是它也能夠在基於.Net的IronPython和基於Java的Jython上運行。同時,做爲一個Python框架,Robot還可以兼容諸如Windows、MacOS、以及Linux等平臺。dom
使用先決條件
在使用Robot Framework(RF)以前,您須要先安裝Python 2.7.14及以上的版本。我推薦您使用Python 3.6.4,以確保適當的註釋可以被添加到代碼段中,並可以跟蹤程序的更改。同時,您還須要安裝Python包管理器–pip。編程語言
固然,您也必須下載相應的開發框架,例如:在開發者圈子裏比較流行的PyCharm社區版。另外,因爲其代碼段自己並不依賴於任何IDE,所以您徹底能夠沿用手頭既有的IDE工具。模塊化
優勢函數
缺點
雖然有着上述各類便利,可是Robot Framework在建立自定義的HTML報告方面比較繁瑣。您頂多能用它來生成xUnit格式的簡短報告。工具
另外,Robot Framework在並行測試方面也並不見長。單元測試
Robot的特色與競品比較
因爲Robot具備豐富的內置庫,並能使用更爲簡單的面向測試的DSL(Domain Specific Language),所以若是您是自動化測試領域的新手,而且缺少開發經驗的話,那麼將它做爲Python測試框架要比下面將要提到的Pytest或Pyunit,更容易上手一些。固然,若是您須要開發複雜的自動化框架,那麼還請使用Pytest、或其餘類型的Python框架。測試
適用於多種軟件測試的Pytest,是另外一個Python類型的自動化測試框架。憑藉着其開源和易學的特色,該工具常常被QA(質量分析)團隊、開發團隊、我的團隊、以及各類開源項目所使用。鑑於Pytest具備「斷言重寫(assert
rewriting)」之類的實用功能,許多大型互聯網應用,如Dropbox和Mozilla,都已經從下面將要提到的unittest(Pyunit)切換到了Pytest之上。ui
使用先決條件
除了基本的Python知識,用戶並不須要更多的技術儲備。另外,用戶只須要有一臺帶有命令行界面的測試設備,而且安裝好了Python包管理器、以及可用於開發的IDE工具。
優勢
缺點
上述說起的特殊例程,也意味着用戶必須放棄必定的兼容性。雖然方便了用戶編寫測試用例,可是這些用例卻沒法與任何其餘的測試框架一塊兒被使用。
Pytest的特色與競品比較
就編寫功能性測試用例和開發複雜的框架而言,Pytest賽過下面將要提到的UnitTest。不過,它和Robot Framework相似,僅適用於開發出簡單的測試框架。
若是您正在考慮使用Pytest,請進一步參考《使用Pytest和Selenium WebDriver實現測試自動化》。
受到了JUnit啓發的UnitTest/PyUnit,也是一種標準化的針對單元測試的Python類自動化測試框架。它的基類TestCase提供了各類斷言方法、以及全部清理和設置的例程。所以,TestCase子類中的每一種方法都是以「test」做爲名詞前綴,以標識它們可以被做爲測試用例所運行。用戶可使用load方法和TestSuite類來分組、並加載各類測試。
固然,您也能夠經過聯合使用,來構建自定義的測試運行器。正如咱們使用Junit去測試Selenium那樣,UnitTest也會用到UnitTest-sml-reporting、並能生成各類XML類型的報告。
使用先決條件
因爲UnitTest默認使用了Python,所以咱們並不須要什麼先決條件。除了須要具有Python框架的基本知識,您也能夠額外地安裝pip、以及用於開發的IDE工具。
優勢
缺點
雖然該框架經常使用snake_case來命名各類Python代碼,可是因爲它源自Junit,所以仍保留了一些傳統的camelCase命名方法。這每每會讓人產生混淆。
因爲它過多地支持了抽象方法,所以形成了測試代碼的目的有時不夠清晰。須要大量的樣板代碼。
PyUnit的特色與競品比較
和部分Python開發人員的觀點類似,我認爲:Pytest可以培養測試人員以很是緊湊的方式編寫出更好的自動化代碼,這一編程習慣。儘管UnitTest是Python默認的自動化測試框架,可是其工做原理、及命名規則仍與標準的Python代碼略有不一樣。同時,它也須要太多的樣板代碼。所以該框架並不太受歡迎。
咱們都知道:行爲驅動開發(behavior-driven
development,BDD),是一種基於敏捷軟件開發的方法。它可以鼓勵開發人員、業務參與者和QA人員,三者之間的協做。做爲另外一種Python測試框架,Behave容許團隊避開各類複雜的狀況,去執行BDD測試。從本質上說,該框架與SpecFlow和Cucumber很是類似,常被用於執行自動化測試。用戶能夠經過簡單易讀的語言來編寫測試用例,並可以在其執行期間粘貼到代碼之中。並且,那些被設定的行爲規範與步驟,也能夠被重用到其餘的測試方案中。
使用先決條件
任何具有Python基礎知識的人均可以使用Behave。其餘先決條件還包括:
您必須先安裝Python 2.7.14及以上的版本。
須要經過Python包管理器或pip來與Behave協做。
大多數開發人員會選擇Pycharm做爲開發環境,固然您也能夠選用其餘的IDE工具。
優勢
缺點
只適用於黑盒測試。
Behave的特色與競品比較
Behave最適合於諸如簡單Web測試之類的黑盒測試。可是,對於那些具備複雜場景的集成測試與單元測試而言,Behave並非一個很好的選擇。做爲Behave的替代品,一些開發與測試人員會推薦使用pytest-bdd。該工具融合了Pytest的全部優勢,並實現了各類行爲驅動測試的場景。
若是您正在考慮使用Behave,那麼您能夠借用《Behave with Selenium》中提到的自動化腳本。
Lettuce是另外一種基於Cucumber和Python的行爲驅動類自動化工具。Lettuce主要專一於那些具備行爲驅動開發特徵的普通任務。它不但簡單易用,並且可以使得整個測試過程更流暢、甚至更有趣。
使用先決條件
您須要安裝帶有IDE的Python 2.7.1四、及以上的版本。固然,您也可使用Pycharm或任何其餘IDE工具。同時,您還須要安裝Python包管理器。
優勢
缺點
結語
綜上所述,在上述五種自動化測試的Python框架中,Pytest、Robot Framework和UnitTest可主要用於功能與單元測試,而Lettuce和Behave僅適用於行爲驅動測試。經過進一步比較,咱們認爲:對於功能測試而言,Pytest是的。若是您是基於Python自動化測試的新手,那麼Robot Framework是的入門工具。雖然其功能有所受限,可是它很是容易上手。對於基於Python的BDD測試而言,Lettuce和Behave一樣優秀。不過,若是你已經有了必定的Pytest經驗,那麼請使用Pytest-bdd,但願本文可以幫助您選出合適的Python測試框架,並順利開展測試工做。
END
我是個自動化測試人員上面是我收集的一些視頻資源,在這個過程當中幫到了我不少。若是你不想再體驗一次自學時找不到資料,沒人解答問題,堅持幾天便放棄的感覺的話,能夠加入咱們扣扣羣(785128166)裏面有各類軟件測試資源和技術討論。