テスト
コードの品質を保証する仕組み。
unittest
Python標準のテストフレームワーク。
pytest
モダンなテストフレームワーク。
doctest
ドキュメント内テストツール。
テストケース
テストの実行単位。
アサーション
期待値を検証する。
フィクスチャ
テストの前準備。
モック
外部依存を模倣する。
テストカバレッジ
コードの網羅率。
unittest
なぜunittestが必要か?
unittestは、単体テストを記述するのに適しています。これにより、コードの品質を向上できます。
いつ使うか?
- 単体テストを記述する場合
- Python標準のテストフレームワークを使用する場合
- シンプルなテストを行う場合
- 外部ライブラリを追加しない場合
実践テクニック
TestCaseを継承する
TestCaseを継承することで、テストケースの共通機能を再利用できます。これにより、コードの重複を減らせます。
setUp/tearDownを使う
setUp/tearDownを使うことで、テストの前後処理を記述できます。これにより、テストの独立性を保てます。
# unittestの基本import unittest
class TestMath(unittest.TestCase): def test_add(self): self.assertEqual(1 + 1, 2)
def test_subtract(self): self.assertEqual(5 - 3, 2)
if __name__ == '__main__': unittest.main()pytest
なぜpytestが必要か?
pytestは、シンプルで直感的なテスト記述をするのに適しています。これにより、開発効率を向上できます。
いつ使うか?
- シンプルで直感的なテスト記述をする場合
- 高度なテスト機能が必要な場合
- プラグインエコシステムを活用する場合
- 大規模なテストスイートを実行する場合
実践テクニック
フィクスチャを使う
フィクスチャを使うことで、テストの前準備を簡潔に記述できます。これにより、テストの再利用性を向上できます。
パラメータライズドテストを使う
パラメータライズドテストを使うことで、複数のテストケースを簡潔に記述できます。これにより、テストの網羅性を向上できます。
# pytestの基本# test_math.pydef add(a, b): return a + b
def test_add(): assert add(1, 1) == 2 assert add(2, 3) == 5doctest
なぜdoctestが必要か?
doctestは、ドキュメントとテストを同期するのに適しています。これにより、ドキュメントの品質を向上できます。
いつ使うか?
- ドキュメントとテストを同期する場合
- ドキュメント内に使用例を記述する場合
- シンプルなテストを行う場合
- 外部ツールを追加しない場合
実践テクニック
ドキュメントにテストを記述する
ドキュメントにテストを記述することで、使用例とテストを同期できます。これにより、ドキュメントの信頼性を向上できます。
# doctestの基本def add(a, b): """ Add two numbers.
>>> add(1, 2) 3 >>> add(5, 10) 15 """ return a + b合格ライン
unittestを使える
pytestを使える
doctestを使える
テストフレームワークの使い分けができる
演習課題
課題1: unittestの使用
unittestを使って、単体テストを記述してください。
課題2: pytestの使用
pytestを使って、シンプルなテストを記述してください。
課題3: doctestの使用
doctestを使って、ドキュメント内テストを記述してください。
参考文献
この記事は以下の公的ガイドライン/標準に基づいています。
- unittest Documentation - 公式ドキュメント
- pytest Documentation - 公式ドキュメント
- doctest Documentation - 公式ドキュメント