五個優(yōu)秀 Python 測試框架
在本文中,讀者將找到用于測試自動化的前 5 個 Python 框架的真實比較。發(fā)現(xiàn)他們所有的優(yōu)點和缺點。
在被評為 2018 年最佳編程語言之后,Python 的排名繼續(xù)上升,目前排名第三,僅次于 Java 和 C,根據(jù)指數(shù)由 Tiobe 出版。隨著這種語言的使用越來越多,基于 Python 的測試自動化框架也越來越受歡迎。顯然,在為他們的項目選擇最佳框架時,開發(fā)人員和測試人員會有點困惑。在選擇一個時,你應(yīng)該判斷很多東西,框架的腳本質(zhì)量,測試用例的簡單性和運行模塊的技術(shù)并找出它們的弱點。這是我試圖幫助您比較 2019 年測試自動化的前五名 Python 框架,以及它們與其他框架相比的優(yōu)缺點。因此,您可以根據(jù)需要選擇理想的 Python 測試自動化框架。
Robot Framework
Robot Framework 主要用于驗收測試驅(qū)動的開發(fā)以及驗收測試,是頂級 Python 測試框架之一。雖然它是使用 Python 開發(fā)的,但它也可以在基于 .net 的 IronPython 和基于 Java 的 Jython 上運行。Robot 作為 Python 框架兼容所有平臺——Windows、MacOS 或 Linux。
先決條件
- 首先,只有當(dāng)你安裝了 Python 2.7.14 或更高版本時,你才能使用 Robot Framework (RF)。雖然也使用了 Python 3.6.4,但 RF 官方博客中提供的代碼片段將確保添加了適當(dāng)?shù)淖⑨專ㄋ行枰母摹?/li>
- 您還需要安裝“pip”或 Python 包管理器。
- 最后,必須下載一個開發(fā)框架。PyCharm Community Edition 是開發(fā)人員中流行的框架。但是,由于代碼片段不依賴于 IDE,因此您可以使用之前使用過的任何 IDE。
機器人的優(yōu)缺點
讓我們來看看 Robot 作為測試自動化框架相對于其他 Python 框架的優(yōu)勢和劣勢:
優(yōu)點
- 使用關(guān)鍵字驅(qū)動的測試方法,它通過幫助測試人員輕松創(chuàng)建可讀的測試用例來簡化自動化過程。
- 可以輕松使用測試數(shù)據(jù)語法。
- 它由通用工具和測試庫組成,擁有一個龐大的生態(tài)系統(tǒng),其中各個元素可以在單獨的項目中使用。
- 該框架具有高度可擴展性,因為它具有許多 API。
- Robot 框架可幫助您通過 Selenium Grid 運行并行測試;但是,此功能不是內(nèi)置的。
缺點
- Robot 框架在創(chuàng)建自定義 HTML 報告時雖然很棘手。但是,您仍然可以使用 Robot 框架呈現(xiàn) xUnit 格式的簡短報告。
- Robot框架的另一個缺陷是并行測試的不足。
Robot 是最適合您的 Python 測試框架嗎?
如果您是自動化領(lǐng)域的初學(xué)者并且開發(fā)經(jīng)驗較少,那么使用 Robot 作為頂級 Python 測試框架比 Pytest 或 Pyunit 更容易使用,因為它具有豐富的內(nèi)置庫并且涉及使用更容易的面向測試的 DSL。但是,如果你想開發(fā)一個復(fù)雜的自動化框架,最好切換到 Pytest 或任何其他涉及 Python 代碼的框架。
pytest
Pytest 用于各種軟件測試,是另一個用于測試自動化的頂級 Python 測試框架。該工具開源且易于學(xué)習(xí),可供 QA 團隊、開發(fā)團隊、個人實踐小組和開源項目使用。由于其有用的功能,如“斷言重寫”,互聯(lián)網(wǎng)上的大多數(shù)項目,包括像 Dropbox 和 Mozilla 這樣的大人物,已經(jīng)從 unittest (Pyunit) 切換到 Pytest。讓我們深入了解一下這個 Python 框架的特別之處。
先決條件
除了 Python 的應(yīng)用知識外,Pytest 不需要任何復(fù)雜的東西。您所需要的只是一個工作桌面,它具有:
- 命令行界面
- Python包管理器
- 開發(fā)IDE
Pytest的優(yōu)缺點
優(yōu)點
- 在 Python 測試社區(qū)中,在 Pytest 出現(xiàn)之前,開發(fā)人員將他們的測試包含在大類中。然而,Pytest 帶來了一場革命,因為它使得以比以前更緊湊的方式編寫測試套件成為可能。
- 其他測試工具要求開發(fā)人員或測試人員使用調(diào)試器或檢查日志并檢測特定值的來源。Pytest 幫助您編寫測試用例,使您能夠?qū)⑺兄荡鎯υ跍y試用例中,并通知您哪個值失敗以及哪個值被斷言。
- 由于不需要那么多樣板代碼,因此測試更容易編寫和理解。
- 夾具是可以通過向測試函數(shù)添加參數(shù)來使用的函數(shù)。他們的工作是返回值。在 Pytest 中,您可以通過使用一個夾具來使它們模塊化。使用多個夾具可幫助您覆蓋所有參數(shù)組合,而無需重寫測試用例。
- Pytest 的開發(fā)人員發(fā)布了一些有用的插件,使框架可擴展。例如,pytest-xdist可用于在不使用不同的測試運行器的情況下執(zhí)行并行測試。單元測試也可以在不復(fù)制任何代碼的情況下進行參數(shù)化。
- 為開發(fā)人員提供某些特殊例程,使測試用例編寫更簡單,更不容易出錯。代碼也變得更短且易于理解。
缺點
Pytest 使用特殊例程這一事實意味著您必須在兼容性方面做出妥協(xié)。您將能夠方便地編寫測試用例,但無法將這些測試用例與任何其他測試框架一起使用。
Pytest 是最適合您的 Python 測試框架嗎?
好吧,您必須從學(xué)習(xí)一門成熟的語言開始,但是一旦掌握了它,您將獲得所有功能,例如靜態(tài)代碼分析、對多個 IDE 的支持,以及最重要的是,編寫有效的測試用例。對于編寫功能測試用例和開發(fā)復(fù)雜的框架來說,它比unittest好,但如果你的目標(biāo)是開發(fā)一個簡單的框架,它的優(yōu)勢有點類似于Robot框架。
單元測試(PyUnit)
Unittest,即 PyUnit,是 Python 自帶的用于單元測試的標(biāo)準(zhǔn)測試自動化框架。它深受 JUnit 的啟發(fā)。斷言方法和所有清理和設(shè)置例程由基類 TestCase 提供。TestCase 子類中的每個方法的名稱都以“test”開頭。這允許它們作為測試用例運行。您可以使用加載方法和 TestSuite 類來分組并加載測試。您可以一起使用它們來構(gòu)建定制的測試運行器。與使用 JUnit 進行 Selenium 測試一樣,unittest 也具有使用和生成 XML 報告的能力unittest-sml-reporting。
先決條件
沒有這樣的先決條件,因為 unittest 默認情況下與 Python 一起提供。要使用它,您需要具備 Python 框架的標(biāo)準(zhǔn)知識,如果您想安裝其他模塊,則需要安裝 pip 以及用于開發(fā)的 IDE。
PyUnit的優(yōu)點和缺點
優(yōu)點
作為 Python 標(biāo)準(zhǔn)庫的一部分,使用 Unittest 有幾個優(yōu)點:
- 開發(fā)人員不需要安裝任何額外的模塊,因為它是隨附的。
- Unittest是xUnit的衍生產(chǎn)品,其工作原理與其他xUnit框架類似。沒有深厚 Python 背景的人通常會覺得工作起來很舒服。
- 您可以以更簡單的方式運行單個測試用例。您需要做的就是在終端上指定名稱。輸出也很簡潔,使框架在執(zhí)行測試用例時具有靈活性。
- 測試報告在幾毫秒內(nèi)生成。
缺點
- 通常,snake_case用于命名 Python 代碼。但是,由于這個框架從 Junit 中得到了很多啟發(fā),所以傳統(tǒng)的camelCase命名方法仍然存在。這可能非常令人困惑。
- 測試代碼的意圖有時會變得不清楚,因為它太支持抽象了。
- 需要大量的樣板代碼。
PyUnit 是最適合您的 Python 測試框架嗎?
根據(jù)我個人的意見和其他 Python 開發(fā)人員的意見,Pytest 引入了某些慣用語,允許測試人員以非常緊湊的方式編寫更好的自動化代碼。盡管 unittest 作為默認的測試自動化框架出現(xiàn),但其工作原理和命名約定與標(biāo)準(zhǔn) Python 代碼略有不同,并且需要過多的樣板代碼,使其成為不太受歡迎的 Python 測試自動化框架。
Behave
我們都知道行為驅(qū)動開發(fā),這是一種最新的基于敏捷的軟件開發(fā)方法,它鼓勵開發(fā)人員、業(yè)務(wù)參與者和質(zhì)量分析師相互協(xié)作。Behave 是另一個頂級 Python 測試框架,它允許團隊執(zhí)行 BDD 測試而不會出現(xiàn)任何復(fù)雜情況。該框架的性質(zhì)與用于自動化測試的 SpecFlow 和 Cucumber 非常相似。測試用例是用一種簡單易讀的語言編寫的,然后在執(zhí)行過程中固定在代碼中。行為由行為規(guī)范設(shè)計,然后這些步驟被其他測試場景重用。
先決條件
任何具有 Python 基礎(chǔ)知識的人都應(yīng)該能夠使用 Behave。讓我們看一下先決條件:
- 在安裝 Behave 之前,您必須安裝 Python 2.7.14 以上的任何版本。
- 使用 Behave 需要 Python 包管理器或 pip。
- 開發(fā)環(huán)境是您需要的最后也是最重要的東西。您可以使用大多數(shù)開發(fā)人員首選的 Pycharm 或您選擇的任何其他 IDE。
Behave的優(yōu)點和缺點
與驅(qū)動測試框架中的所有其他行為一樣,對 Behave 優(yōu)勢的看法因人而異。讓我們來看看使用 Behave 的常見優(yōu)缺點:
優(yōu)點
- 系統(tǒng)行為由半正式語言和領(lǐng)域詞匯表達,使行為在組織中保持一致。
- 在具有相似功能的不同模塊上工作的開發(fā)團隊得到適當(dāng)?shù)膮f(xié)調(diào)。
- 構(gòu)建塊隨時準(zhǔn)備執(zhí)行各種測試用例。
- 推理和思考體現(xiàn)在細節(jié)上,從而產(chǎn)生更好的產(chǎn)品規(guī)格。
- 由于規(guī)范的相似格式,利益相關(guān)者或經(jīng)理對 QA 和開發(fā)人員的輸出有更好的清晰度。
缺點
唯一的缺點是它只適用于黑盒測試。
Behave 是最適合您的 Python 測試框架嗎?
好吧,正如我們所說,Behave(Python 框架)僅適用于黑盒測試。Web 測試是一個很好的例子,因為用例可以用通俗易懂的語言來描述。但是,對于集成測試或單元測試,Behave 不是一個好的選擇,因為冗長只會導(dǎo)致復(fù)雜測試場景的復(fù)雜化。開發(fā)人員和測試人員都推薦pytest-bdd. 它是 Behave 的替代品,因為它使用 Pytest 中的所有優(yōu)點并實現(xiàn)它以測試行為驅(qū)動的場景。
Lettuce
Lettuce 是另一個基于 Cucumber 和 Python 的簡單易用的行為驅(qū)動自動化工具。Lettuce 的主要目標(biāo)是專注于行為驅(qū)動開發(fā)的常見任務(wù),使過程更簡單和有趣。
先決條件
您至少需要安裝 Python 2.7.14 和 IDE。您可以使用 Pycharm 或您選擇的任何其他 IDE。此外,為了運行測試,您將需要安裝 Python 包管理器。
Lettuce的優(yōu)缺點
優(yōu)點
- 好吧,就像任何其他 BDD 測試框架一樣,Lettuce 使開發(fā)人員能夠創(chuàng)建多個場景并以簡單的自然語言描述功能。
- 由于規(guī)范的格式相似,因此開發(fā)和 QA 團隊得到了適當(dāng)?shù)膮f(xié)調(diào)。
- 對于黑盒測試,Lettuce 對于運行行為驅(qū)動的測試用例非常有用。
缺點
使用 Lettuce 作為 Python 框架只有一個缺點。為了成功執(zhí)行行為驅(qū)動測試,開發(fā)團隊、QA 和利益相關(guān)者之間的溝通是必要的。缺席或溝通不暢會使流程變得模棱兩可,任何團隊都可以提出問題。
Lettuce 是最適合您的 Python 測試框架嗎?
根據(jù)開發(fā)人員和自動化測試人員的說法,Cucumber 在執(zhí)行 BDD 測試時更有用。但是,如果我們談?wù)?Python 開發(fā)人員和 QA,沒有比pytest-bdd. Pytest 的所有強大功能,如緊湊性和易于理解的代碼,都在這個框架中實現(xiàn),并結(jié)合了行為驅(qū)動測試的冗長性。
總結(jié)!
在上面的文章中,我們根據(jù)不同的測試程序討論了 2019 年測試自動化的前五名 Python 框架。Pytest、Robot 框架和 unittest 用于功能和單元測試,而 Lettuce 和 Behave 僅適用于行為驅(qū)動測試。
從所述的功能,我們可以得出結(jié)論,對于功能測試,Pytest 是最好的。但是,如果您不熟悉基于 Python 的自動化測試,那么 Robot 框架是一個很好的入門工具。雖然功能有限,但能讓你在賽道上輕松領(lǐng)先。對于基于 Python 的 BDD 測試,Lettuce 和 Behave 同樣出色,但如果您已經(jīng)有 Pytest 的使用經(jīng)驗,最好使用pytest-bdd.
我希望我的文章能幫助您從頂級 Python 測試框架中做出正確的選擇,以滿足您的 Python Web 自動化需求。測試愉快!