- 單元測試框架教程
- 單元測試框架 - 首頁
- 單元測試框架 - 概述
- 單元測試框架 - 框架
- 單元測試框架 - API
- 單元測試框架 - 斷言
- 單元測試框架 - 測試發現
- 單元測試框架 - 跳過測試
- 單元測試框架 - 異常測試
- 單元測試框架 - 時間測試
- 單元測試框架 - Unittest2
- 單元測試框架 - 訊號處理
- 單元測試框架 - Doctest
- 單元測試框架 - Doctest API
- 單元測試框架 - Py.test 模組
- Nose 測試框架
- Nose 測試工具
- 單元測試框架資源
- 單元測試框架 - 快速指南
- 單元測試框架 - 資源
- 單元測試框架 - 討論
Nose 測試框架
nose 專案釋出在 2005 年,也就是 **py.test** 獲得現代面貌的次年。它由 Jason Pellerin 編寫,用於支援 py.test 開創的相同測試習慣用法,但它在一個更容易安裝和維護的包中。
可以使用 pip 工具安裝 **nose** 模組。
pip install nose
這將安裝 nose 模組到當前的 Python 發行版中,以及一個 nosetest.exe,這意味著可以使用此工具以及 –m 開關執行測試。
C:\python>nosetests –v test_sample.py Or C:\python>python –m nose test_sample.py
**nose** 當然會收集來自 **unittest.TestCase** 子類的測試。我們也可以編寫簡單的測試函式,以及不是 unittest.TestCase 子類的測試類。nose 還提供許多有用的函式,用於編寫計時測試、測試異常和其他常見用例。
**nose** 自動收集測試。無需手動將測試用例收集到測試套件中。執行測試具有響應性,因為 **nose** 一載入第一個測試模組就開始執行測試。
與 unittest 模組一樣,**nose** 在包、模組、類和測試用例級別支援 fixture,因此可以儘可能減少昂貴的初始化操作。
基本用法
讓我們考慮一個類似於前面使用的指令碼 nosetest.py:
# content of nosetest.py def func(x): return x + 1 def test_answer(): assert func(3) == 5
要執行上述測試,請使用以下命令列語法:
C:\python>nosetests –v nosetest.py
控制檯顯示的輸出如下:
nosetest.test_answer ... FAIL
================================================================
FAIL: nosetest.test_answer
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\nose\case.py", line 198, in runTest
self.test(*self.arg)
File "C:\Python34\nosetest.py", line 6, in test_answer
assert func(3) == 5
AssertionError
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (failures = 1)
可以透過在上述命令列中使用 **with-doctest** 選項將 **nose** 與 DocTest 整合。
\nosetests --with-doctest -v nosetest.py
你可以在測試指令碼中使用 **nose**:
import nose nose.main()
如果你不希望測試指令碼在成功時退出 0,失敗時退出 1(像 unittest.main),請使用 nose.run():
import nose result = nose.run()
如果測試執行成功,結果將為真;如果測試失敗或引發未捕獲的異常,結果將為假。
**nose** 支援在包、模組、類和測試級別使用 fixture(設定和拆卸方法)。與 py.test 或 unittest fixture 一樣,setup 始終在任何測試(或測試包和模組的測試集合)之前執行;如果 setup 成功完成,則無論測試執行的狀態如何,teardown 都會執行。