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

Post on 03-Jul-2015

1.313 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

aodagBPStyle #10

ユニットテストツール

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

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

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

Discover TestsFixturesPlugins

Discover Tests

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

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

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

from nose.tools import eq_, ok_

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

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

実行するには?

$ nosetests

例:doctest

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

doctestを実行

$ nosetests --with-doctest

Fixtures

setUpやtearDownのこと

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

パッケージ Fixture

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

モジュールFixture

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

関数Fixture

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

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

Fixtureの例

Fixtureが実行される順序

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

Doctest

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

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

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

プラグイン

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

Log Capture ログ出力を収集

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

プラグインも簡単に

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

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

3/26 都内某所

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

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

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

http://togetter.com/li/116938

他のテストツール

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

 

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

top related