Python逆引き大全|初心者から実務まで使えるテスト自動化の実践テクニック テスト自動化編!

逆引き

Pythonのテスト自動化は、効率的な開発プロセスの鍵となります。本記事では、ユニットテストからCI/CD統合パフォーマンステストまで、テスト自動化における実践的な技術を網羅的に解説します。


ユニットテストの作成

Pythonの標準ライブラリunittestを使用して、ユニットテストを作成できます。

import unittest

# テスト対象の関数
def add(x, y):
    return x + y

# テストクラス
class TestMathOperations(unittest.TestCase):
    def test_add(self):
        self.assertEqual(add(2, 3), 5)
        self.assertEqual(add(-1, 1), 0)

if __name__ == '__main__':
    unittest.main()

ユニットテストは個別の関数やメソッドの動作を確認するのに有効です。


テストケースの実行

テストケースの実行は、コマンドラインから行えます。

python -m unittest test_file.py

上記コマンドで、test_file.py内のすべてのテストケースが実行されます。


モックオブジェクトの使用

外部依存を切り離してテストするために、unittest.mockを活用します。

from unittest.mock import MagicMock

# モックの設定
mock = MagicMock()
mock.return_value = "mocked result"

# 使用例
result = mock()
print(result)  # mocked result

モックは、外部サービスやデータベース接続をテストする際に便利です。


テストカバレッジの測定

coverageライブラリを使うと、テストカバレッジを確認できます。

pip install coverage
coverage run -m unittest test_file.py
coverage report

これにより、コードのどの部分がテストされているかが分かります。


CI/CDパイプラインとの統合

GitHub Actionsを使ったテスト自動化の例です。

name: Python CI

on: [push]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up Python
        uses: actions/setup-python@v2
        with:
          python-version: 3.9
      - name: Install dependencies
        run: pip install -r requirements.txt
      - name: Run tests
        run: python -m unittest discover

CI/CDを導入することで、変更があるたびにテストが実行されます。


回帰テストの実行

回帰テストは、既存機能が変更によって壊れていないことを確認するテストです。pytestを活用すると効率的です。

pip install pytest
pytest tests/

pytestは、シンプルな記述でテストケースを作成でき、回帰テストに最適です。


パフォーマンステスト

コードの性能を確認するには、timeitモジュールが役立ちます。

import timeit

code = '''
def add(x, y):
    return x + y

add(2, 3)
'''

print(timeit.timeit(code, number=100000))

高負荷なシナリオを模擬して性能を測定できます。


ストレステスト

ストレステストには、locustのようなツールが有効です。

pip install locust

以下は、HTTPサーバーへのストレステストの例です。

from locust import HttpUser, task

class WebsiteUser(HttpUser):
    @task
    def load_page(self):
        self.client.get("/")

テストデータの生成

fakerライブラリを使って、テストデータを動的に生成します。

pip install faker
from faker import Faker

fake = Faker()
print(fake.name())  # ランダムな名前
print(fake.email())  # ランダムなメールアドレス

エラーログの解析

テスト中に生成されたエラーログを解析し、問題箇所を特定します。

try:
    1 / 0
except ZeroDivisionError as e:
    with open("error.log", "a") as log_file:
        log_file.write(str(e))

エラーログは継続的な品質改善に不可欠です。


まとめ

テスト自動化は、ソフトウェア開発の効率化と品質向上に欠かせません。本記事では、Pythonを使ったテスト自動化の基本から応用までを解説しました。これらのテクニックを活用して、信頼性の高いコードを実現しましょう。

このサイトを稼働しているVPSはこちら

コメント

タイトルとURLをコピーしました