ここまで作成したソースのテストは、すべて手動確認していた。今回UnitTestを実施してみたので、その時の手順を書いておく。
テストコードの実装
ファイル作成
Visual Studioでは、プロジェクト内に、Pythonの単体テストファイルを作成することができる。作成したいフォルダの位置のコンテキストメニューから、追加-新しい項目とすると、新規ファイル追加のダイアログが出て選択できる。
新しく追加されたファイルは、以下のコードが入っているだけ。
import unittest
class Test_datas(unittest.TestCase):
def test_A(self):
self.fail("Not implemented")
if __name__ == '__main__':
unittest.main()
テスト用のクラスは、unittest.TestCaseの派生として作成していく。
テストメソッドの追加
メソッド先頭の文字がtestとなっているものがテスト用メソッドとして認識される。
def test_add1(self):
"""
データの追加を行い、追加されたデータの初期値が正しいかどうかの判断
"""
target = ManageData()
key = target.add()
self.assertEqual(len(target.datas), 1)
self.assertEqual(len(key), ManageData.MAX_KEY_LENGTH)
また、テストメソッドの前後に、テスト共通の処理を実行したい場合には、setUp()
,tearDown()
などのメソッドを追加する。
テストが正常に動作しているかどうかについては、TestCase
ベースクラスが提供する assert*()
メソッドを使用して判断する。
assertメソッドについては、ここを参照してもらいたい。
フォルダ構成
特に何かしら制限があるようではなかった。
C#やC++ではライブラリや実行モジュールのプロジェクトとは別にテスト用のプロジェクトを作成していたのだが、Pythonは同一のプロジェクト内で、次のような構成とした。
- パッケージ名
テストしたいパッケージ名の後ろにTestsとした。 - モジュール名
テストモジュール名は、テスト対象モジュールと同じ名前にしてみた。
上記例は、OutService/datas.py用のテストを、OutServiceTests/datas.pyとして作成してみた。
ファイル名が同じだと分かりづらいかもと思ったが、対象となるファイルが1つだけだったためか、テストコード実装中、識別しづらいということはなかった。
テスト実施
VisualStudioではテスト用メソッドとして認識されたメソッドを、テストエクスプローラーで認識し、テストが可能となっている。
そのため、テスト実施自体は、C#で行っていた手順で進めることができた。
このタブ、もしくはメニューのテストからテストを実施でき、またテスト結果もテストエクスプローラーに表示されるので便利。
テストエクスプローラーとテストコードの同期
テストを実装した場合、即時反映されるようだ。
例えば、コードに、test_set_statusを追加した後、テストエクスプローラーを表示すると、以下の様に追加したテストメソッドが未実施のテスト項目として表示される。
コメント