偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

4種出色的Python測(cè)試框架!

譯文
開發(fā) 前端
為你的Python應(yīng)用程序編寫、運(yùn)行和維護(hù)單元測(cè)試的方法不只一種。本文介紹了四種出色的方法。

【51CTO.com快譯】為你的Python應(yīng)用程序編寫、運(yùn)行和維護(hù)單元測(cè)試的方法不只一種。本文介紹了四種出色的方法。

p1.jpg

企業(yè)軟件需要測(cè)試,如同建筑物需要消防和安全檢查。如果你知道某些電氣狀況或結(jié)構(gòu)問題可能導(dǎo)致災(zāi)難,不會(huì)只尋找一次,而是會(huì)反復(fù)尋找。同樣,如果你想防止應(yīng)用軟件中的某些問題或狀況,為此編寫測(cè)試可以確保它們永遠(yuǎn)不會(huì)進(jìn)入到生產(chǎn)環(huán)境。

對(duì)于像Python這樣的動(dòng)態(tài)語言來說,測(cè)試尤為重要。如果是動(dòng)態(tài)語言,大批的錯(cuò)誤僅在運(yùn)行時(shí)出現(xiàn)。可靠的測(cè)試套件有助于揪出這些問題,為繼承代碼庫(kù)的人提供同樣揪出問題的方法。

默認(rèn)情況下,Python隨帶自己的單元測(cè)試框架,該框架既實(shí)用又廣泛使用。但還有另外諸多方法,每種方法對(duì)于如何構(gòu)建和維護(hù)單元測(cè)試有各自的理念。下面介紹了默認(rèn)方法unittest以及三種重要的替代方法。

unittest和doctest

unittest是Python標(biāo)準(zhǔn)庫(kù)附帶的默認(rèn)測(cè)試框架,用于為Python本身創(chuàng)建測(cè)試套件。 unittest不像一些第三方測(cè)試框架那樣覆蓋廣泛,它本來就不是要這樣——它提供了足以為大多數(shù)項(xiàng)目編寫可靠的單元測(cè)試的功能。用過JUnit測(cè)試框架的Java開發(fā)人員應(yīng)該熟悉unittest。

要?jiǎng)?chuàng)建測(cè)試套件,你要?jiǎng)?chuàng)建從unittest.TestCase派生的Python類,測(cè)試是那些類中的函數(shù)。測(cè)試可能是簡(jiǎn)單的相等或不相等斷言,也可能是較為復(fù)雜的。比如說,assertRaises測(cè)試確保為特定測(cè)試引發(fā)特定異常。

測(cè)試可以分組為單個(gè)文件,也可以跨多個(gè)文件隔開、自動(dòng)發(fā)現(xiàn)然后加以執(zhí)行。你還可以為每個(gè)測(cè)試組提供fixture(安裝和拆卸例程),指定在特定條件下跳過的測(cè)試,并控制測(cè)試的執(zhí)行行為。

使用unittest的優(yōu)點(diǎn)是它眾所周知。就因?yàn)槠渌鸓ython程序員非常熟悉測(cè)試套件的編寫方式,就很難搞錯(cuò)unittest。

doctest也是Python標(biāo)準(zhǔn)庫(kù)附帶的,是補(bǔ)充模塊。Doctest尋找Python文件中格式類似Python交互式會(huì)話的注釋,并嘗試運(yùn)行這些注釋中包含的命令以查看結(jié)果是否匹配。這樣一來,可以驗(yàn)證函數(shù)的文檔字符串中的示例輸出以及函數(shù)的行為。

請(qǐng)注意,doctest最適合輸入輸出在控制臺(tái)中一目了然的簡(jiǎn)單函數(shù)的測(cè)試,以及不需要大量安裝或拆卸即可生成結(jié)果的測(cè)試。如果你嘗試對(duì)復(fù)雜函數(shù)執(zhí)行doctest,最終可能得到太過笨拙而沒有用處的doctest示例。

pytest

pytest項(xiàng)目可以完全替換或增強(qiáng)unittest。Pytest運(yùn)用了一種不同的理念來測(cè)試編寫,從而使開發(fā)人員無需大量的腳手架代碼,即可快速為項(xiàng)目實(shí)施小型測(cè)試套件。隨著項(xiàng)目不斷擴(kuò)大,pytest可以擴(kuò)大規(guī)模進(jìn)行匹配,允許更多的測(cè)試功能可以逐漸添加上去。

pytest測(cè)試一開始是遵循模塊中某種命名約定的緊湊函數(shù),而不是現(xiàn)有測(cè)試類型類的子類。通過從命令行在模塊上運(yùn)行pytest或在代碼內(nèi)調(diào)用pytest來調(diào)用測(cè)試。你可以創(chuàng)建pytest fixture來安裝和拆卸測(cè)試條件,并根據(jù)需要對(duì)這些fixutre規(guī)定寬泛或狹窄的范圍(比如從整個(gè)測(cè)試會(huì)話范圍到僅函數(shù)范圍)。

你可以添加的選項(xiàng)數(shù)量眾多且功能強(qiáng)大。成百上千個(gè)pytest插件讓你可以將測(cè)試與許多第三方服務(wù)和操作集成起來。最后,unittest和nose測(cè)試套件也可以作為測(cè)試過程的一部分來運(yùn)行,那樣你可以將pytest與現(xiàn)有套件集成起來,不必丟棄它們、從頭開始。

nose和nose2

nose及后續(xù)者nose2擴(kuò)展了用unittest編寫的測(cè)試,使它們更易于運(yùn)行。nose本身不再加以維護(hù);nose2延續(xù)這個(gè)項(xiàng)目,與Python 3兼容,功能上有一些變化,但基本理念一樣。我們?cè)谶@里主要介紹nose2。

nose2在兩個(gè)主要方面有別于unittest:它擁有插件架構(gòu),并使用.ini樣式的配置文件來控制測(cè)試如何運(yùn)行。默認(rèn)情況下,提供并啟用了許多nose2插件。.ini文件包括諸多設(shè)置,比如測(cè)試運(yùn)行期間探查哪些目錄、使用哪些插件。因此,可以對(duì)一組具有罕見行為的nose2測(cè)試進(jìn)行精確的腳本編寫,可以毫不費(fèi)力地重復(fù)使用。

nose2運(yùn)行時(shí),它查找以名稱test開頭的模塊,還有從unittest.TestCase派生的任何類,因此它可以運(yùn)行通過pytest或unittest范式設(shè)計(jì)的測(cè)試。當(dāng)模塊以獨(dú)立的方式加以執(zhí)行時(shí),nas2測(cè)試也可以配置成運(yùn)行(unittest和pytest也可以做到這樣)。

請(qǐng)注意,nose2可能不是你首次嘗試測(cè)試Python應(yīng)用程序的優(yōu)先選擇,因?yàn)樗僭O(shè)你在創(chuàng)建測(cè)試方面有一定的經(jīng)驗(yàn)。你需要先試一試unittest。

behave

behave是使用“行為驅(qū)動(dòng)開發(fā)”(BDD)范式的許多面向Python的測(cè)試框架之一。你可以用簡(jiǎn)單的英語“功能文件”描述測(cè)試的預(yù)期行為,并將測(cè)試本身寫在另一個(gè)文件中,然后執(zhí)行behave,觀察測(cè)試運(yùn)行情況,通過英語描述提供了注釋。

與通常需要先編寫代碼的測(cè)試編寫方法相比,這可能顯得更死板僵硬。但是BDD方法旨在使測(cè)試更容易為編寫測(cè)試的開發(fā)人員進(jìn)行推理,并且使其他人(包括最終用戶和其他開發(fā)人員)更容易理解測(cè)試的用途和原因。behave非常適合必須謹(jǐn)小慎微的項(xiàng)目。

behave讓你可以通過指定能添加到功能文件中個(gè)別案例的“標(biāo)簽”或元數(shù)據(jù),從命令行選擇性地運(yùn)行測(cè)試。還可以定義精細(xì)化的逐步行為,比如安裝和拆卸程序。behave測(cè)試還可以與Django和Flask Web框架集成起來。

還有其他幾種面向Python的BDD框架,比如Lettuce和Radish,但behave是使用最廣泛的框架之一。

原文標(biāo)題:4 Python test frameworks to crush your bugs,作者:Serdar Yegulalp

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

 

責(zé)任編輯:張燕妮 來源: 51CTO
相關(guān)推薦

2019-01-21 09:00:00

Python 開發(fā)編程語言

2021-03-22 08:00:00

PHP開發(fā)框架

2009-07-22 14:49:18

ibmdwPython測(cè)試

2020-12-28 05:56:57

Monorepo代碼庫(kù)工具

2024-11-05 08:28:50

2019-10-08 10:28:36

Python程序員鏡音雙子

2010-03-01 17:25:12

Python 測(cè)試框架

2010-02-24 17:58:28

Python 測(cè)試框架

2020-06-05 08:09:01

Python強(qiáng)化學(xué)習(xí)框架

2010-02-26 17:44:40

Python測(cè)試框架

2018-04-09 09:00:00

Java測(cè)試框架庫(kù)JUnit

2010-02-23 11:26:56

Python 測(cè)試框架

2023-03-22 18:17:49

Python框架測(cè)試自動(dòng)化

2023-09-01 09:21:03

Python自動(dòng)化測(cè)試

2022-08-19 11:19:49

單元測(cè)試Python

2011-07-09 10:49:07

筆記本評(píng)測(cè)

2020-06-12 07:57:55

Java框架編程語言Java

2010-08-27 09:11:27

Python單元測(cè)試

2019-12-27 18:07:53

Python網(wǎng)絡(luò)爬蟲HTML

2020-12-01 00:02:16

開發(fā)人員用戶體驗(yàn)高層管理人員
點(diǎn)贊
收藏

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