久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

    1. <style id="76ofp"></style>

      <style id="76ofp"></style>
      <rt id="76ofp"></rt>
      <form id="76ofp"><optgroup id="76ofp"></optgroup></form>
      1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

        手機(jī)站
        千鋒教育

        千鋒學(xué)習(xí)站 | 隨時隨地免費(fèi)學(xué)

        千鋒教育

        掃一掃進(jìn)入千鋒手機(jī)站

        領(lǐng)取全套視頻
        千鋒教育

        關(guān)注千鋒學(xué)習(xí)站小程序
        隨時隨地免費(fèi)學(xué)習(xí)課程

        當(dāng)前位置:首頁  >  技術(shù)干貨  > 4種出色的Python測試框架!

        4種出色的Python測試框架!

        來源:千鋒教育
        發(fā)布人:xqq
        時間: 2023-11-08 04:05:13 1699387513

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

        對于像Python這樣的動態(tài)語言來說,測試尤為重要。如果是動態(tài)語言,大批的錯誤僅在運(yùn)行時出現(xiàn)??煽康臏y試套件有助于揪出這些問題,為繼承代碼庫的人提供同樣揪出問題的方法。

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

        unittest和doctest

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

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

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

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

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

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

        pytest

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

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

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

        nose和nose2

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

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

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

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

        behave

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

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

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

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

        以上內(nèi)容為大家介紹了4種出色的Python測試框架!,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://m.2667701.com/


        聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
        10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
        請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
        免費(fèi)領(lǐng)取
        今日已有369人領(lǐng)取成功
        劉同學(xué) 138****2860 剛剛成功領(lǐng)取
        王同學(xué) 131****2015 剛剛成功領(lǐng)取
        張同學(xué) 133****4652 剛剛成功領(lǐng)取
        李同學(xué) 135****8607 剛剛成功領(lǐng)取
        楊同學(xué) 132****5667 剛剛成功領(lǐng)取
        岳同學(xué) 134****6652 剛剛成功領(lǐng)取
        梁同學(xué) 157****2950 剛剛成功領(lǐng)取
        劉同學(xué) 189****1015 剛剛成功領(lǐng)取
        張同學(xué) 155****4678 剛剛成功領(lǐng)取
        鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
        董同學(xué) 138****2867 剛剛成功領(lǐng)取
        周同學(xué) 136****3602 剛剛成功領(lǐng)取
        相關(guān)推薦HOT
        python 序列化與反序列化如何使用?

        根據(jù)某些規(guī)則,將內(nèi)存數(shù)據(jù)保存到文件中時,文件是字節(jié)序列,因此必須將內(nèi)存數(shù)據(jù)轉(zhuǎn)換為字節(jié)序列,然后輸出到文件,這就是序列化;反之,從文件的...詳情>>

        2023-11-08 07:01:37
        Python企業(yè)應(yīng)用的優(yōu)缺點(diǎn)

        Python是軟件開發(fā)領(lǐng)域一朵誘人的奇葩:人們經(jīng)常把Python看作是一種起到縫合作用的嚴(yán)格腳本語言,不過卻很少有人意識到Python已經(jīng)足夠強(qiáng)大到應(yīng)用...詳情>>

        2023-11-08 06:25:37
        python 關(guān)鍵字參數(shù)

        可變參數(shù)允許你傳入0個或任意個參數(shù),這些可變參數(shù)在函數(shù)調(diào)用時自動組裝為一個tuple。而關(guān)鍵字參數(shù)允許你傳入0個或任意個含參數(shù)名的參數(shù),這些...詳情>>

        2023-11-08 04:59:13
        python 列表元素的刪除

        使用del命令刪除列表中的指定位置上的元素。>>>a_list=[3,5,7,9,11]>>>dela_list[1]>>>a_list[3,7,9,11]使用列表的pop()方法刪除并返回指定位置...詳情>>

        2023-11-08 03:58:01
        python 插入排序

        原理插入排序(InsertionSort)是一種簡單直觀的排序算法。它的工作原理是通過構(gòu)建有序序列,對于未排序數(shù)據(jù),在已排序序列中從后向前掃描,找到...詳情>>

        2023-11-08 02:56:48
        香港 | 田林县| 杭州市| 集贤县| 茂名市| 富顺县| 吴旗县| 土默特左旗| 广灵县| 朔州市| 平山县| 西安市| 靖远县| 南皮县| 施甸县| 通州市| 武定县| 闻喜县| 鹤岗市| 临泉县| 岳西县| 南华县| 商南县| 益阳市| 香格里拉县| 祁连县| 罗田县| 安徽省| 香港| 横峰县| 合水县| 衡山县| 隆德县| 安泽县| 建始县| 奉贤区| 当阳市| 砚山县| 会昌县| 恩施市| 富平县|