Python で最もよく使用される単体テスト フレームワークの 1 つは、標準ライブラリに含まれている Unittest です。テストを作成および実行し、結果をレポートするための豊富なツール セットを提供します。
unittest フレームワークの主な機能
テスト ケース: テスト ケースは、unittest.TestCase をサブクラス化することによって作成されます。 test_ で始まるクラス内の各メソッドはテストとみなされます。
Assertions: このフレームワークは、assertEqual、assertTrue、assertFalse など、期待される結果をチェックするためのさまざまなアサーション メソッドを提供します。
テスト ランナー: フレームワークには、テストを実行して結果を報告するテスト ランナーが含まれています。
単体テストの基本構造
unittest モジュールのインポート: まず、unittest ライブラリをインポートします。
テスト ケースの作成:unittest.TestCase.
テスト メソッドの定義: 各メソッドは test_ で始まり、予想される動作をチェックするためのアサーションを含む必要があります。
テストの実行: スクリプトが直接実行される場合は、unittest.main() を使用してテストを実行します。
簡単な例
これは、unittest フレームワークを使用して単純な関数をテストする方法を示す簡単な例です。
テストする関数
まず、テストする簡単な関数を作成しましょう:
def add(a, b):
b
def 減算(a, b):
a - bを返す
関数の単体テスト
次に、加算関数と減算関数の単体テストを作成します。
単体テストのインポート
from math_functions import add、subtract # テストする関数をインポートします
クラス TestMathFunctions(unittest.TestCase):
def test_add(self): self.assertEqual(add(2, 3), 5) # Test case: 2 3 = 5 self.assertEqual(add(-1, 1), 0) # Test case: -1 1 = 0 self.assertEqual(add(0, 0), 0) # Test case: 0 0 = 0 def test_subtract(self): self.assertEqual(subtract(5, 3), 2) # Test case: 5 - 3 = 2 self.assertEqual(subtract(-1, -1), 0) # Test case: -1 - (-1) = 0 self.assertEqual(subtract(0, 5), -5) # Test case: 0 - 5 = -5
if 名前 == 'メイン':
ユニットテスト.メイン()
単体テストの解説
import unittest: 単体テスト モジュールをインポートします。
from math_functions import add、subtract: テストする関数をインポートします。
class TestMathFunctions(unittest.TestCase): Unittest.TestCase.
を継承するテスト ケース クラスを定義します。test_ で始まる各メソッドは個別のテストを表します。
各テスト メソッド内で、self.assertEqual() は関数の出力が期待値と一致するかどうかをチェックします。
if name == 'main':unittest.main(): この行により、スクリプトを直接実行したときにテストを実行できます。
テストの実行
テストを実行するには、test_math_functions.py スクリプトを実行するだけです。これはコマンドラインから実行できます:
python test_math_functions.py
出力
すべてのテストに合格すると、次のような出力が表示されます:
0.001秒で2つのテストを実行しました
わかりました
これは、test_add メソッドと test_subtract メソッドの両方が正常に成功したことを示します。いずれかのアサーションが失敗した場合、unittest は失敗を報告し、失敗したテストとその理由を示します。
結論
Python の単体テスト フレームワークは、単体テストを作成して実行するためのシンプルかつ効果的な方法を提供します。関数のテストを作成することで、関数が期待どおりに動作することを確認し、開発プロセス全体を通じて高いコード品質を維持できます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3