2015年12月12日

doctestを有効に使おう

Python の標準ライブラリに含まれるテストツール doctest を紹介します。

doctest は、関数ヘッダ(又はファイルヘッダ)にテスト内容を記載することで、関数単体テストを実施できるようにするモジュールです。
実際の関数単体テストの記述は以下のようになります。

def count_if(target, predicate=bool):
    """ Count items in target which satisfies condition
    ... 省略 ...

    >>> count_if([0, 1, 2, 3, 0, 1, 2, 3, 0])
    6
    >>> count_if([0, 1, 2, 3, 0, 1, 2, 3, 0],
    ...          lambda x: x % 2 == 0)
    5
    >>> count_if(['', 'a', '', 'b', ''])
    2
    """
    return sum(predicate(i) for i in target)


doctest の長所と短所として、以下が挙げられます。
 長所1: テストを別ファイルにしなくてよい
 長所2: テスト内容はドキュメントとしても使える
 長所3: unittestからdoctestを取り込み可能
 短所: 大掛かりなテストには不向き

手軽に関数単体テストを実施できる点は、実に Pythonic なモジュールと言えます。
しかし、大掛かりなテスト(準備だけの専用関数が必要、テスト項目が数十もある、等)となると、やはりテスト専用のファイルを用意してやる必要があります。

0 件のコメント:

コメントを投稿