Pythonでテスト駆動開発を行うためのツールとしてunittestとnoseがある。参考はこちら
unittestでは必要なクラスを継承するなど、いくつかの決まりごとがあるが、noseでは正規表現 "(?:^|[b_.-])[Tt]est" にマッチしたクラス・関数が実行されるようになっているため、ルールがシンプル。
noseのインストール
テストの実行は次の2種類があります。
(2)の場合は、テストプログラム内で nose.main 関数を呼び出すようにします。
「--pdb」 オプションを有効にすると、テストプログラムで例外が起きると同時に、pdb が起動し、デバッグモードに入ります。
「--pdb-failures」オプションを有効にすると、テストプログラムでテストが失敗すると同時に、pdb が起動し、デバッグモードに入ります。
「-i 正規表現パターン」オプションを有効にすると、正規表現にマッチしたファイルのみがテスト実行されます。
「-e 正規表現パターン」オプションを有効にすると、逆に正規表現にマッチしたファイルは実行されなくなります。
○さらに詳しく理解するには
nose まとめ 1
unittestでは必要なクラスを継承するなど、いくつかの決まりごとがあるが、noseでは正規表現 "(?:^|[b_.-])[Tt]est" にマッチしたクラス・関数が実行されるようになっているため、ルールがシンプル。
noseのインストール
% easy_install nose
○テスト実行時
テストの実行は次の2種類があります。
- nosetests コマンドでテスト対象のファイルやディレクトリを指定
- テストスクリプト内でテストを実行
(2)の場合は、テストプログラム内で nose.main 関数を呼び出すようにします。
def test_compare(): assert 1==1 if __name__ == '__main__': import nose nose.main()
テストクラスが入っているディレクトリ内で
% nosetests
サンプルクラス(test1.py)
#-*- coding: utf-8 -*- class Dollar(): def __init__(self, amount=0): self.amount = amount def times(self, multiplier): self.amount *= multiplier
テストコード(test2.py)
#-*- coding: utf-8 -*- from test1 import Dollar from nose.tools import * class TestDollar(): def testMultiplicaton(self): five = Dollar(5) five.times(3) eq_(15, five.amount)
成功すると
--------------------- Ran 1 test in 0.047s OK
失敗すると
====================================================================== FAIL: test2.TestDollar.testMultiplicaton ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\Python27\lib\site-packages\nose-1.1.2-py2.7.egg\nose\case.py", line 1 97, in runTest self.test(*self.arg) File "C:\temp\test2.py", line 11, in testMultiplicaton eq_(10, five.amount) File "C:\Python27\lib\site-packages\nose-1.1.2-py2.7.egg\nose\tools.py", line 31, in eq_ assert a == b, msg or "%r != %r" % (a, b) AssertionError: 10 != 15 ---------------------------------------------------------------------- Ran 1 test in 0.562s FAILED (failures=1)
○オプション
verbose モード
「-v」 オプションを有効にすると、verbose モードでテストが実行されます。-vvv のように v を重ねると、より verbose なメッセージが表示されます。pdb 対応
「--pdb」 オプションを有効にすると、テストプログラムで例外が起きると同時に、pdb が起動し、デバッグモードに入ります。
「--pdb-failures」オプションを有効にすると、テストプログラムでテストが失敗すると同時に、pdb が起動し、デバッグモードに入ります。
パターンマッチ
「-i 正規表現パターン」オプションを有効にすると、正規表現にマッチしたファイルのみがテスト実行されます。
「-e 正規表現パターン」オプションを有効にすると、逆に正規表現にマッチしたファイルは実行されなくなります。
○さらに詳しく理解するには
nose まとめ 1
0 件のコメント:
コメントを投稿