テスト

コードの品質を保証する仕組み。

unittest
Python標準のテストフレームワーク。
pytest
モダンなテストフレームワーク。
doctest
ドキュメント内テストツール。
テストケース
テストの実行単位。
アサーション
期待値を検証する。
フィクスチャ
テストの前準備。
モック
外部依存を模倣する。
テストカバレッジ
コードの網羅率。

unittest

Python標準のテストフレームワーク

unittestは「Python標準のテストフレームワーク」のようなもの。Pythonに標準で付属しているテストライブラリです。これにより、単体テストを簡単に記述できます。

なぜunittestが必要か?

unittestは、単体テストを記述するのに適しています。これにより、コードの品質を向上できます。

いつ使うか?

  • 単体テストを記述する場合
  • Python標準のテストフレームワークを使用する場合
  • シンプルなテストを行う場合
  • 外部ライブラリを追加しない場合

実践テクニック

TestCaseを継承する

TestCaseを継承することで、テストケースの共通機能を再利用できます。これにより、コードの重複を減らせます。

setUp/tearDownを使う

setUp/tearDownを使うことで、テストの前後処理を記述できます。これにより、テストの独立性を保てます。

unittest
# 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は、シンプルで直感的なテスト記述をするのに適しています。これにより、開発効率を向上できます。

いつ使うか?

  • シンプルで直感的なテスト記述をする場合
  • 高度なテスト機能が必要な場合
  • プラグインエコシステムを活用する場合
  • 大規模なテストスイートを実行する場合

実践テクニック

フィクスチャを使う

フィクスチャを使うことで、テストの前準備を簡潔に記述できます。これにより、テストの再利用性を向上できます。

パラメータライズドテストを使う

パラメータライズドテストを使うことで、複数のテストケースを簡潔に記述できます。これにより、テストの網羅性を向上できます。

pytest
# pytestの基本
# test_math.py
def add(a, b):
return a + b
def test_add():
assert add(1, 1) == 2
assert add(2, 3) == 5

doctest

ドキュメント内テストツール

doctestは「ドキュメント内テストツール」のようなもの。ドキュメント内にテストを記述し、自動実行できます。これにより、ドキュメントとテストを同期できます。

なぜdoctestが必要か?

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を使って、ドキュメント内テストを記述してください。

参考文献

この記事は以下の公的ガイドライン/標準に基づいています。