【Python入門】unittestでプログラムのテストを実施する方法

この記事ではPythonのunittestについて解説をしたいと思います。

unittestではPythonで書いたコードプログラムテストをすることが出来ます。

予期しない動きをしたらすぐにプログラムの実行を止めたい。
テストケースを作ってテストをしたい。

今回の記事ではこのように思っている方に向けて、

【基礎】unittestとは
【基礎】テストとは
【実践】unittestの使い方

などの基本的な部分について解説をしていきます。

Pythonのunittestについて理解を深めていきましょう!

unittestとは

まずはunittestとは何かについて知っておきましょう。

unittestはPython標準パッケージとして組み込まれた、コードやプログラムのテストを行うためのパッケージです。

基本的にはimportをしたあと、unittest.TestCaseを継承したテストケースを作ってテストを行います。

Pythonにはassert文を使うテストの方法もありますが、違いとしてはテストケースを作ってテストを実行するという点が挙げられます。

テストケースとはテストする条件と方法をまとめたものです。

assert文でテストをする場合は、そのテストが行われる場所すべてにassert文を書く必要があります。

これに対してunittestでは、どこで、どのようなテストをするのかまとめて書いておくことができるので、規模の大きいコードやプログラムにも対応出来ます。

assert文についてはこちらの記事をご覧ください。

【Python入門】assert文で簡単なテストをしてみよう
更新日 : 2019年2月20日

また、プログラムやコードのテストとは何かについても知っておきましょう。

テスト(ソフトウェアテスト)とは、コードが意図しない動きをしないかどうかを調べるための作業のことです。

デバッグという言葉は聞き馴染みがあるのではないでしょうか。

そのデバッグを行うために、このテストを行って意図しない動きを洗い出す作業が必要になります。

unittestの使い方

それでは早速unittestを使ってみましょう。

これからは章ごとに順番に解説をしていきます。

テストをするコードを作る

まずはテストをする対象のコードを書きましょう。

今回は、テキストを入力してそれが数字であれば入力した数字をそのまま返し、数字以外であれば数字を入力するようなメッセージを返すコードを書きます。

numprint.py

数字を入力した場合

数字以外を入力した場合

今回はこのコードを使って、数字を入力したときと数字以外を入力したときで期待した表示がされるかを確認しましょう。

書いたコードをimportする

unittestではテストをする対象のコードをモジュール化してテストをします。

先程のnumprint.pyをTestnumprint.pyにimportしましょう。

また一緒にunittestパッケージもimportしておきましょう。

Testnumprint.py

importについての詳しい解説はこちらの記事をご覧ください。

はじめてのPython!パッケージをimportする方法をやさしく解説!
更新日 : 2019年5月2日

unittestを使ってテストコードを書く

ここからは実際にunittestを使ってテストを実行してみましょう。

先程のTestnumprint.pyをこのように変更しましょう。

Testnumprint.py

一行ずつ説明していきましょう。

まずはunittest.TestCase継承したクラスを作りましょう。

クラスについてはこちらの記事をご覧ください。

【Python入門】クラスの使い方を4つのステップで楽々マスター
更新日 : 2019年4月25日

次にtest_numprintというテストを実行するためのメソッドを作ります。

そこで実際にテストをする値を用意します。

ここではvalが実際に入力をする値、expectが入力をした場合に返ってくることが想定されている値になります。

次にnumTestという実際にテストを行うための関数を実行して、その戻り値をactualに入れています。

そのactual(実際に実行したときの値)とexpect(実行をする前に期待されている値)が等しいかどうかを、self.assertEqualメソッドで2つの値を比較します。

ちなみに最後のif〜ブロックは、テストを簡単にするためのコードだと思ってもらって構いません。

詳しくはこちらの記事をご覧ください。

Pythonの__name__とは?意味や使い方について解説
更新日 : 2019年5月23日

実際に実行してみましょう。

このようになれば期待した値と実際に実行した値が一緒(= テスト成功)だということがわかりますね。

valに「"aaa"」という文字列を入れて、expectに「"Not a number!"」を入れて実行してみても、テストは成功します。

まとめ

この記事ではunittestでコードやプログラムのテストをする方法について解説をしました。

assert文との違いやテストとは何かについて、unittestの使い方については分かっていただけたでしょうか?

assert文とunittestのどちらが優れているというわけでもなく、使い所を見極めて使っていきましょう。

unittestの使い方を忘れてしまったときは、ぜひまたこの記事をご覧ください!

自分にプログラミングなんて・・・と思っていませんか?

今後10年間で今ある職業の『77%』はなくなると言われています。

人工知能や機械学習を筆頭にVR、AR、ドローンなどの最先端技術の発達はこれからのあなたの働き方に間違いなく影響を与えるでしょう。

将来を見据えてプログラミングができるようになってエンジニアになりたい、自分だけにしかできないクリエイティブな仕事がしたい、、、とお考えの方も少なくないでしょう。

と、同時に「難しそう、、自分にはできないだろう、、、」と諦めている方も多いのではないでしょうか。

弊社マンツーマンレッスンは、お一人お一人に専属のインストラクターがつくので、通常のスクールでは難しい、オリジナルアプリ開発や、フリーランスとしての仕事獲得まで支援しています。

まずは『無料体験レッスン』で弊社コンサルタントと一緒にあなた専用の学習カリキュラムを考えてみてはいかがでしょうか?

詳しくは下の画像をクリックしてください。

cta_mtm2

LINEで送る
Pocket

書いた人

ryo

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説