自動化測試的Python五大框架

在這裏插入圖片描述

自2018年被評選爲編程語言以來,Python在各大排行榜上一直都是名列前茅。目前,它在Tiobe指數中排名第三個,僅次於Java和C。隨着該編程語言的普遍使用,基於Python的自動化測試框架也應運而生,且不斷髮展與豐富。編程

所以,開發與測試人員在爲手頭的項目選擇測試框架時,須要考慮許多方面的因素,其中包括:框架的腳本質量,測試用例的簡單性,以及運行模塊可能存在的技術弱點。爲了不出現「選擇困難症」,我在此爲你們準備了五種Python類型的自動化測試框架,以供比較和討論。框架

  • 1.Robot Framework

做爲最重要的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工具。模塊化

優勢函數

  • 經過使用關鍵字驅動測試(keyword-driven-test)的方法,它可以幫助測試人員輕鬆地建立具備可讀性的測試用例,進而簡化了整個自動化的過程。
  • 用戶可以輕鬆地測試數據中的語法。
  • 由於是由各類通用工具和測試庫所組成,因此它不但擁有龐大的生態系統,並且能夠在單獨的項目中使用其各個元素。
  • 因爲擁有許多類型的API,所以該框架具備高度的可擴展性。
  • 雖然並不是內置功能,可是Robot能夠經過Selenium Grid來幫助用戶運行各類並行測試

缺點
雖然有着上述各類便利,可是Robot Framework在建立自定義的HTML報告方面比較繁瑣。您頂多能用它來生成xUnit格式的簡短報告。工具

另外,Robot Framework在並行測試方面也並不見長。單元測試

Robot的特色與競品比較
因爲Robot具備豐富的內置庫,並能使用更爲簡單的面向測試的DSL(Domain Specific Language),所以若是您是自動化測試領域的新手,而且缺少開發經驗的話,那麼將它做爲Python測試框架要比下面將要提到的Pytest或Pyunit,更容易上手一些。固然,若是您須要開發複雜的自動化框架,那麼還請使用Pytest、或其餘類型的Python框架。測試

  • 2.Pytest

適用於多種軟件測試的Pytest,是另外一個Python類型的自動化測試框架。憑藉着其開源和易學的特色,該工具常常被QA(質量分析)團隊、開發團隊、我的團隊、以及各類開源項目所使用。鑑於Pytest具備「斷言重寫(assert
rewriting)」之類的實用功能,許多大型互聯網應用,如Dropbox和Mozilla,都已經從下面將要提到的unittest(Pyunit)切換到了Pytest之上。ui

使用先決條件
除了基本的Python知識,用戶並不須要更多的技術儲備。另外,用戶只須要有一臺帶有命令行界面的測試設備,而且安裝好了Python包管理器、以及可用於開發的IDE工具。

優勢

  • 過去,開發人員必須將他們的測試包含在各類大型的類中。現在,Pytest可讓用戶寫出更爲緊湊的測試套件。
  • 其餘的測試工具會要求開發或測試人員使用調試器,或以日誌檢查的方式檢測某個特定值的來源。而用戶在用Pytest來編寫測試用例時,徹底能夠將全部的值都存儲在測試用例之中,直到再獲悉有哪些值失敗了、以及哪些值獲得了斷言。
  • 因爲涉及到的樣板代碼(boilerplate code)並很少,所以用戶可以容易地編寫和理解各類測試。
  • 測試夾具(Fixture)函數常被用來向測試函數添加某個參數,並返回不一樣的值。在Pytest中,您能夠經過使用一個夾具來模塊化另一個。同時,用戶可使用多個夾具,在無需重寫測試用例的狀況下,將測試覆蓋到全部參數的組合。
  • Pytest開發人員經過發佈各類實用插件,來保持框架的可擴展性。例如:pytest-xdist能夠在不使用其餘測試器的狀況下,被用於執行並行測試。同時,單元測試也能夠在無需複製任何代碼的狀況下,實現參數化。
  • 經過爲開發人員提供各類特殊的例程,它可以使得測試用例的編寫更爲簡單、更不易出錯,同時代碼也會變得更短、更易被理解。

缺點
上述說起的特殊例程,也意味着用戶必須放棄必定的兼容性。雖然方便了用戶編寫測試用例,可是這些用例卻沒法與任何其餘的測試框架一塊兒被使用。

Pytest的特色與競品比較
就編寫功能性測試用例和開發複雜的框架而言,Pytest賽過下面將要提到的UnitTest。不過,它和Robot Framework相似,僅適用於開發出簡單的測試框架。

若是您正在考慮使用Pytest,請進一步參考《使用Pytest和Selenium WebDriver實現測試自動化》。

  • 3.UnitTest/PyUnit

受到了JUnit啓發的UnitTest/PyUnit,也是一種標準化的針對單元測試的Python類自動化測試框架。它的基類TestCase提供了各類斷言方法、以及全部清理和設置的例程。所以,TestCase子類中的每一種方法都是以「test」做爲名詞前綴,以標識它們可以被做爲測試用例所運行。用戶可使用load方法和TestSuite類來分組、並加載各類測試。

固然,您也能夠經過聯合使用,來構建自定義的測試運行器。正如咱們使用Junit去測試Selenium那樣,UnitTest也會用到UnitTest-sml-reporting、並能生成各類XML類型的報告。

使用先決條件
因爲UnitTest默認使用了Python,所以咱們並不須要什麼先決條件。除了須要具有Python框架的基本知識,您也能夠額外地安裝pip、以及用於開發的IDE工具。

優勢

  • 開發人員並不須要安裝任何其餘的模塊。
  • UnitTest是xUnit的衍生產品,其工做原理與其餘xUnit框架十分相似。所以對於那些沒有過硬Python背景的人來講,也能很快地上手。
  • 用戶可以以更爲簡單的方式運行單個測試用例。您只需在終端上預約好名稱,該框架即可靈活地執行各類用例的測試,併產生精煉的輸出。
  • 它可以在幾毫秒內生成各類測試報告。

缺點
雖然該框架經常使用snake_case來命名各類Python代碼,可是因爲它源自Junit,所以仍保留了一些傳統的camelCase命名方法。這每每會讓人產生混淆。

因爲它過多地支持了抽象方法,所以形成了測試代碼的目的有時不夠清晰。須要大量的樣板代碼。

PyUnit的特色與競品比較
和部分Python開發人員的觀點類似,我認爲:Pytest可以培養測試人員以很是緊湊的方式編寫出更好的自動化代碼,這一編程習慣。儘管UnitTest是Python默認的自動化測試框架,可是其工做原理、及命名規則仍與標準的Python代碼略有不一樣。同時,它也須要太多的樣板代碼。所以該框架並不太受歡迎。

  • 4.Behave

咱們都知道:行爲驅動開發(behavior-driven
development,BDD),是一種基於敏捷軟件開發的方法。它可以鼓勵開發人員、業務參與者和QA人員,三者之間的協做。做爲另外一種Python測試框架,Behave容許團隊避開各類複雜的狀況,去執行BDD測試。從本質上說,該框架與SpecFlow和Cucumber很是類似,常被用於執行自動化測試。用戶能夠經過簡單易讀的語言來編寫測試用例,並可以在其執行期間粘貼到代碼之中。並且,那些被設定的行爲規範與步驟,也能夠被重用到其餘的測試方案中。

使用先決條件
任何具有Python基礎知識的人均可以使用Behave。其餘先決條件還包括:

您必須先安裝Python 2.7.14及以上的版本。

須要經過Python包管理器或pip來與Behave協做。

大多數開發人員會選擇Pycharm做爲開發環境,固然您也能夠選用其餘的IDE工具。

優勢

  • 因爲系統行爲使用了半正式(semi-formal)語言、以及域詞彙表(domain
    vocabulary),所以Behave有助於在組織中保持一致性的行爲。
  • 讓那些工做在不一樣模塊上的開發團隊,經過協調處理來具備相似的特徵。
  • 其構建的各個功能塊可以執行各類測試用例。
  • 因爲具備更多值得用戶推理和思考的細節,所以目標產品會具備更好的規範性。
  • 根據相似的規範格式,它可以讓項目經理和利益相關者,對開發團隊和QA團隊的輸出具備更清楚地瞭解。

缺點
只適用於黑盒測試。

Behave的特色與競品比較
Behave最適合於諸如簡單Web測試之類的黑盒測試。可是,對於那些具備複雜場景的集成測試與單元測試而言,Behave並非一個很好的選擇。做爲Behave的替代品,一些開發與測試人員會推薦使用pytest-bdd。該工具融合了Pytest的全部優勢,並實現了各類行爲驅動測試的場景。

若是您正在考慮使用Behave,那麼您能夠借用《Behave with Selenium》中提到的自動化腳本。

  • 5.Lettuce

Lettuce是另外一種基於Cucumber和Python的行爲驅動類自動化工具。Lettuce主要專一於那些具備行爲驅動開發特徵的普通任務。它不但簡單易用,並且可以使得整個測試過程更流暢、甚至更有趣。

使用先決條件
您須要安裝帶有IDE的Python 2.7.1四、及以上的版本。固然,您也可使用Pycharm或任何其餘IDE工具。同時,您還須要安裝Python包管理器。

優勢

  • 和其餘BDD測試框架相似,Lettuce可以讓開發人員建立多個場景,並用簡單的天然語言去描述不一樣的功能。
  • 根據相似的規範格式,開發與QA團隊可以協調共事。
  • 對於黑盒測試而言,Lettuce很是適合於那些行爲驅動的測試用例

缺點

  • 爲了成功地實現行爲驅動測試,開發團隊、QA人員以及利益相關者之間須要持續進行溝通。假若缺少此類溝通,則會產生流程模糊不清,並讓團隊遇到問題。競品比較
  • 在普通開發人員和自動化測試人員看來,Cucumber在執行BDD測試方面更爲實用。而在Python開發和QA人員看來,Pytest-bdd纔是的。Pytest的強大之處在於:其框架實現了緊湊且易於理解的代碼,並能緊密地結合到行爲驅動的測試之中。

結語

綜上所述,在上述五種自動化測試的Python框架中,Pytest、Robot Framework和UnitTest可主要用於功能與單元測試,而Lettuce和Behave僅適用於行爲驅動測試。經過進一步比較,咱們認爲:對於功能測試而言,Pytest是的。若是您是基於Python自動化測試的新手,那麼Robot Framework是的入門工具。雖然其功能有所受限,可是它很是容易上手。對於基於Python的BDD測試而言,Lettuce和Behave一樣優秀。不過,若是你已經有了必定的Pytest經驗,那麼請使用Pytest-bdd,但願本文可以幫助您選出合適的Python測試框架,並順利開展測試工做。

END

這裏多說一句

我是個自動化測試人員上面是我收集的一些視頻資源,在這個過程當中幫到了我不少。若是你不想再體驗一次自學時找不到資料,沒人解答問題,堅持幾天便放棄的感覺的話,能夠加入咱們扣扣羣(785128166)裏面有各類軟件測試資源和技術討論。

相關文章
相關標籤/搜索