doctest
Python標準
doctestは、コメントにテストを書いておいて簡易ユニットテストとして実行できる便利な仕組みです。 Python には標準で装備されています。(PHP等の他の言語でも拡張ライブラリやフレームワーク採用等で対応しているケースがあります。)
ソースにテストケースを書く
プログラムのソース本体に、テストケースをコメントとして書きます。 例えば、以下のように記述します。
def average(*numbers):
"""
>>> average(1,3)
2
>>> average(1,3,4,4)
3
"""
return sum(numbers) / len(numbers)
doctestの読込
下記コードをソースに追加します。
if __name__ == "__main__":
import doctest
doctest.testmod()
python ファイル名 -vで、テスト実行結果を確認することができます。 上記例だと、以下のようになります。
Trying:
average(1,3)
Expecting:
2
ok
Trying:
average(1,3,4,4)
Expecting:
3
ok
1 items had no tests:
__main__
1 items passed all tests:
2 tests in __main__.average
2 tests in 2 items.
2 passed and 0 failed.
Test passed.
doctestの欠点
ソース本体にテストを書くため、テストが多い場合は可読性が落ちる可能性があります。
出力が一緒かどうか?というテストなので、複雑なテストを記述するのは難しいでしょう。
手軽にテストを書くことができる点は非常に有用なので、他のテスト等と組み合わせて使うと良いかもしれません。