【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入門】クラスの使い方を簡単解説で楽々マスター
更新日 : 2019年7月31日

次に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の使い方を忘れてしまったときは、ぜひまたこの記事をご覧ください!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

ryo

おすすめコンテンツ

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

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