nose でテスト事前、事後処理する

ナウでヤングな Pythonista はテストは nose を使うみたいなのです。
良くわかりませんがそういうものです。

事前処理と事後処理

DB の初期化とかテストの事前処理や事後処理はないと困っちゃいますが、
nose ではこんな風に書きます。

def setup_func():
    # ...

def teardown_func():
    # ...

@with_setup(setup_func, teardown_func)
def test():
    # ...

デコレータ以外にも色々やり方はあります。
http://somethingaboutorange.com/mrl/projects/nose/0.9.3/

pit と併用して使う

外部の API と連携してるテストなどをやりたい時に
いつも使ってる pit の環境汚したく無いなぁなんて時は
プロファイルを切り変えられるので
それを呼ぶと幸せになります

from nose.tools import with_setup
from hatenad import HatenaDiary
from pit import Pit

__profile__ =''

def setup_func():
    global __profile__
    __profile__ = Pit.config()['profile']
    Pit.switch('test')

def teardown_func():
    Pit.switch(__profile__)  

@with_setup(setup_func, teardown_func)
def test_Post():
    test_conf = Pit.get('hatena.ne.jp',{'require' : {'userid':'Your hatena.ne.jp userid','password':'Your hatena.ne.jp password'}})    
    # ...

これだけでテストの時だけプロファイルを切りかえられますので
少しだけテストが楽になるかなぁと思います。


注意点としては pit の設定ファイルは共有してるので
テストの途中で違うプログラムが pit を使ってしまうとテスト用のプロファイル見ちゃうので
そこだけ気をつけてくだしあ><