自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

五大自動化測試的Python框架

譯文
開發(fā) 后端 自動化
本文通過介紹與比較五種自動化測試的Python框架,幫助您合理做出工具選擇,并能順利開展和加速應(yīng)用測試。

[[262799]]

【51CTO.com快譯】自2018年被評選為***編程語言以來,Python在各大排行榜上一直都是名列前茅。目前,它在Tiobe指數(shù)(請詳見https://www.tiobe.com/tiobe-index/)中排名第三個,僅次于Java和C。隨著該編程語言的廣泛使用,基于Python的自動化測試框架也應(yīng)運而生,且不斷發(fā)展與豐富。

因此,開發(fā)與測試人員在為手頭的項目選擇***測試框架時,需要考慮許多方面的因素,其中包括:框架的腳本質(zhì)量,測試用例的簡單性,以及運行模塊可能存在的技術(shù)弱點。為了避免出現(xiàn)“選擇困難癥”,我在此為大家準(zhǔn)備了五種Python類型的自動化測試框架,以供比較和討論。

1.Robot Framework

作為最重要的Python測試框架之一,Robot Framework主要被用在測試驅(qū)動(test-driven)類型的開發(fā)與驗收中。雖然是由Python開發(fā)而來,但是它也可以在基于.Net的IronPython和基于Java的Jython上運行。同時,作為一個Python框架,Robot還能夠兼容諸如Windows、MacOS、以及Linux等平臺。

使用先決條件

在使用Robot Framework(RF)之前,您需要先安裝Python 2.7.14及以上的版本。我推薦您使用Python 3.6.4,以確保適當(dāng)?shù)淖⑨屇軌虮惶砑拥酱a段中,并能夠跟蹤程序的更改。同時,您還需要安裝Python包管理器--pip。

當(dāng)然,您也必須下載相應(yīng)的開發(fā)框架,例如:在開發(fā)者圈子里比較流行的PyCharm社區(qū)版。另外,由于其代碼段本身并不依賴于任何IDE,因此您完全可以沿用手頭既有的IDE工具。

優(yōu)點

  • 通過使用關(guān)鍵字驅(qū)動測試(keyword-driven-test)的方法,它能夠幫助測試人員輕松地創(chuàng)建具有可讀性的測試用例,進(jìn)而簡化了整個自動化的過程。
  • 用戶能夠輕松地測試數(shù)據(jù)中的語法。
  • 因為是由各種通用工具和測試庫所組成,所以它不但擁有龐大的生態(tài)系統(tǒng),而且可以在單獨的項目中使用其各個元素。
  • 由于擁有許多類型的API,因此該框架具有高度的可擴(kuò)展性。
  • 雖然并非內(nèi)置功能,但是Robot可以通過Selenium Grid(請參見https://www.lambdatest.com/blog/lambdatest-now-live-with-an-online-selenium-grid-for-automated-cross-browser-testing/),來幫助用戶運行各種并行測試。

缺點

  • 雖然有著上述各種便利,但是Robot Framework在創(chuàng)建自定義的HTML報告方面比較繁瑣。您頂多能用它來生成xUnit格式的簡短報告。
  • 另外,Robot Framework在并行測試方面也并不見長。

Robot的特點與競品比較

由于Robot具有豐富的內(nèi)置庫,并能使用更為簡單的面向測試的DSL(Domain Specific Language),因此如果您是自動化測試領(lǐng)域的新手,并且缺乏開發(fā)經(jīng)驗的話,那么將它作為Python測試框架要比下面將要提到的Pytest或Pyunit,更容易上手一些。當(dāng)然,如果您需要開發(fā)復(fù)雜的自動化框架,那么還請使用Pytest、或其他類型的Python框架。

2.Pytest

適用于多種軟件測試的Pytest,是另一個Python類型的自動化測試框架。憑借著其開源和易學(xué)的特點,該工具經(jīng)常被QA(質(zhì)量分析)團(tuán)隊、開發(fā)團(tuán)隊、個人團(tuán)隊、以及各種開源項目所使用。鑒于Pytest具有“斷言重寫(assert rewriting)”之類的實用功能,許多大型互聯(lián)網(wǎng)應(yīng)用,如Dropbox和Mozilla,都已經(jīng)從下面將要提到的unittest(Pyunit)切換到了Pytest之上。

使用先決條件

除了基本的Python知識,用戶并不需要更多的技術(shù)儲備。另外,用戶只需要有一臺帶有命令行界面的測試設(shè)備,并且安裝好了Python包管理器、以及可用于開發(fā)的IDE工具。

優(yōu)點

  • 過去,開發(fā)人員必須將他們的測試包含在各種大型的類中。如今,Pytest可以讓用戶寫出更為緊湊的測試套件。
  • 其他的測試工具會要求開發(fā)或測試人員使用調(diào)試器,或以日志檢查的方式檢測某個特定值的來源。而用戶在用Pytest來編寫測試用例時,完全可以將所有的值都存儲在測試用例之中,直到***再獲悉有哪些值失敗了、以及哪些值得到了斷言。
  • 由于涉及到的樣板代碼(boilerplate code)并不多,因此用戶能夠容易地編寫和理解各種測試。
  • 測試夾具(Fixture)函數(shù)常被用來向測試函數(shù)添加某個參數(shù),并返回不同的值。在Pytest中,您可以通過使用一個夾具來模塊化另外一個。同時,用戶可以使用多個夾具,在無需重寫測試用例的情況下,將測試覆蓋到所有參數(shù)的組合。
  • Pytest開發(fā)人員通過發(fā)布各種實用插件,來保持框架的可擴(kuò)展性。例如:pytest-xdist可以在不使用其他測試器的情況下,被用于執(zhí)行并行測試。同時,單元測試也可以在無需復(fù)制任何代碼的情況下,實現(xiàn)參數(shù)化。
  • 通過為開發(fā)人員提供各種特殊的例程,它能夠使得測試用例的編寫更為簡單、更不易出錯,同時代碼也會變得更短、更易被理解。

缺點

  • 上述提及的特殊例程,也意味著用戶必須放棄一定的兼容性。雖然方便了用戶編寫測試用例,但是這些用例卻無法與任何其他的測試框架一起被使用。

Pytest的特點與競品比較

就編寫功能性測試用例和開發(fā)復(fù)雜的框架而言,Pytest勝過下面將要提到的UnitTest。不過,它和Robot Framework類似,僅適用于開發(fā)出簡單的測試框架。

如果您正在考慮使用Pytest,請進(jìn)一步參考《使用Pytest和Selenium WebDriver實現(xiàn)測試自動化》

3.UnitTest/PyUnit

受到了JUnit啟發(fā)的UnitTest/PyUnit,也是一種標(biāo)準(zhǔn)化的針對單元測試的Python類自動化測試框架。它的基類TestCase提供了各種斷言方法、以及所有清理和設(shè)置的例程。因此,TestCase子類中的每一種方法都是以“test”作為名詞前綴,以標(biāo)識它們能夠被作為測試用例所運行。用戶可以使用load方法和TestSuite類來分組、并加載各種測試。當(dāng)然,您也可以通過聯(lián)合使用,來構(gòu)建自定義的測試運行器。正如我們使用Junit去測試Selenium那樣,UnitTest也會用到UnitTest-sml-reporting、并能生成各種XML類型的報告。

使用先決條件

由于UnitTest默認(rèn)使用了Python,因此我們并不需要什么先決條件。除了需要具備Python框架的基本知識,您也可以額外地安裝pip、以及用于開發(fā)的IDE工具。

優(yōu)點

  • 開發(fā)人員并不需要安裝任何其他的模塊。
  • UnitTest是xUnit的衍生產(chǎn)品,其工作原理與其他xUnit框架十分類似。因此對于那些沒有過硬Python背景的人來說,也能很快地上手。
  • 用戶能夠以更為簡單的方式運行單個測試用例。您只需在終端上預(yù)定好名稱,該框架便可靈活地執(zhí)行各種用例的測試,并產(chǎn)生精煉的輸出。
  • 它能夠在幾毫秒內(nèi)生成各種測試報告。

缺點

  • 雖然該框架常用snake_case來命名各種Python代碼,但是由于它源自Junit,因此仍保留了一些傳統(tǒng)的camelCase命名方法。這往往會讓人產(chǎn)生混淆。
  • 由于它過多地支持了抽象方法,因此造成了測試代碼的目的有時不夠清晰。
  • 需要大量的樣板代碼。

PyUnit的特點與競品比較

和部分Python開發(fā)人員的觀點相似,我認(rèn)為:Pytest能夠培養(yǎng)測試人員以非常緊湊的方式編寫出更好的自動化代碼,這一編程習(xí)慣。盡管UnitTest是Python默認(rèn)的自動化測試框架,但是其工作原理、及命名規(guī)則仍與標(biāo)準(zhǔn)的Python代碼略有不同。同時,它也需要太多的樣板代碼。因此該框架并不太受歡迎。

4.Behave

我們都知道:行為驅(qū)動開發(fā)(behavior-driven development,BDD),是一種基于敏捷軟件開發(fā)的***方法。它能夠鼓勵開發(fā)人員、業(yè)務(wù)參與者和QA人員,三者之間的協(xié)作。作為另一種Python測試框架,Behave允許團(tuán)隊避開各種復(fù)雜的情況,去執(zhí)行BDD測試。從本質(zhì)上說,該框架與SpecFlow和Cucumber非常相似,常被用于執(zhí)行自動化測試。用戶可以通過簡單易讀的語言來編寫測試用例,并能夠在其執(zhí)行期間粘貼到代碼之中。而且,那些被設(shè)定的行為規(guī)范與步驟,也可以被重用到其他的測試方案中。

使用先決條件

任何具備Python基礎(chǔ)知識的人都可以使用Behave。其他先決條件還包括:

  • 您必須先安裝Python 2.7.14及以上的版本。
  • 需要通過Python包管理器或pip來與Behave協(xié)作。
  • 大多數(shù)開發(fā)人員會選擇Pycharm作為開發(fā)環(huán)境,當(dāng)然您也可以選用其他的IDE工具。

優(yōu)點

  • 由于系統(tǒng)行為使用了半正式(semi-formal)語言、以及域詞匯表(domain vocabulary),因此Behave有助于在組織中保持一致性的行為。
  • 讓那些工作在不同模塊上的開發(fā)團(tuán)隊,通過協(xié)調(diào)處理來具有類似的特征。
  • 其構(gòu)建的各個功能塊能夠執(zhí)行各種測試用例。
  • 由于具有更多值得用戶推理和思考的細(xì)節(jié),因此目標(biāo)產(chǎn)品會具有更好的規(guī)范性。
  • 根據(jù)類似的規(guī)范格式,它能夠讓項目經(jīng)理和利益相關(guān)者,對開發(fā)團(tuán)隊和QA團(tuán)隊的輸出具有更清楚地了解。

缺點

  • 只適用于黑盒測試。

Behave的特點與競品比較

Behave最適合于諸如簡單Web測試之類的黑盒測試。但是,對于那些具有復(fù)雜場景的集成測試與單元測試而言,Behave并不是一個很好的選擇。作為Behave的替代品,一些開發(fā)與測試人員會推薦使用pytest-bdd。該工具融合了Pytest的所有優(yōu)點,并實現(xiàn)了各種行為驅(qū)動測試的場景。

如果您正在考慮使用Behave,那么您可以借用《Behave with Selenium》(請參見https://www.lambdatest.com/support/docs/display/TD/Behave+with+Selenium+-+Running+Behave+Automation+Scripts+on+LambdaTest+Selenium+Grid)中提到的自動化腳本。

5.Lettuce

Lettuce是另一種基于Cucumber和Python的行為驅(qū)動類自動化工具。Lettuce主要專注于那些具有行為驅(qū)動開發(fā)特征的普通任務(wù)。它不但簡單易用,而且能夠使得整個測試過程更流暢、甚至更有趣。

使用先決條件

您需要安裝帶有IDE的Python 2.7.14、及以上的版本。當(dāng)然,您也可以使用Pycharm或任何其他IDE工具。同時,您還需要安裝Python包管理器。

優(yōu)點

  • 和其他BDD測試框架類似,Lettuce能夠讓開發(fā)人員創(chuàng)建多個場景,并用簡單的自然語言去描述不同的功能。
  • 根據(jù)類似的規(guī)范格式,開發(fā)與QA團(tuán)隊能夠協(xié)調(diào)共事。
  • 對于黑盒測試而言,Lettuce非常適合于那些行為驅(qū)動的測試用例。

缺點

  • 為了成功地實現(xiàn)行為驅(qū)動測試,開發(fā)團(tuán)隊、QA人員以及利益相關(guān)者之間需要持續(xù)進(jìn)行溝通。倘若缺乏此類溝通,則會產(chǎn)生流程模糊不清,并讓團(tuán)隊遇到問題。

競品比較

在普通開發(fā)人員和自動化測試人員看來,Cucumber在執(zhí)行BDD測試方面更為實用。而在Python開發(fā)和QA人員看來,Pytest-bdd才是***的。Pytest的強大之處在于:其框架實現(xiàn)了緊湊且易于理解的代碼,并能緊密地結(jié)合到行為驅(qū)動的測試之中。

結(jié)語

綜上所述,在上述五種自動化測試的Python框架中,Pytest、Robot Framework和UnitTest可主要用于功能與單元測試,而Lettuce和Behave僅適用于行為驅(qū)動測試。通過進(jìn)一步比較,我們認(rèn)為:對于功能測試而言,Pytest是***的。如果您是基于Python自動化測試的新手,那么Robot Framework是***的入門工具。雖然其功能有所受限,但是它非常容易上手。對于基于Python的BDD測試而言,Lettuce和Behave同樣優(yōu)秀。不過,如果你已經(jīng)有了一定的Pytest經(jīng)驗,那么***請使用Pytest-bdd。***,希望本文能夠幫助您選出合適的Python測試框架,并順利開展測試工作。

原文標(biāo)題:Top 5 Python Frameworks For Test Automation In 2019,作者:Arnab Roy

【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】

責(zé)任編輯:龐桂玉 來源: 51CTO
相關(guān)推薦

2019-04-18 09:00:00

Java自動化測試框架

2023-11-01 10:23:13

2020-09-14 07:00:00

測試自動化框架

2023-09-01 09:21:03

Python自動化測試

2021-09-18 12:51:38

AIoT工業(yè)自動化物聯(lián)網(wǎng)

2023-10-30 15:55:16

自動化人工智能

2022-12-08 11:13:03

自動化趨勢人工智能

2021-12-01 09:18:21

酒店業(yè)物聯(lián)網(wǎng)自動化

2021-09-08 13:29:14

自動化智能家居IOT

2011-02-17 11:18:29

PythonWebRuby

2022-08-26 13:23:10

人工智能自動化

2009-08-19 09:00:48

單元測試框架自動化測試

2020-04-28 22:14:07

自動化威脅Bots

2021-06-26 07:40:21

前端自動化測試Jest

2020-04-28 09:00:00

測試測試自動化

2017-12-24 21:00:10

自動化測試測試框架敏捷

2013-09-26 09:23:06

私有云私有云自動化云管理

2024-01-10 10:27:17

智能家居家庭自動化人工智能

2019-04-10 08:49:20

Java自動化測試開發(fā)應(yīng)用

2023-05-18 14:01:00

前端自動化測試
點贊
收藏

51CTO技術(shù)棧公眾號