Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ PythonにおけるUnittestの紹介:構造化されたユニットテストの作成 | Unittestフレームワークの習得
Python構造化プログラミング

bookPythonにおける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に質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 5.  1
some-alt