読者です 読者をやめる 読者になる 読者になる

uokadaの見逃し三振は嫌いです

ここで述べられていることは私の個人的な意見に基づくものであり、私が所属する組織には一切の関係はありません。

noseで例外を捕まえるテストケースを書く

nosetests を使ってをうるう年か判定する関数を実装してみた - uokadaの日記
前回のエントリの続き。

前回のコードはyearに数字しか入ってこない前提でコード書いてました。
そんなところに数字以外のデータ型を渡すと当然例外を発生させますよね。

それも確認しておきたいですよね。

じゃあ、テスト書きましょう(提案)。

例外を発生させるテストコードは下のようになります。

    @raises(TypeError, AssertionError)
    def test_is_leap_05(self):
        """leap.is_leap の異常系テスト 01
        """
        result = leap.is_leap("hoge")

raises()の引数に捕まえたい例外を並べます。
これで再度テストを実行。

% nosetests  -v --with-cover --cover-package=leap test_leap.py
leap.is_leap の正常系テスト 01 ... ok
leap.is_leap の正常系テスト 02 ... ok
leap.is_leap の正常系テスト 03 ... ok
leap.is_leap の正常系テスト 04 ... ok
leap.is_leap の異常系テスト 01 ... ok <= 今回追加したテスト

Name    Stmts   Miss  Cover   Missing
-------------------------------------
leap        9      0   100%   
----------------------------------------------------------------------
Ran 5 tests in 0.003s

OK

ok出てるのでちゃんと例外を捕まえられたみたいです。

こんな風に例外が発生するようなテストケースもnoseなら簡単に書けますね。