Skip to content

yuu551/lambda-pytest-workshop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

既存Lambda関数へのテスト追加ワークショップ

目的

後追いでユニットテストを追加する練習として、既存のAWS Lambda (Python) 実装に対してテスト設計・実装を行うワークショップです。今までのワークショップで扱ったpytestとモックの知識を、本番さながらのコードベースで試すことを狙います。

学習目標

  • ドメイン設計資料からテスト観点を抽出する力
  • boto3を直接利用する既存コードを安全にテストするテクニック
  • イベント駆動システムのエッジケース(重複イベント、外部サービス失敗)へのテスト設計
  • テストしづらいコードに対するリファクタリング候補の洗い出し

フォルダ構成

  • DESIGN.md: ビジネス背景と処理フロー、外部連携を整理した設計ドキュメント
  • EXERCISE.md: 演習課題の詳細(3つのテストケースの実装指示とsamples/の使い方)
  • HINTS.md: テスト実装のための段階的なヒント集
  • src/order_handler.py: テスト未整備の既存Lambda実装
  • samples/*.json: EventBridgeイベントのサンプルペイロード
  • tests/: ワークショップ参加者がテストコードを追加する場所(test_order_handler.py の雛形付き)
  • requirements-dev.txt: ワークショップで利用を想定するPython依存パッケージ
  • solutions/: 演習後に参照できる回答例と解説(閲覧は任意)

前提条件

  • Git がインストールされていること(後述の手順参照)
  • Python 3.11 以降がローカルにインストールされていること
  • slides/pytest/pytest_workshop_slides.md の内容(pytest基礎、フィクスチャ、モック)が理解できていること
  • AWS CLI認証は不要ですが、moto が正しくインストールできるネットワーク環境が必要です

リポジトリの取得

Gitのインストール確認

まず、Gitがインストールされているか確認します。

git --version

バージョンが表示されれば、Gitは既にインストールされています。次の「リポジトリのクローン」に進んでください。

Gitのインストール(未インストールの場合)

Windows:

  1. Git for Windows から最新版をダウンロード
  2. インストーラーを実行し、デフォルト設定のままインストール
  3. Git Bash または PowerShell を開いて git --version で確認

macOS:

# Homebrewを使う場合(推奨)
brew install git

# または Xcode Command Line Tools をインストール
xcode-select --install

Linux (Ubuntu/Debian):

sudo apt update
sudo apt install git

Linux (CentOS/RHEL/Fedora):

sudo yum install git
# または
sudo dnf install git

リポジトリのクローン

Gitのインストールが確認できたら、このリポジトリをローカルにクローンします。

git clone https://github.com/yuu551/lambda-pytest-workshop.git
cd lambda-pytest-workshop

推奨セットアップ

Windows:

python -m venv .venv
.venv\Scripts\activate
pip install -r requirements-dev.txt

macOS/Linux:

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements-dev.txt

ワークショップの流れ

セッション1: 本編(2時間)

  1. イントロ&設計理解: DESIGN.md を読み、Lambdaが担う責務・外部依存・状態遷移を確認する
  2. テスト実装: EXERCISE.md の課題を確認し、tests/test_order_handler.py にpytestでテストを実装。詰まったら HINTS.md を参考にしながら、pytest-mockmoto を活用してboto3呼び出しをスタブ化する
  3. カバレッジ測定 (5 min): pytest-covでカバレッジを確認
  4. 簡単なふりかえり (5 min): 気づきの共有と次回の準備

セッション2: フォローアップ(1時間)

  1. solutions比較 (20 min): solutions/test_order_handler_solution.py と自分のテストを比較し、検証観点の差分を振り返る
  2. リファクタリング提案 (15 min): テスト容易性の観点から改善したいリファクタリング案を議論する
  3. CI/CD統合の検討 (15 min): GitHub ActionsなどのCIに接続する手順をドキュメント化する(発展課題)
  4. 質疑応答・補足 (10 min): 残った疑問点の解消と学習の振り返り

About

AWS Lambda testing workshop with pytest and moto

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages