Python 文法・関数

Pythonのassertをマスターしよう!基礎から具体例まで

Python初心者の方でassert文について

「なんとなくしか理解できない」
「assertの基礎知識から使い方まで網羅的に知りたい」
「assert文とif文やunittestとの違いを知りたい」

と思う人も多いでしょう。

そこで今回はassert文の構文や基礎知識から基本的な使い方、さらにはif文やunittestとの違いを詳しく説明していきます。それでは見ていきましょう。


本ブログを運営しているTech Teacherは、業界初のプログラミング家庭教師サービスを提供しています。

その特徴は完全マンツーマン・フルオーダーメイド指導・30分ごとの利用が可能であるところです。

完全マンツーマン

Tech Teacherのマンツーマン指導なら理解できない箇所は何度も分かるまで説明を受けることができます。

フルオーダーメイド指導

Tech Teacherではあらかじめ決められたカリキュラムはありません。そのためご自身の学習状況や学びたいことに合わせた指導が可能です。

一括支払いなし

一般的なプログラミングスクールの料金体制はカリキュラムに対して一括払いですが、Tech Teacherでは利用した分だけの支払いとなります。そのため、大きな費用負担がなく気軽に始めることができます。

Pythonをマンツーマン指導で学べるプログラミング家庭教師について詳しく知りたい方ほこちら

assert文について

assert文について説明する前に、プログラムの「テスト」とは何か説明します。テストとはコードが予期しない動作をしないかどうかを調査する作業のことです。バグを取り除く「デバッグ」を行うためには予期しない動作を洗い出す作業が必要になるため、このassert文を使用してテストを行います。

「assert文」とは基本的に条件をテストするデバッグ支援ツールで、構文は次のようになっています。

1. assert 条件式 , 条件式がfalseになったときに出力するメッセージ

条件式が「false」の場合には例外「AssertionError」が起きてしまいます。「true」の場合には何も起きずに次の命令を実行します。

Pythonではテストを行うためのクラス「unittest」が用意されていますが、unittestを使用するよりもassert文を使用する方が簡単にテストを行うことができますよ。

このように、assert文を使うことで少しでも想定外の動作をした場合にすぐにエラーを出力してプログラムを終了させることができますよ。

assert文の使い方

ここからは実際にassert文の使い方を解説していきます。

  • 基本的な使い方
  • 無効にする方法

それでは見ていきましょう。

基本的な使い方

assert文の書式は以下の通りです。

1. # Falseの場合
2. assert False , error
3. Traceback ( most recent call last ) :
4.  File ‘’ , line 1, in
5. AssertError : error
6.
7. Trueの場合
8. assert True , ‘何も起きずに次の命令を実行’

それでは、ここからは実際にコードを使用して説明していきましょう。

1. text1 = “何も起こらない”
2. text2 = “エラー“
3. text3 = “何も起こらない“
4. assert text1 == text3
5. assert text1 == text2
6. print ( ‘Hello World’ )
7. # 実行結果
8. AssertionError

この例では、まず4行目でassert文を使用していますが「text1== text3」はTrueになるため何も起こりません。しかし、5行目でのassert文では「text1 == text2」がFalseになるためAssertionErrorが出て、そこでプログラムが終了します。6行目のprint文が実行されていないことを確認してください。

assert文では条件式の後にカンマを付けて記述することでエラーメッセージを記述することができます。

1. text1 = “何も起こらない“
2. text2 = “エラー“
3. assert text1 == text2 , ‘text1 is not equal to text2’
4. # 実行結果
5. AssertionError : text1 is not equal to text2

このプログラムでは条件「text1 == text2」が成立していないためAssertionErrorが起きています。このとき、指定したエラーメッセージが出力されていることが分かるでしょう。

このようにassert文を使用することで、プログラム中で想定と異なる振る舞いをしている場合に、すぐに気づくことができますよ。

無効にする方法

プロセス内のすべてのassert文を無効にするには、-Oフラグを使用しましょう。

1. $ python -Oc ‘assert False’
2.
3. $ pyton -c ‘assert False’
4. Traceback ( most recent call last ) :
5.  File ‘’ , line 1 , in
6. AssertionError

assert文は組み込み定数「 _debug_ 」がTrueのときだけ実行されます。Pythonスクリプト実行時のコマンドラインオプションに「-O」を付けると「 _debug_ 」が「False」になるのでassert文が無効になりますよ。

assert文とif文の違い

まずif文とは何かを説明していきます。
「if文」とはプログラム中で条件分岐を記述したい場合に用いられる構文です。ある条件式が成り立つ「True」であるか、成り立たない「False」であるかを判定して処理を分岐させることができます。

if文の構文は次の通りです。

1. if 条件式1 :
2.  条件式1がTrueの場合の処理
3. elif 条件式2 :
4.  条件式1がFalseかつ条件式2がTrueの場合の処理
5. else :
6.  条件式1,2がどちらもFalseの場合の処理

「elif」はif文の条件に当てはまらなかった場合にさらに他の条件に当てはまるかをチェックしたいときに使用します。「else」はifとelifのどちらの条件にも当てはまらなかった場合に処理を実行したいときに使用しますよ。

このことからassert文とif文の違いは、次の通りです。

構文\条件式の真偽 True False
assert文 何も起こらない エラーを出力
if文 処理を実行 何も起こらない

このようにassert文とif文には明確な違いがあるので気をつけましょう。

if文についてはこちらの記事でも詳しく解説しています!

Pythonのif文がわかる!基礎から応用まで分かりやすく解説します!人工知能や機械学習で人気が沸騰中のPython。最近では自宅でプログラミングを学習できるので、独学で学んでいる方も多いでしょう。 ...

assert文とunittestの違い

Pythonにはテストを行うためのクラス「unittest」が用意されています。「unittest」とは、Pythonに標準搭載されているテスト用のツールで、プログラムを記述したあとに正しく動作するかのテストを行えます。

プログラムの規模が大きかったり、ユーザー定義関数が多くなったりする場合、ひとつひとつテストしていくのは大変です。unittestを使用すると複数のテストをまとめて実行できるため便利ですよ。

unittestは次のように利用します。

1.  #例として和を計算する関数を使用
2.  def addition ( x , z ) :
5.  return x + z6.  #正しく実行されているか確認
7.  import unittest10. class addition ( unittest . TestCase ) :
14.  def test _ addition ( self ) :
17.   value1 = 25
18.   value2 = 75
19.   expected = 100
20.  actual =addition ( value1 , value2 )
21.   self . assertEqual ( expected , actual )
22.
23. if __name__ == “__main__” :
34.  unittest . main ( )

assert文とunittestの違いはテストケースを作成して実行するかどうかです。

assertを使用する上での注意点

assert文を使用する上では、注意すべき点が2つあります。

  • assert文はエラー処理ではない
  • assertの有無がプログラムに影響しないようにする

それでは詳しく説明していきます。

assert文はエラー処理ではない

これまで説明したように、少しでもプログラムが想定外の動作をした場合にはassert文がエラーを返します。
しかし、エラーを返すだけでエラー処理を行うものではないので注意しましょう。

そのため、例外が投げられた場合には開発者自身が戻り値をチェックしたりエラー処理をしたりするなどの対応をする必要があります。

assertの有無がプログラムに影響しないようにする

assert文はアサーションを有効化した場合、つまりプログラムが正常に動作しているかチェックする方法が有効な時にのみ実行されるようになっています。

そのため、プログラムの実行結果がassertの有無によって変わらないように注意しなければなりません。assertが有効化された場合とされていない場合でローカル変数の値が変化しないように注意しましょう。

「Tech Teacherで!~家庭教師ならではの3つの魅力~」

本Blogを運営するプログラミング家庭教師Tech Teacherは以下のような疑問をすべて解決できるサービスです。

・Pythonの応用をもっと学びたいが、値段が高いスクールに通うのは気が引ける

・目的別に短時間の利用ができるサービスがあったらいいな

比較対象 Tech Teacher プログラミングスクールA社
受講形態
1対1

1対3~5
担当教師
担任教師
×
講座別の講師
カリキュラム
自分専用指導

全員指導
仕事・学業との両立
可能
×
不可能
メンター制度
担任教師

異なる担当
料金
授業分だけ
×
一括払い
初期費用
入会金
22,000円
×
一括払い
528,000円
シミュレーション
(3ヶ月90分の指導を週1で行う)

164,500円
×
528,000円

以下、Tech Teacherの3つの魅力を紹介します。

Pythonをマンツーマン指導で学べるプログラミング家庭教師について詳しく知りたい方ほこちら

1.効率的な学習スタイル

一人のためだけの指導~1対1の完全個別指導~

一般的なプログラミングスクールでは大人数の対面講義や、録画講義の視聴またはオンラインでの受講がメインです。そうなると学習しながら生じた疑問をすぐに聞くことができずに、先に進んでしまい内容をうまく理解できなかったり、作業がうまく進まなかったりします。

家庭教師であれば、マンツーマンのため自分の課題にだけ焦点を当てて指導を受けられるので、1回の授業を濃い時間にすることができます。

無駄のない学習~フルオーダーメイド~

Tech Teacherは一般的なプログラミングスクールと異なり、あらかじめ決められたコースやカリキュラム設定がありません。
一般的なプログラミングスクールのカリキュラムでは、自分が本当に学習したいことを学ぶのにいくつか他の講義を受けなければなりません

Tech Teacherでは生徒様の現状の習熟度・目的・期間に応じてお悩みにダイレクトに刺さる授業を展開し、最短で目標となるゴールを目指せます。

2.自分のペースで学習できる

必要な分だけ~従量課金モデル~

Tech Teacherでは、他にはない「短時間(30分ごと)」の利用が可能です!勉強していてちょっとわからないところ、プログラミング学習のモチベーション維持など様々な疑問や悩みを解決することができます。
授業を受けた分だけ後払いする料金体系(3,960円〜 / 30分)のため、必要な期間に必要な分だけ受講できます。

好きな時間で~相性のいい教師の紹介~

Tech Teacherではあらゆるニーズに対応できる教師陣がいるため、生徒様の希望条件に最適な教師を紹介します。

Tech Teacherを受講している方のほとんどが仕事をしている社会人の方です。TechTeacherの家庭教師なら受講日時や回数を、生徒様のご都合に合わせて柔軟に調整することができ、スキルだけでなく都合の良い時間で指導できる教師を選べます。

3.確実に身につく

挫折しない~担任教師の継続指導~

オンライン・オンデマンドの講義の視聴形態だと、学習に対するモチベーションの維持が課題となり、当初の予定よりも受講期間が伸びたり、挫折したりする恐れがあります。

Tech Teacherでは、担任教師が生徒と二人三脚で学習をするため、学習が大変なときも寄り添ったサポートを受けられます。

具体的には学習計画の管理や受講目的を明確にした上で中間目標を設定し、それに向けた学習の指導をすることでモチベーションの維持を図ります。

いつでも質問できる~チャットサポート(オプション)~

担当教師は授業の時間以外に、チャットサービスを利用して、自分で学習しているときに生じた疑問をすぐに質問して解決することができます。

Javaをマンツーマン指導で学べるプログラミング家庭教師について詳しく知りたい方ほこちら

Tech Teacherへのお問い合わせ

質問のみのお問い合わせも受け付けております。

まとめ

今回はassert文の基礎知識や使い方、さらにはif文やunittestとの違いについて説明してきましたがいかがでしたでしょうか。

今回説明した要点をまとめると以下のようになります。

  • assert文は条件をテストするデバッグ支援ツール
  • 構文は「assert 条件式 , エラーメッセージ」
  • 無効にするには「 -O 」を使用
  • unittestとの違いはテストケースを実行してテストを行うかどうか
  • assert文はエラー処理を行わない
  • assertの有無がプログラムに影響しないように注意

assert文を使用することで簡単にテストを行うことができます。個人で開発を行う際は意識する必要はありませんが、プログラムを商品として扱ったり会社に所属して開発を行ったりする際には必須の知識となっています。しっかり理解を深めて動作確認に役立ててください。

このブログでは他にもPythonの学習に役立つ情報を発信しています!ぜひご覧ください。

Pythonで人工知能を開発するには?初心者におすすめの方法を解説Pythonで人工知能開発を行いたいが、何から始めたら良いのか分からない、という方はいますか。本記事ではPythonでの人工知能開発方法を解説します。人工知能開発に興味がある方はぜひお読みください。...
Pythonでアプリ開発に挑戦しよう!ゼロから分かりやすく解説Pythonでのアプリ開発が盛んになっている昨今。初心者からするとPythonのメリット・デメリットは何なのか、どんなアプリが開発できるのか疑問ですよね。今回はこれからアプリ開発を学ぶ人のために、Pythonの基礎を解説します。...

https://www.tech-teacher.jp/blog/python-blockchain/