Lambda関数が初めての方向けに、シンプルなS3→Lambda→DynamoDB構成でユニットテストの書き方を学ぶワークショップです。pytestとmotoを使った実践的なテスト手法を身につけます。
- S3イベントをトリガーとするLambda関数の理解
- boto3を使ったAWSサービス連携のテスト方法
- motoを使ったAWSサービスのモック化
- イベント駆動システムにおける重複処理の防止
- テストしづらいコードの特徴とその対処法
simple-lambda-testing-workshop/
├── README.md                 # このファイル
├── DESIGN.md                 # 設計ドキュメント(アーキテクチャ、データモデル)
├── EXERCISE.md              # 演習課題の詳細
├── HINTS.md                 # 段階的なヒント集
├── requirements-dev.txt     # Python依存パッケージ
├── src/
│   └── file_recorder.py     # テスト対象のLambda関数
├── tests/
│   ├── conftest.py          # pytest設定
│   └── test_file_recorder.py # テストコード(演習で実装)
└── samples/
    ├── s3_put_event.json             # S3 Putイベント(小さいファイル)
    └── s3_large_file_event.json      # S3 Putイベント(大きいファイル)
- Git がインストールされていること
- インストールが未実施の場合は下記からインストールすること
 
- Python 3.11 以降がインストールされていること
- pytest基礎、フィクスチャ、モックの基礎知識があること
# すでにクローン済みの場合
cd simple-lambda-testing-workshop
# 未クローンの場合
git clone https://github.com/yuu551/simple-lambda-testing-workshop.git
cd simple-lambda-testing-workshoppython -m venv .venv
.venv\Scripts\activate
pip install -r requirements-dev.txt# pytestが正しくインストールされているか確認
pytest --version
# テストが実行できるか確認(最初はすべてスキップされます)
pytest tests/ -v以下のような出力が表示されればOKです。
tests/test_file_recorder.py::test_records_new_file SKIPPED
tests/test_file_recorder.py::test_skips_duplicate_file SKIPPED
- S3にファイルがアップロードされた時の動作を見る
- Lambda関数のコードを読んで理解する
- テストしづらいポイントを確認する
- DESIGN.mdを開いてアーキテクチャを確認
- S3 → Lambda → DynamoDB の処理フローを理解
- テスト観点を確認する(重複チェック、データ保存など)
- EXERCISE.mdを開いて課題を確認
- tests/test_file_recorder.pyにテストを実装- 課題1: 新規ファイルの記録(基礎)
- 課題2: 重複ファイルのスキップ(応用)
 
- 詰まったら HINTS.mdを参照
- pytest tests/ -vでテストを実行
- カバレッジを測定(オプション)
# HTMLレポート生成(推奨) pytest --cov=src --cov-report=html # ブラウザで htmlcov/index.html を開いて確認 # ターミナルで確認(簡易) pytest --cov=src --cov-report=term-missing 
- 学んだことを共有
このワークショップを完了したら、以下に挑戦してください。
より複雑な EventBridge + SNS 構成のワークショップに挑戦します。
レポジトリURL: https://github.com/yuu551/lambda-pytest-workshop
# 別ディレクトリにクローン
cd ..
git clone https://github.com/yuu551/lambda-pytest-workshop.git
cd lambda-pytest-workshop# アップグレードしてから再インストール
python -m pip install --upgrade pip setuptools wheel
pip install -r requirements-dev.txtプロンプトに (.venv) が表示されていることを確認してください。
Windows:
.venv\Scripts\activateワークショップ中に疑問点があれば、遠慮なく質問してください!