この記事では、Pythonのassert文の使い方について解説をしたいと思います。assert文はコードのデバッグやテストを行うときによく使われます。
テストは難しそうだけど簡単にやってみたい
この記事ではこのように考えている初心者に向けて、
- 【基礎】テストとは
 - 【基礎】assert文とは
 - 【発展】assert文で簡単なテストをする方法
 
についての解説をします。assert文の使い方をしっかりと学んでいきましょう!
本記事を読む前に、Pythonがどんなプログラミング言語なのかをおさらいしておきたい人は次の記事を参考にしてください。
→ Pythonとは?特徴やできること、活用例をわかりやすく簡単に解説
なお、その他のPythonの記事についてはこちらにまとめています。
assert文とは
まずはassert文がどのような働きをするのかを知っておきましょう。assert文の構文はこのようになっています。
assert 条件式, 条件式がFalseになったときのメッセージ
この条件式がまさにテストを行う部分で、プログラムの実行中に想定外の動きをする(= 条件式がFalseになる)ときに、例外(AssertionError)を出力します。
条件式がTrueになる場合はなにも行わずに次の命令を実行していきます。Pythonのテストではunittestというテストを行うためのクラスが用意されていますが、これを使うよりも簡単に、テストを行うことが出来ます。
このようにassert文では、少しでも予期しない想定外の動きをした場合はすぐに例外を出力してプログラムを終了させることが出来ます。
テストとは
プログラムやコードのテストとは何かについて知っておきましょう。
テスト(ソフトウェアテスト)とは、コードが意図しない動きをしないかどうかを調べるための作業のことです。デバッグという言葉は聞き馴染みがあるのではないでしょうか。そのデバッグを行うために、このテストを行って意図しない動きを洗い出す作業が必要になります。
個人で開発を行ったりする場合はあまり意識することはありませんが、企業に所属して開発を行ったり、プログラムを商品として扱う場面では必須となる知識です。テストの手法は言語やプログラムの構成によって大きく変わりますが、assert文を使うと簡単なテストを実行させることが出来ます。
assert文で簡単なテストをする方法
ここからは実際にassert文で簡単なテストをしてみましょう。
こちらのコードをご覧ください。
def numTest(x):
    assert x.isdigit(), "x is not a number!"
    print("Input number is: " +  str(x))
    
print("Please input number:")
num = input()
numTest(num)
Output:
Please input number:
あ # これが入力した文字です。
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
<ipython-input-2-497566d2169c> in <module>()
      5 print("Please input number:")
      6 num = input()
----> 7 numTest(num)
<ipython-input-2-497566d2169c> in numTest(x)
      1 def numTest(x):
----> 2     assert x.isdigit(), "x is not a number!"
      3     print("Input number is: " +  str(x))
      4 
      5 print("Please input number:")
AssertionError: x is not a number!
このコードではテキストを入力してそれが数字であれば入力した数字をそのまま表示し、数字以外であれば例外を出力してプログラムを終了させます。numTest関数の中にあるassert文が無ければ、入力されたテキストが数字以外でも出力してしまいます。
assert文の中にあるisdigitメソッドで、numTest関数が受け取ったxという変数は数字かどうかを判別して、数字であればTrueを返しています。なので数字が入力されれば、assert文は何もすることなくその下のprint関数を実行します。
その他のデバッグ方法
Pythonでは他の方法でも簡単にデバッグをすることが出来ます。こちらの記事ではpdbモジュールを使ったデバッグについて解説しています。
ぜひご覧ください。
                    まとめ
今回は
- テストとは何か
 - assert文の使い方
 
について簡単に解説をしてきました。どのような場面でassert文を使えばよいのか、分かっていただけたでしょうか。テストと聞くと学習コストも高くなるように感じてあまり触れてこなかった方も多いかもしれません。
でも、このassert文を使えば学習コストも低く、とても簡単にテストを行うことが出来ましたね。assert文の使い方について忘れてしまったときは、ぜひまたこの記事をご覧ください!
  





