【python】用nose進行自動化測試

一、準備

下載地址:: nose.

命令下載:

pip install nose

二、nose介紹

1.更容易編寫,查找和運行測試。

2.nose將在當前工作目錄下的文件或目錄中運行測試,這些文件或目錄的名稱在單詞邊界處包括“ test”或“ Test”(例如“ test_this”或“ functional_test”或“ TestClass”,但不包括“ libtest”)。測試輸出類似於unittest的輸出,但還包括從失敗的測試中捕獲的stdout輸出,以方便進行打印樣式的調試。

優勢:

  • 自動發現測試用例(包含[Tt]est文件以及文件包中包含test的函數)

  • 以test開頭的文件

  • 以test開頭的函數或方法

  • 以Test開頭的類

三、看個簡單的例子瞭解下

# coding = utf-8

class Testdemo:

    def __init__(self):
        pass

    def setup(self):
        print 'start'
        
    def testfunc1(self):
        print 'this is func1'

    def testfunc2(self):
        print 'this is func2'

    def testfunc3(self):
        print 'this is func3'
        
    def teardown(self):
        print 'stop'


nosetests -s

在這裏插入圖片描述

三、nose常用命令簡單介紹

常用的幾個nosetests命令:

1、查看所有nose相關命令

nosetests  -h

2、 執行並捕獲輸出

nosetests -s

3、 提供XUnit XML 格式的測試結果,並存儲在nosetests.xml文件中。主要爲jenkins等能理解xnuit格式文件的集成測試環境準備。

nosetests -with-xunit  

4、 查看nose的運行信息和調試信息

nosetests -v   

在這裏插入圖片描述

5、 目錄 指定一個目錄運行測試

nosetests -w  XXX

在這裏插入圖片描述
在這裏插入圖片描述

6、只執行上次執行結果中的失敗用例

該插件還添加了一種模式,該模式將指導測試運行器記錄失敗的測試。隨後的測試運行將僅運行上次失敗的測試。使用–failed開關激活此模式:

nosetests -v --failed

首次使用,執行之後記錄下失敗用例
在這裏插入圖片描述
再次使用,只執行失敗用例
在這裏插入圖片描述

7.出現故障或錯誤時放入調試器,可用於打斷點調試

nosetests -s --pdb

test1.py舉例,testfunc1函數中出現a = 0/0 語法錯誤,執行nosetests -s --pdb,出現調試

# coding = utf-8

class Testdemo:

    def __init__(self):
        pass

    def setup(self):
        print 'start'

    def testfunc1(self):
        a =0/0
        print a
        print 'this is func1'

在這裏插入圖片描述
ctrl+D中斷調試
在這裏插入圖片描述

四、nose命令大全

nosetests XXX 下面是nosetests跟不同的命令有不同的功能


-V, --version
輸出nose版本並退出

-p, --plugins
可用插件的輸出列表,然後退出。結合較高的詳細程度以獲取更多細節

-v=DEFAULT, --verbose=DEFAULT
更加冗長。[NOSE_VERBOSE]

--verbosity=VERBOSITY
設置詳細程度;–verbosity = 2與-v相同

-q=DEFAULT, --quiet=DEFAULT
減少冗長

-c=FILES, --config=FILES
從配置文件加載配置。可以多次指定;在這種情況下,所有配置文件將被加載併合並

-w=WHERE, --where=WHERE
在此目錄中查找測試。可以指定多次。傳遞的第一個目錄將用作工作目錄,代替當前的工作目錄,這是默認目錄。其他的將被添加到要執行的測試列表中。[NOSE_WHERE]

--py3where=PY3WHERE
在Python 3.x下的此目錄中查找測試。功能與“ where”相同,但僅在Python 3.x或更高版本下運行時適用。請注意,如果在3.x下存在此選項,則該選項將完全替換所有以“ where”指定的目錄,因此“ where”選項無效。[NOSE_PY3WHERE]

-m=REGEX, --match=REGEX, --testmatch=REGEX
與該正則表達式匹配的文件,目錄,函數名稱和類名稱被視爲測試。默認值:(?:\ b | _)[Tt] est [NOSE_TESTMATCH]

--tests=NAMES
運行這些測試(以逗號分隔的列表)。此參數主要在配置文件中有用;在命令行上,只需通過測試即可作爲其他參數運行而無需切換。

-l=DEFAULT, --debug=DEFAULT
爲一個或多個系統激活調試日誌記錄。可用的調試記錄器:鼻子,鼻子。進口商,鼻子。檢查器,鼻子。插件,鼻子。結果和鼻子。選擇器。用逗號分隔多個名稱。

--debug-log=FILE
將調試消息記錄到此文件中(默認值:sys.stderr)

--logging-config=FILE, --log-config=FILE
從此文件加載日誌配置–繞過所有其他日誌配置設置。

-I=REGEX, --ignore-files=REGEX
完全忽略任何與此正則表達式匹配的文件。優先於其他任何設置或插件。指定此選項將替代默認設置。多次指定此選項以添加更多正則表達式[NOSE_IGNORE_FILES]

-e=REGEX, --exclude=REGEX
不要運行與正則表達式匹配的測試[NOSE_EXCLUDE]

-i=REGEX, --include=REGEX
此正則表達式將應用於文件,目錄,函數名稱和類名稱,以便有機會包括與TESTMATCH不匹配的其他測試。多次指定此選項可添加更多正則表達式[NOSE_INCLUDE]

-x, --stop
在第一個錯誤或失敗後停止運行測試

-P, --no-path-adjustment
加載測試時不要對sys.path進行任何更改[NOSE_NOPATH]

--exe
在可執行的python模塊中查找測試。正常行爲是排除可執行模塊,因爲它們可能不是導入安全的[NOSE_INCLUDE_EXE]

--noexe
不要在可執行的python模塊中尋找測試。(Windows平臺上的默認設置是這樣做。)

--traverse-namespace
遍歷名稱空間包的所有路徑條目

--first-package-wins, --first-pkg-wins, --1st-pkg-wins
如果鼻子的進口商在不同位置看到相同名稱的軟件包,通常會將其從sys.modules中逐出。設置此選項可禁用該行爲。

--no-byte-compile
在鼻子掃描並運行測試時,防止鼻子將源字節編譯爲.pyc文件。

-a=ATTR, --attr=ATTR
僅運行具有ATTR [NOSE_ATTR]指定的屬性的測試

-A=EXPR, --eval-attr=EXPR
僅運行測試Python表達式EXPR的屬性值爲True的測試[NOSE_EVAL_ATTR]

-s, --nocapture
不要捕獲標準輸出(任何標準輸出輸出將立即打印)[NOSE_NOCAPTURE]

--nologcapture
禁用日誌記錄捕獲插件。日誌配置將保持不變。[NOSE_NOLOGCAPTURE]

--logging-format=FORMAT
指定自定義格式以打印語句。使用與標準日誌記錄處理程序相同的格式。[NOSE_LOGFORMAT]

--logging-datefmt=FORMAT
指定自定義日期/時間格式以打印報表。使用與標準日誌記錄處理程序相同的格式。[NOSE_LOGDATEFMT]

--logging-filter=FILTER
指定要過濾的語句。默認情況下,所有內容都會被捕獲。如果輸出太冗長,請使用此選項過濾掉不必要的輸出。示例:filter = foo將捕獲僅發佈給foo或foo.what.ever.sub的語句,而不捕獲發給foobar或其他記錄器的語句。用逗號指定多個記錄器:filter = foo,bar,baz。如果任何記錄器名稱的前面都帶有減號,例如filter = -foo,它將被排除而不是包含在內。默認值:從鼻子本身(-nose)排除日誌消息。[NOSE_LOGFILTER]

--logging-clear-handlers
清除所有其他日誌記錄處理程序

--logging-level=DEFAULT
設置日誌級別以捕獲

--with-coverage
啓用插件覆蓋率:使用Ned Batchelder的覆蓋率模塊激活覆蓋率報告。[NOSE_WITH_COVERAGE]

--cover-package=PACKAGE
將覆蓋範圍輸出限制爲選定的軟件包[NOSE_COVER_PACKAGE]

--cover-erase
運行前清除先前收集的覆蓋率統計信息

--cover-tests
在覆蓋率報告中包含測試模塊[NOSE_COVER_TESTS]

--cover-min-percentage=DEFAULT
測試通過的最低覆蓋率[NOSE_COVER_MIN_PERCENTAGE]

--cover-inclusive
在覆蓋率報告中的工作目錄下包括所有python文件。如果不是所有文件都由測試套件導入,則對於發現測試覆蓋範圍中的漏洞很有用。[NOSE_COVER_INCLUSIVE]

--cover-html
產生HTML覆蓋率信息

--cover-html-dir=DIR
在目錄中生成HTML Coverage信息

--cover-branches
將分支機構覆蓋範圍包括在覆蓋率報告中[NOSE_COVER_BRANCHES]

--cover-xml
生成XML覆蓋率信息

--cover-xml-file=FILE
在文件中生成XML覆蓋率信息

--cover-config-file=DEFAULT
覆蓋範圍配置文件[NOSE_COVER_CONFIG_FILE]的位置

--cover-no-print
禁止打印承保範圍信息

--pdb
出現故障或錯誤時放入調試器

--pdb-failures
失敗時放入調試器

--pdb-errors
出現錯誤時放入調試器

--no-deprecated
禁用DeprecatedTest異常的特殊處理。

--with-doctest
啓用插件doctest:激活doctest插件以在非測試模塊中查找並運行doctest。[NOSE_WITH_DOCTEST]

--doctest-tests
還要在測試模塊中查找doctest。請注意,類,方法和函數應具有doctest或非doctest測試,不能同時具有兩者。[NOSE_DOCTEST_TESTS]

--doctest-extension=EXT
還要在具有此擴展名[NOSE_DOCTEST_EXTENSION]的文件中查找doctest。

--doctest-result-variable=VAR
將變量名設置爲默認值“ _”爲最後一個解釋程序命令的結果。可用於避免與用於文本翻譯的_()函數衝突。[NOSE_DOCTEST_RESULT_VAR]

--doctest-fixtures=SUFFIX
在模塊中查找doctest文件的固定裝置,並將此名稱附加到doctest文件的基本名稱之後

--doctest-options=OPTIONS
指定要傳遞給doctest的選項。例如。'+ ELLIPSIS,+ NORMALIZE_WHITESPACE'

--with-isolation
啓用插件IsolationPlugin:激活隔離插件,以將對外部模塊的更改隔離到單個測試模塊或程序包中。在每個測試模塊或程序包運行到測試前的狀態之後,隔離插件將sys.modules的內容重置。請注意,此插件不應與coverage插件一起使用,或在其他任何情況下重新加載模塊可能會產生不良副作用的情況。[NOSE_WITH_ISOLATION]

-d, --detailed-errors, --failure-detail
通過嘗試評估失敗的斷言,將詳細信息添加到錯誤輸出中[NOSE_DETAILED_ERRORS]

--with-profile
啓用插件配置文件:使用此插件可以使用熱點分析器運行測試。[NOSE_WITH_PROFILE]

--profile-sort=SORT
設置分析器輸出的排序順序

--profile-stats-file=FILE
Profiler統計文件;默認是每次運行時都有一個新的臨時文件

--profile-restrict=RESTRICT
限制分析器輸出。有關詳細信息,請參見pstats的幫助。

--no-skip
禁用SkipTest異常的特殊處理。

--with-id
啓用插件TestId:激活以將測試ID(如#1)添加到每個測試名稱輸出中。使用–failed激活,僅重新運行失敗的測試。[NOSE_WITH_ID]

--id-file=FILE
將在測試運行中找到的測試ID存儲在此文件中。默認值爲工作目錄中的.noseids文件。

--failed
運行在上次測試運行中失敗的測試。

--processes=NUM
在這許多過程中進行傳播測試。設置一個等於您計算機中處理器或內核數量的數字即可獲得最佳效果。傳遞負數可將進程數自動設置爲核心數。傳遞0表示禁用並行測試。除非設置了NOSE_PROCESSES,否則默認值爲0。[NOSE_PROCESSES]

--process-timeout=SECONDS
設置超時以從每個測試運行器過程返回結果。默認值爲10。[NOSE_PROCESS_TIMEOUT]

--process-restartworker
如果設置該選項,將在測試完成後重新啓動每個工作進程,這有助於控制內存泄漏以免殺死系統。[NOSE_PROCESS_RESTARTWORKER]

--with-xunit
啓用插件Xunit:此插件以標準XUnit XML格式提供測試結果。[NOSE_WITH_XUNIT]

--xunit-file=FILE
用於存儲xunit報告的xml文件的路徑。默認值爲工作目錄[NOSE_XUNIT_FILE]中的nasestests.xml。

--xunit-testsuite-name=PACKAGE
xunit xml中的測試套件的名稱,由插件生成。默認測試套件名稱是鼻子測試。

--xunit-prefix-with-testsuite-name
是否在被測類名的前面加上測試對象名。默認爲false。

--all-modules
啓用插件AllModules:從所有python模塊收集測試。[NOSE_ALL_MODULES]

--collect-only
啓用僅收集:僅收集和輸出測試名稱,請勿運行任何測試。[COLLECT_ONLY]

參考文獻:
Testing with nose

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