Python單元測試框架(附例子)

什么是單元測試?

??單元測試在[Python中做是為了在應(yīng)用程序的開發(fā)階段的早期識別錯(cuò)誤時(shí)的錯(cuò)誤不太經(jīng)常和修復(fù)成本更低。

??單元測試是用Python設(shè)計(jì)的腳本化代碼級測試,用于驗(yàn)證功能的小“單元”。單元測試是一種基于測試夾具的面向?qū)ο罂蚣堋?/p>

Python單元測試技術(shù)

??Python單元測試主要涉及測試特定模塊而不訪問任何相關(guān)代碼。開發(fā)人員可以使用存根和模擬等技術(shù)將代碼分成“單元”,并對各個(gè)部分進(jìn)行單元級測試。

  • 測試驅(qū)動(dòng)開發(fā)TDD:單元測試應(yīng)該與Python一起完成,并且開發(fā)人員使用測試驅(qū)動(dòng)開發(fā)方法。在TDD方法中,您首先設(shè)計(jì)Python單元測試,然后才繼續(xù)編寫將實(shí)現(xiàn)此功能的代碼。

  • 存根和模擬:它們是模擬正在測試的偽方法的兩種主要技術(shù)。甲存根用于填充在能正常運(yùn)行所需的單元測試一些依賴性。一個(gè)模擬的另一方面是它運(yùn)行,我們把斷言測試一個(gè)假的對象。

    兩種方法的意圖相同,以消除測試類或函數(shù)的所有依賴性。

Python單元測試框架

??為了簡化單元測試過程并提高項(xiàng)目質(zhì)量,建議使用Python單元測試框架。單元測試框架包括

  • PyUnit: PyUnit支持固件,測試用例,測試套件和測試運(yùn)行器,用于自動(dòng)測試代碼。在PyUnit中,您可以將測試用例組織到具有相同夾具的套件中

  • 鼻子: Nose的內(nèi)置插件可以幫助您進(jìn)行輸出捕獲,代碼覆蓋,doctests等。鼻子語法非常簡單,減少了編寫測試的障礙。它擴(kuò)展了Python單元測試,使測試更容易。

  • Doctest: Doctest測試腳本在docstring中以文件底部的小函數(shù)進(jìn)行。Doctest允許您通過運(yùn)行文檔中包含的示例并驗(yàn)證它們是否返回了預(yù)期結(jié)果來測試代碼。doctest的用例不太詳細(xì),也沒有特殊情況。它們可用作模塊及其組件的主要用例的表達(dá)文檔。

使用PyUnit進(jìn)行單元測試

Pyunit是JUnit的Python端口。作為Pyunit的一部分,在unittest模塊中有五個(gè)關(guān)鍵類。

  • TestCase類:TestCase類承載測試?yán)滩⑻峁┿^子,用于制作每個(gè)例程并在此后進(jìn)行清理
  • TestSuite類:它作為一個(gè)集合容器,它可以擁有多個(gè)測試用例對象和多個(gè)testsuites對象
  • TestLoader類:此類加載本地或外部文件定義的測試用例和套件。它會(huì)發(fā)出一個(gè)具有這些套件和案例的測試對象
  • TextTestRunner類:要運(yùn)行測試,它需要一個(gè)標(biāo)準(zhǔn)平臺來執(zhí)行測試
  • TestResults類:它為測試結(jié)果提供標(biāo)準(zhǔn)容器

使用PyUnit為Python測試設(shè)計(jì)測試用例

單元測試提供了一個(gè)基類,測試用例,可用于創(chuàng)建新的測試用例。對于設(shè)計(jì)測試用例,使用的是三組方法

unittest.TestCase生成

setUp()
teardown()

skipTest(aMesg:string)
fail(aMesg:string)

id():string
shortDescription():string

在第一組中是前后測試鉤。setup()方法在每個(gè)測試?yán)讨伴_始,例程之后的teardown()。

第二組方法控制測試執(zhí)行。兩種方法都將消息字符串作為輸入,并且都取消正在進(jìn)行的測試。但是skiptest()方法會(huì)中止當(dāng)前測試,而fail()方法會(huì)完全失敗。

最后或第三種方法有助于確定測試。方法id()返回一個(gè)字符串,該字符串由testcase對象和測試?yán)痰拿Q組成。方法shortDescription()在每個(gè)測試?yán)痰膯?dòng)時(shí)返回docstr注釋。

  • 使用Python單元測試的優(yōu)點(diǎn)
  • 它可以幫助您在開發(fā)周期的早期檢測錯(cuò)誤
  • 它可以幫助您編寫更好的程序
  • 它可以與其他測試方法和工具輕松同步
  • 它會(huì)有更少的錯(cuò)誤
  • 將來修改起來更容易,后果更容易

每次閱讀都有收獲,你呢?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容