PythonにおけるUnittestの紹介:構造化されたユニットテストの作成
メニューを表示するにはスワイプしてください
Unittest は Python の標準ライブラリの一部であり、追加のインストールが不要で利用可能。テストケースの概念に基づいて設計されており、これはフレームワークの TestCase クラス から派生した Python クラス。Unittest は、テストの構造化が オブジェクト指向プログラミング の原則を反映するため、テストを始める人にとって優れたツール。
Unittest の構造
Unittest では、各テストは unittest.TestCase のサブクラス内のメソッドとして定義。これにより、関連するテストをまとめて論理的に整理し、テストコードの可読性を向上。
Unittest でのテスト作成
2つの数値の平均を計算するシンプルな関数をテスト。対象となる関数は以下の通り:
def calculate_average(num1, num2):
return (num1 + num2) / 2
テストケースの作成
テストケースを作成するには、unittest.TestCase を継承したクラスを定義。そのクラス内で calculate_average 関数をテストするメソッドを定義。
import unittest
class TestCalculateAverage(unittest.TestCase):
def test_integers(self):
self.assertEqual(calculate_average(10, 20), 15)
def test_floats(self):
self.assertAlmostEqual(calculate_average(10.5, 20.5), 15.5)
- 最初に、Python の標準ライブラリである Unittest モジュールを
import; class TestCalculateAverage(unittest.TestCase)で新しいテストケースを作成。unittest.TestCaseを継承し、テスト機能を提供;- クラス内の各メソッドは
test_で始める必要がある; - メソッドでは、条件が正しいかどうかを確認するために特定の assert 文を使用。
成功したテスト出力の例
Unittestですべてのテストが合格した場合、出力はシンプルで、すべてのテストが失敗なく正常に実行されたことを示します。以下は、テストが成功した場合の出力例です:
...
----------------------------------------------------------------------
Ran 3 tests in 0.002s
OK
失敗したテスト出力の例
1つ以上のテストが失敗した場合、出力には失敗の詳細、どのテストが失敗したか、その理由が表示されます。以下は、テストが失敗した場合の出力例です:
..F
----------------------------------------------------------------------
Ran 3 tests in 0.003s
FAILED (failures=1)
======================================================================
FAIL: test_average_floats (test_module.TestCalculateAverage)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/path/to/test_module.py", line 10, in test_average_floats
self.assertAlmostEqual(calculate_average(10.0, 20.0), 15.1)
AssertionError: 15.0 != 15.1 within 7 places (0.10000000000000142 difference)
----------------------------------------------------------------------
この出力には以下が含まれます:
..Fは3つのテストが実行され、最初の2つは合格(..)、3つ目が失敗(F)したことを示します。FAILED (failures=1)は実行されたテストのうち1件が失敗したことを示します。- 詳細なエラーレポートはテスト識別子(
test_average_floats)とクラス(TestCalculateAverage)から始まり、失敗の原因となったテストコードの行へのトレースバックと、アサーションエラーの内容(期待値、実際の値、許容誤差)を説明します。
すべて明確でしたか?
フィードバックありがとうございます!
セクション 5. 章 1
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 5. 章 1