nose 鼻をきかせてテストせよ

18

Click here to load reader

Upload: atsushi-odagiri

Post on 03-Jul-2015

1.313 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Nose  鼻をきかせてテストせよ

Nose鼻をきかせてテストせよ

aodagBPStyle #10

Page 2: Nose  鼻をきかせてテストせよ

ユニットテストツール

unittest標準ライブラリxunit由来TestCaseを必ず継承するFixtureがクラス単位だけPEP8に従ってない!

nose簡単にテストを書ける簡単にテストを実行できる豊富なプラグインPEP8 ready

Page 3: Nose  鼻をきかせてテストせよ

簡単にテストを書くための機能

Discover TestsFixturesPlugins

Page 4: Nose  鼻をきかせてテストせよ

Discover Tests

パッケージ、モジュール、クラス、関数などで名前に test_* などを含むもの。TestCaseを継承したクラス

を探し出してテストしてくれる。

with-doctestオプションでテスト以外のコードからdoctestを探し出してテストしてくれる。

Page 5: Nose  鼻をきかせてテストせよ

from nose.tools import eq_, ok_

def test_it():    assert 1 + 1 == 2

def test_with_bucho():    ok_(bucho.show())

実行するには?

$ nosetests

Page 6: Nose  鼻をきかせてテストせよ

例:doctest

def show():    """ show something    >>> show()    something    """    print "something"

doctestを実行

$ nosetests --with-doctest

Page 7: Nose  鼻をきかせてテストせよ

Fixtures

setUpやtearDownのこと

Noseで使えるFixtureの単位パッケージモジュールクラス関数

Page 8: Nose  鼻をきかせてテストせよ

パッケージ Fixture

__init__.py に setUp, tearDown関数を書く

Page 9: Nose  鼻をきかせてテストせよ

モジュールFixture

モジュール内のトップレベルで setUp, tearDown関数を書く

Page 10: Nose  鼻をきかせてテストせよ

関数Fixture

with_setup デコレータでsetUp関数とtearDown関数をくっつける

@with_setup(createdb, teardowndb)def test_it():    ....

Page 11: Nose  鼻をきかせてテストせよ

Fixtureの例

Page 12: Nose  鼻をきかせてテストせよ

Fixtureが実行される順序

パッケージ1のsetUpモジュール1のsetUpモジュール1内のテスト関数実行モジュール1のtearDownモジュール2のsetUpモジュール2内のテスト関数実行モジュール2のtearDownパッケージ2のtearDown

Page 13: Nose  鼻をきかせてテストせよ

Doctest

with-doctestソースコメント中のdoctestも実行する

doctest-extensionsphinxドキュメントなどの中に書いてあるdoctestも実行する

doctest-fixturedoctestのためのfixtureを指定する

Page 14: Nose  鼻をきかせてテストせよ

プラグイン

Cover テストカバレージを収集

Log Capture ログ出力を収集

looping over failed tests テストが失敗する間、ファイル更新を監視して自動でテストを実行

Page 15: Nose  鼻をきかせてテストせよ

プラグインも簡単に

プラグインインターフェイス IPluginInterface

普通はPluginクラスを継承すればOK

Page 16: Nose  鼻をきかせてテストせよ

3/26 都内某所

Noseで全てのテストで必ずteardownする処理が欲しい(GAEのログイン情報を持った環境変数を消す

Noseのプラグインを作り始める(イマココ #pyhack

プラグイン書けばできるよプラグインはテストケースごとのフックがあるからね

http://togetter.com/li/116938

Page 17: Nose  鼻をきかせてテストせよ

他のテストツール

WebTest WSGIアプリの機能テストに。TOX virtualenvへのインストールからテスト実行を自動化。unittest2 assert* が充実。discoveryも多少サポート。

Page 18: Nose  鼻をきかせてテストせよ

 

Installation and quick start - nose v1.0.0 documentation http://somethingaboutorange.com/mrl/projects/nose/1.0.0/