#19 Pythonで学ぶテスト(単体テスト)の基本
プログラムが「思った通りに動いているか」を確認する作業を、毎回手作業でやるのは大変です。この記事では、Pythonで書いたコードが正しく動くかを自動でチェックする「テスト」の基本を解説します。
なぜテストを書くのか
コードを修正するたびに、関係する機能が壊れていないかを人力で全部確認するのは現実的ではありません。テストを書いておけば、修正のたびに実行するだけで「壊れていないか」が数秒で分かります。最初は面倒に感じますが、後から安心してコードを直せるようになる投資だと考えてください。
一番簡単なテストの書き方
Pythonには標準でassertという文があります。これは「この条件が正しいはずだ」と宣言するもので、条件が偽だとエラーになります。
def add(a, b):
return a + b
assert add(2, 3) == 5
これだけでも簡易的なテストになりますが、実際の開発では次に紹介する専用のツールを使うのが一般的です。
pytestを使ったテストの書き方
Pythonではpytestという外部ライブラリがテストの定番です。pip install pytestで導入できます。テスト用のファイルをtest_から始まる名前で作り、その中にtest_から始まる関数を書きます。
def add(a, b):
return a + b
def test_add():
assert add(2, 3) == 5
assert add(-1, 1) == 0
ターミナルでpytestと実行するだけで、ファイル内のtest_から始まる関数がすべて自動で実行され、結果が一覧表示されます。
異常系もテストしておく
正しい入力だけでなく、想定外の入力(空文字、0、マイナスの値など)を渡した時の挙動もテストしておくと、後々のバグを減らせます。
def test_add_with_zero():
assert add(0, 0) == 0
Pythonならではの注意点
Pythonは動的型付け言語なので、関数に間違った型(文字列と数値など)を渡してもすぐにはエラーにならないことがあります。そのため、型に関するテストも意識して書くと安心です。また、pytestは関数名の先頭がtest_でないと自動で認識してくれないので、名前の付け忘れには注意しましょう。
まとめ
テストは「正しく動くことを保証する仕組み」であり、コードを安心して修正するための土台になります。まずはassert文から始めて、慣れてきたらpytestを使った本格的なテストに挑戦してみてください。
関連記事
本ページはプロモーションを含みます。
参考書籍(PR)
Pythonをもっと学びたい方には「スッキリわかるPython入門 第2版」がおすすめです。
コメント
コメントを投稿