nose1.3.7文檔翻譯--6.Batteries included: builtin nose plugins

nose包含了許多內建的插件,用於讓測試更快更簡單。
注意:nose0.11.2在plugin加載時有一個改變。現在,如果內建插件與三方插件同名,三方插件將會被加載。

AllModules:收集所有模塊中的測試例

使用AllModules插件可以收集並執行所有的python 模塊。使用方法是通過傳遞–all-modules參數或者設置NOSE_ALL_MODULES環境變量。正常情況下,nose僅僅收集匹配testMatch正則的模塊。
更多信息可查看Finding tests in all modules

Attrib: 給用例添加屬性,然後根據這些屬性蒐集用例

該插件是一個屬性選擇器插件。
有時,在測試中,你想要以一種標準來蒐集用例,而不是僅僅通過文件名。例如,你可能想要運行除了慢的用例之外的所有用例。你可以使用Attribute插件,在你的測試方法中設置一些屬性。
詳情可查看Attrib: tag and select tests with attributes

Capture:捕捉測試中的輸出信息

這個插件能夠在測試執行過程中,捕捉輸出信息。如果測試失敗,或者拋出一個錯誤,被捕捉到的輸出將會被添加到錯誤或者失敗輸出中。該插件默認是enable的,你可以通過-s 或–nocapture參數將其設爲disable。
詳情可查看Capture: capture stdout during tests
ps:這個東西非常好,以前用python unittest時,有一同事每一步都有一個print,然後根據print就能知道出錯時執行到哪一步了,但是這個會大大增加log量。通過這個插件,你就可以每一步都print,然後僅僅失敗或者出錯的用例纔會顯示print內容。超級棒。。。。。。

Collect:快速蒐集測試例

這個插件忽略測試例的執行過程,僅僅收集測試例名稱。Fixtures也會被忽略,因此使能Collection插件運行nosetests將會非常迅速。
這個插件與testid插件(–with-id)聯合使用將會時有用的。兩個插件一起使用可以得到一個帶有索引的所有用例的列表,你可以通過索引運行單個的用例。
這個插件對於統計一個suite中的測試例個數也是有用的,可以讓人們通過觀察demo,好好思考測試通過。
詳情可查看Collect: Collect tests quickly

Cover:代碼覆蓋率

注意:新版本的coverage插件包含它們自己的nose插件,它比內建插件更高級。它暴露出更多的coverage參數,使用coverage原生html輸出。 取決於已安裝coverage的版本,被引用的插件可能會覆蓋nose內建插件,也有可能以不同的名字獲得。使用nosetests –help或者nosetests -plugins檢查你的系統中可使用的coverage插件。
如果你已經安裝了Ned Batchelder’s coverage 模塊,你可以激活覆蓋率報告通過–with-coverage或者NOSE_WITH_COVERAGE環境變量。覆蓋率報告將會覆蓋任何測試用例開始之後被導入的python代碼模塊,除去匹配testMatch正則的模塊之外。如果你想要也包括這些模塊,使用–cover-tests,或者設置NOSE_COVER_TESTS環境變量值爲true。想要約束覆蓋率報告爲一個或者多個包中的所有模塊,使用–cover-package,或者設置NOSE_COVER_PACKAGE環境變量。
詳情可查看Cover: code coverage

Debug:當出現錯誤或者失敗時,進入pdb調試

這個插件提供–pdb和–pdb-failures參數。–pdb參數使當測試運行器遇到錯誤時進入pdb調試。想要在失敗時進入pdb調試,使用–pdb-failures。
注:官方是這樣說但是底下options又這樣介紹
Options

–pdb
Drop into debugger on failures or errors

–pdb-failures
Drop into debugger on failures

–pdb-errors
Drop into debugger on errors

詳情可查看Debug: drop into pdb on errors or failures

Deprecated:標記測試例是過時的

這個插件安裝一個DEPRECATED錯誤類爲了一個DeprecatedTest異常。當DeprecatedTest被拋出時,異常將會被輸出到結果的deprecate熟悉中。D後者DEPRECATED(verbose)將是輸出,異常將不會被統計爲錯誤或失敗。它默認是使能的,但是可以通過–no-deprecates關掉。
詳情可查看Deprecated: mark tests as deprecated

Doctests通過nose運行doctest

通過–with-doctest或者NOSE_WITH_DOCTEST環境變量,使用Doctest插件收集並執行doctests。由於doctests通常被包含在被測試的包中(而不是被打包到它們自己的包或模塊中),nose僅僅搜索工作區中內測試包中的doctest。
Doctests可能被放置到非python模塊的文件中。在這種情況下,它們將會被收集並執行通過使用–doctest-extension參數後者NOSE_DOCTEST_EXTENSION環境變量。
當加載非模塊文件中的doctests時,使用–doctest-fixture參數明確如何查找包含fixtures的測試例。一個模塊名將會被生成,通過添加對應的參數值到被加載的doctest文件名後。例如,一個doctest文件“widgets.rst”,參數值爲–doctest_fixtures=_fixt,將會從widgets_fixt.py模塊中加載fixtures。
一個fixtures模塊可能會定義一下函數:

  • setup([module])或者setup_module([module])
    在所有測試例運行之前被調用。你也有可能會拋出SkipTest來跳過所有測試例。
  • teardown([module])或者teardown_module([module])
    如果setup/setup_module沒有拋出未被處理的異常,將會在所有用例之後被調用。
  • setup_test(test)
    在test之前被調用。注意:被傳遞的參數是doctest.DocTest實例,而不是unittest.TestCase。
  • teardown_test(test)
    如果setup_test沒有拋出異常,將會在test之後被調用。注意:被傳遞的參數是doctest.DocTest實例,而不是unittest.TestCase。

Doctesrs將會像其他的用例一樣運行,當時異常中的輸出捕捉並不會有效;doctest在運行時有自己的輸出捕捉。

Failure Detail: 斷言自省

這個插件提供斷言自省的功能。當該插件被使能時,測試失敗後,異常被拋出的上下文跟蹤信息也會被顯示。簡單的替換也會表現在上下文輸出中,用於提供調試信息。
詳情可查看:Failure Detail: introspect asserts

Isolate: 防止用例帶來負面影響

這個插件在運行完module和package後,重置sys.modules內容。通過設置–with-isolation或者NOSE_WITH_ISOLATION環境變量可以使用它。
效果與裝飾接下來的函數類似,該函數會在一個測試模塊被導入或者執行時被調用。

def setup(module):
    module._mods = sys.modules.copy()

def teardown(module):
    to_del = [ m for m in sys.modules.keys() if m not in
               module._mods ]
    for mod in to_del:
        del sys.modules[mod]
    sys.modules.update(module._mods)

Isolation僅僅在懶加載時工作。在正常使用中,這個過程僅僅出現在目錄中的模塊被發現,發現是指import的進程,從每個模塊中加載並運行用例,加載好人執行被封裝在一個loadTestsFromName調用中。這個插件實現了loadTestsFromNames來迫使相同的懶加載,它允許isolation工作在被制定的模式和發現中,這也會犧牲一點效率的代價:懶加載names迫使所有的上下文setup和teardown來爲每一個name,阻止正常被用於確保上下文setup和teardown儘可能少的執行的爲每一個name的分組的做法。

內容較多,持續更新中。。。。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章