nose まとめ2 (nose の基本的な使い方)
はじめに
nose の基本的な使い方です。
条件式がTrueかどうか、2値が等しいかどうかをチェックする方法です。
テストの作成
まずテスト用モジュールを作成します。
モジュール名には、 "test" を含んでいる必要があります。
そのためテストしたいモジュール名+"_test"などとするとわかりやすくなると思います。
つぎに、同じルールでテスト用関数を作成します。
関数名にも、 "test" を含んでいる必要があります。
1つの機能ごとに名前を付けていくと良いです。
ソースコード
# coding: utf-8 """ テスト対象のモジュール """ def add(x, y): return x + y def sub(x, y): return x - y
# coding: utf-8 """ テスト用モジュール """ from nose.tools import ok_, eq_ import ex1 def add_test(): """ ex1.add test """ eq_(ex1.add(1, 2), 3) def sub_test(): """ ex1.sub test """ eq_(ex1.sub(1, 1), 0) def if_test(): """ if test """ ok_(1 == 1) def fail_test(): """ test fail """ # ok_(1 == '1', "失敗しました。") assert(1 == '1')
テストの補足
nose では、 assert 文がそのまま使えますが、
nose.tools の `ok_` , `eq_` を利用するほうがコードは読みやすくなります。
`ok_` , `eq_` は、 assert のラッパーです。
nose.tools.ok_
ok_(expr, msg=None)
expr が True かどうかを評価します。
msg がある場合は、テスト結果に出力します。
nose.tools.eq_
ok_(a, b, msg=None)
a と b が等しいかどうかを評価します。
msg がある場合は、テスト結果に出力します。
テストの実行
テストの実行は、 nosetests を実行するだけです。
テスト用モジュールのテストがすべて実行されます。
$ nosetests ex1_test.py ...F ====================================================================== FAIL: test fail ---------------------------------------------------------------------- Traceback (most recent call last): ... assert(1 == '1') AssertionError ---------------------------------------------------------------------- Ran 4 tests in 0.026s FAILED (failures=1)
実行時に "-v" を付与することで、テスト関数の docstring を出力できます。
1 行説明を追加すると結果が見やすくなるので、 docstring の記述と "-v" オプションはおすすめです。
-v あり
$ nosetests -v ex1_test.py ex1.add test ... ok ex1.sub test ... ok if test ... ok test fail ... FAIL ====================================================================== FAIL: test fail ---------------------------------------------------------------------- ... assert(1 == '1') AssertionError ---------------------------------------------------------------------- Ran 4 tests in 0.003s FAILED (failures=1)