Edited at

Pythonの単体テスト

More than 3 years have passed since last update.


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モジュールは、テストコードとその結果をコメントとして書くことで

自動的にテストを行ってくれる。(どういうチェックをしたかコメントとして残るので便利)