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 件のコメント:
コメントを投稿