Python 單元測試工具nose

2022-07-01 02:00:12 字數 2002 閱讀 7968

一、nose的api

二、安裝nose

先用easy_install 安裝 nose,easy_install是乙個很好的python工具,可以方便安裝很多的python程式。python2.6及之後的版本,預設帶easy_install工具。

安裝完easy_install後,在相應版本的scripts目錄下(例如c:/python26/scripts)會有乙個easy_install.exe程式,通過這個就可以安裝其他python包了。在命令列下轉到python的scripts目錄下,執行以下的命令進行安裝:

c:/python26/scripts/easy_install nose

上面的 c:/python26/scripts 需要根據您的python的安裝路徑進行修改。

安完畢後,在c:/python26/scripts下會有乙個nosetests.exe檔案,通過這個exe程式就可以在命令列下執行測試了。最好是把c:/python26/scripts加入環境變數,這樣在其它目錄中可以直接引用nosetests.exe。

二、執行測試

在命令列下,直接執行nosetests(注意要把nosetests.exe所在的目錄加入到環境變數path裡面),它就會自動查詢當前目錄下包含"test"字串的目錄和檔案進行測試。

這樣我們可以把所有測試case放在一起,然後讓測試自己去執行,我們最後看結果就可以了。我們可以指定具體如何輸出結果,也可以指定如何搜尋檔案和資料夾,還可以把測試結果輸入到指定的檔案。

三、編寫測試

(1)待測試的函式 (name.py) 

#

-*- coding: utf-8 -*-

"""file: name.py

"""def

get_name():

return

"test

"

(2)測試指令碼(test_tests.py)

#

-*- coding: utf-8 -*-

from name import

get_name

defsetup():

print

"start

"def

teardown():

print

"\nend

"def

test1():

print

"test success!

"assert get_name() == "

test

"def

test2():

print

"\ntest fail!

"assert get_name == "

kk"

nose在檔案中如果找到函式setup, setup_module, setup 或者setupmodule等,那麼會在該模組的所有測試執行之前執行該函式。如果找到函式 teardown,teardown, teardown_module或者 teardownmodule 等,那麼會在該模組所有的測試執行完之後執行該函式。

對於上面的**,nose實際的執行過程是這樣的:

setup()->test1()->test2()->teardown()

(3)執行的結果

四、其他

1. nosetests常用的命令列引數

這裡只重點介紹幾個常用的,其它的引數可以通過nosetests -h進行檢視。

a) -w ,指定乙個目錄執行測試。

b)-s,不捕獲輸出,會讓你的程式裡面的一些命令列上的輸出顯示出來。例如print所輸出的內容。

c)-v,檢視nose的執行資訊和除錯資訊。例如會給出當前正在執行哪個測試。

2. 此檔案的參考:

C C 單元測試工具

做好單元測試,推薦學習國產的單元測試工具單元測試工具visual unit2.2。部分功能 自動生成測試 視覺化編輯測試用例,人工只需建立容易想到的測試用例 自動統計語句 條件 分支 路徑覆蓋 顯示引數 成員變數 返回值等輸入輸出資料 顯示每個用例所執行的 自動畫出邏輯結構圖 顯示邏輯結構圖中任一語...

Junit單元測試工具

1.1作用 junit單元單元測試測試,主要用於對程式進行專業化測試package a junit import org.junit.assert import org.junit.test public class test junit 使用junit專業的判定結果的方法 assert類,斷言類 ...

單元測試工具 winAMS

摘要 論述軟體測試工具winams caseplayer2在嵌入軟體單元測試中的應用。介紹了軟體測試工具的功能 插裝原理 測試環境搭建 覆蓋率測試 測試資料取得等相關技術研究及經驗總結。覆蓋率專家winams源自日本gaio公司,gaio公司創始於1980年,公司早期開發編譯器,隨後開發了基於源 分...