doctestモジュールを利用して単体テストを行う
以下のように書くと各ファイル単位で単体テストができる(本番はスキップされる)
test.py
#!-*- coding:utf-8 -*-
def double(x):
""" 与えられた数の3倍を返す関数
ここからの内容を単体テストする
>>> double(3)
9
基本的に自由にコメントを付けていい">>>"とその次の行のみ認識される
>>> double(10)
30
>>> double(8)
24
"""
return x * 3
if __name__ == "__main__":
import doctest
doctest.testmod()
-vオプションをつけて実行すれば単体テストをすることができる。
(-vをつけないと正常終了だとなにも返ってこない)
python test.py -v
Trying:
double(3)
Expecting:
9
ok
Trying:
double(10)
Expecting:
30
ok
Trying:
double(8)
Expecting:
24
ok
1 items had no tests:
__main__
1 items passed all tests:
3 tests in __main__.double
3 tests in 2 items.
3 passed and 0 failed.
Test passed.
解説
if __name__ == "__main__":
はスクリプトとして実行された時のみ
動作する。(import test.py
されたときはスキップされる)
doctestモジュールは、テストコードとその結果をコメントとして書くことで
自動的にテストを行ってくれる。(どういうチェックをしたかコメントとして残るので便利)