【Python入門】assert文で簡単なテストをしてみよう

この記事では、Pythonのassert文の使い方について解説をしたいと思います。assert文はコードのデバッグやテストを行うときによく使われます。

予期しない動きをしたらすぐにプログラムの実行を止めたい
テストは難しそうだけど簡単にやってみたい

この記事ではこのように考えている初心者に向けて、

  • 【基礎】テストとは
  • 【基礎】assert文とは
  • 【発展】assert文で簡単なテストをする方法

についての解説をします。assert文の使い方をしっかりと学んでいきましょう!

なお、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関数を実行します。


【なかなかエラーが解決できない…そんな悩みを解決します!】

登録無料で始められるプログラミングスクール「侍テラコヤ」

・回答率100%のQ&A掲示板でエラーを解決!
現役エンジニアとのオンライン相談で悩みを解決!
・50種類以上の教材で複数言語を習得!

侍テラコヤについて詳しく見る

その他のデバッグ方法

Pythonでは他の方法でも簡単にデバッグをすることが出来ます。こちらの記事ではpdbモジュールを使ったデバッグについて解説しています。

ぜひご覧ください。

printデバッグ要らず!pythonで簡単にデバッグする方法
更新日:2023年3月21日

まとめ

今回は

  • テストとは何か
  • assert文の使い方

について簡単に解説をしてきました。どのような場面でassert文を使えばよいのか、分かっていただけたでしょうか。テストと聞くと学習コストも高くなるように感じてあまり触れてこなかった方も多いかもしれません。

でも、このassert文を使えば学習コストも低く、とても簡単にテストを行うことが出来ましたね。assert文の使い方について忘れてしまったときは、ぜひまたこの記事をご覧ください!

プログラミング学習中、
誰かへ相談したいことはありませんか?

SAMURAI TERAKOYA

プログラミングはエラーの連続。作業を進めるなかで誰かに教えてほしい場面は多いですよね。

そんな悩みを解決できるのが、侍テラコヤです。登録無料で始められて、現役エンジニアとオンラインで相談できるほか、回答率100%のQA掲示版でプログラミングに関する悩みを解決します!

気になる方はぜひ詳細をご覧ください。

→侍テラコヤの詳細をみる

Writer

侍テック編集部

株式会社SAMURAI

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。侍テック編集部では技術系コンテンツを中心に有用な情報を発信していきます。

あなたの目的に合わせた
SAMURAI ENGINEERの運営サービス

SAMURAI ENGINEER Pro

未経験でも挫折しないプログラミングスクール

詳細はこちら

SAMURAI TERAKOYA

日本最大級のサブスク型オンラインITスクール

詳細はこちら

SAMURAI ENGINEER Freelance

「一人で稼げる」スキルを身につける

詳細はこちら
Close