Python test framework: nose 介紹 – Part 2

寫 test case 時我們通常會在每個測試案例執行前先做初始值設定(setup),與測試案例結束後的設定(teardown),在 nose 這套 test framework 也包含了此功能,與 unittest 的 setup 與 teardown 意思一樣 (可參考 Unit Test Framework – JUnit 3 或 Unit Test Framework – JUnit 4)。

我們今天就來說明 nose 要怎麼使用 setup 與 teardown,我們可以使用 ‘@with_setup’ decorator,來設定一個 test case 的 setup 與 teardown,它是從 nose 裡 import 進來的,如下面程式碼第 5 行,第一個參數代入 setup 呼叫函式的名稱,而第二個參數代入 teardown 呼叫函式的名稱,如下面程式碼第 16 行。

'''
file name: testAdd.py
'''

from nose import with_setup

def add(a, b):
    return a + b

def add_setup_function():
    print "--- add_setup_function"

def add_teardown_function():
    print "--- add_teardown_function"

@with_setup(add_setup_function, add_teardown_function)
def test_add_2_6():
    print "--- test_add_2_6"
    assert add(2, 6) == 8

如果你不喜歡用  ‘@with_setup’ 的 decorator 來設定一個 test case 的 setup 與 teardown,也可直接指定 test case 要執行那個 setup 與 teardown,如下面程式碼第 17、18 行的方式來設定,只要指定要呼叫的 setup 函式名稱與 teardown 函式名稱。

'''
file name: testAdd.py
'''

def add(a, b):
    return a + b

def add_setup_function():
    print "--- add_setup_function"

def add_teardown_function():
    print "--- add_teardown_function"

def test_add_2_6():
    print "--- test_add_2_6"
    assert add(2, 6) == 8 

test_add_2_6.setup = add_setup_function
test_add_2_6.teardown = add_teardown_function

接著我們就來驗證執行的結果是否符合我們預期,如果想看 print 印出的資料,需要再補入 -s 的參數,指令如下所示:

nosetests -s testAdd.py

執行結果如下圖所示:

nose2

我們就可以確定一個測試案例執行之前,會先執行  setup 的動作,再執行 test case 本身,最後再執行 teardown 的動作後結束。

參考文章:nose introduction – Python Testing

廣告

發表迴響

Please log in using one of these methods to post your comment:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s