カテゴリ: Flask 更新日: 2025/12/22

FlaskアプリのテストをGitHub Actionsで自動化する方法まとめ!初心者向け解説

FlaskアプリのテストをGitHub Actionsで自動化する方法まとめ
FlaskアプリのテストをGitHub Actionsで自動化する方法まとめ

先生と生徒の会話形式で理解しよう

生徒

「Flaskアプリのテストを自動化したいのですが、どうすれば良いですか?」

先生

「GitHub Actionsを使うと、Flaskのテストを自動化して、プルリクエストやコミットのたびにテストを実行できます。」

生徒

「GitHub Actionsって聞き慣れないですが、初心者でも使えますか?」

先生

「はい、設定ファイルを書くだけで簡単に自動化できます。順を追って解説しますので安心してください。」

1. GitHub Actionsとは?

1. GitHub Actionsとは?
1. GitHub Actionsとは?

GitHub Actionsは、GitHub上で決められた作業を自動で実行してくれる仕組みです。難しそうに聞こえますが、「特定のタイミングで決まった操作を代わりにやってくれるロボット」と考えると分かりやすいです。Flaskアプリ開発では、コードを保存・共有するたびに、テストや確認作業を自動で行わせる目的でよく使われます。

たとえば、手動で毎回テストを実行する代わりに、GitHubにコードを送信した瞬間に、自動でテストが始まるように設定できます。これにより「テストを忘れていた」「動くと思っていたらエラーがあった」といったミスを防げます。

初心者でも、特別な操作は不要で、用意された設定ファイルを書くだけで使えるのが特徴です。以下は「プッシュされたら処理を実行する」という考え方をイメージするための、とても簡単なサンプルです。


on:
  push:
    branches: [ main ]

このように書くことで、「mainブランチにコードが送られたら何かを実行する」というルールをGitHubに伝えられます。実際のテスト内容は後ほど設定しますが、まずは「自動で動く仕組みがある」という点を理解することが大切です。

2. GitHub Actionsの設定ファイルの場所

2. GitHub Actionsの設定ファイルの場所
2. GitHub Actionsの設定ファイルの場所

GitHub Actionsを使うときは、リポジトリ(GitHubに置いているプロジェクト)の中に、決まった場所と名前で設定ファイルを用意します。具体的には、プロジェクトのルートに.githubフォルダを作り、その中にworkflowsフォルダを作成します。最終的に.github/workflowsという形になればOKです。

このworkflowsフォルダの中に、.ymlまたは.yamlという拡張子のファイルを置くと、GitHubが「これは自動実行の手順書だな」と判断して読み込んでくれます。ファイル名は自由ですが、例としてflask-ci.ymlのように内容が想像できる名前にしておくと管理が楽です。

イメージしやすいように、最低限の配置は次のようになります(中身は後で書き足していきます)。


your-repo/
  .github/
    workflows/
      flask-ci.yml

つまり「どこに置くか」が一番大事で、ここさえ間違えなければGitHub Actionsは動き始めます。逆に、フォルダ名のスペルが違ったり、別の場所に置いてしまうと、設定を書いても反映されないので注意してください。

3. Flaskアプリのテスト自動化の基本設定

3. Flaskアプリのテスト自動化の基本設定
3. Flaskアプリのテスト自動化の基本設定

Flaskアプリでテストを自動化するときは、まず「テストを実行するコマンド」をGitHub Actionsに覚えさせます。ここでは初心者に定番のpytestを使う例で紹介します。ポイントは、GitHub上のまっさらな環境(Linux)に、ソースコードを取り出して、Pythonを用意して、必要なライブラリを入れてからテストを走らせる、という順番です。

以下は、プッシュやプルリクエストのタイミングでテストを動かす最小構成のサンプルです。コピペして動く形に近いので、まずはこのまま配置して試すのがおすすめです。


name: Flask CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: 3.11
      - name: Install dependencies
        run: |
          pip install -r requirements.txt
          pip install pytest
      - name: Run tests
        run: |
          pytest

流れをかみ砕くと、actions/checkoutでリポジトリの中身を取り出し、setup-pythonでPythonの実行環境を準備します。その後pipで依存ライブラリとpytestをインストールし、最後にpytestコマンドでテストを実行します。テストに失敗すると処理が止まり、GitHub上で「失敗した」と分かるので、見落とし防止にも役立ちます。

(参考)pytestが動く最小のテスト例

テストファイル名はtest_で始めるのが一般的です。例えばプロジェクト内にtests/test_sample.pyのようなファイルを作り、まずは「必ず通るテスト」を1つ置いて、Actionsが動くか確認するとスムーズです。


def test_sample():
    assert 1 + 1 == 2

このテストが通れば、GitHub Actions側の設定とpytestの実行がひとまず成功しているサインになります。あとは、Flaskの機能に合わせてテストを少しずつ増やしていけばOKです。

4. coverage.pyを使ったテストカバレッジ測定

4. coverage.pyを使ったテストカバレッジ測定
4. coverage.pyを使ったテストカバレッジ測定

テストが自動で動くようになったら、次に気になるのが「ちゃんと重要な部分までテストできているか?」という点です。そこで役立つのがcoverage.pyです。coverage.pyは、テスト実行中に「どのファイルの、どの行が通ったか」を記録してくれるツールで、テストの当たり具合(テストカバレッジ)を数字で確認できます。

たとえばカバレッジが低いと、「テストを書いたつもりでも、実はほとんど動かしていないコードがある」と気づけます。逆に高いほど安心材料になりますが、まずは“未テストの場所を見つける”目的で使うのが分かりやすいです。

GitHub Actionsに組み込む場合は、テスト実行をcoverage runに置き換えるだけでOKです。以下のように追加すると、テストと同時にカバレッジの集計まで自動で行えます。


      - name: Install coverage
        run: pip install coverage
      - name: Run tests with coverage
        run: |
          coverage run -m pytest
          coverage report

coverage reportを実行すると、結果が文字の一覧で表示されます。ここで「どのファイルが何%テストされたか」をざっくり把握できるので、初心者でも改善ポイントを見つけやすくなります。テストを増やすと数字が上がっていくので、成長が見えるのもメリットです。

5. HTMLレポートを作成して確認する方法

5. HTMLレポートを作成して確認する方法
5. HTMLレポートを作成して確認する方法

coverage.pyはHTML形式のレポートも作成可能です。ブラウザで開くと、未テストの行が赤、テスト済みの行が緑で表示されるので、視覚的に確認できます。


      - name: Generate HTML report
        run: coverage html

GitHub ActionsのアーティファクトとしてHTMLレポートをアップロードすれば、チーム全員で確認可能です。

6. 自動化のメリット

6. 自動化のメリット
6. 自動化のメリット

GitHub ActionsでFlaskアプリのテストを自動化すると、次のようなメリットがあります。

  • プッシュやプルリクエストのたびにテストが自動で走る
  • カバレッジ測定でテスト漏れがすぐに分かる
  • チーム全員が最新のテスト結果を確認できる
  • 手動でのテスト実行ミスを防止できる

7. 実践のポイント

7. 実践のポイント
7. 実践のポイント

初心者の方は、まず最小限のテストコードでGitHub Actionsを動かすことから始めましょう。その後、coverage.pyでカバレッジを確認しながら、少しずつテストを増やすと無理なく自動化を習得できます。さらに、必要に応じて通知機能を設定すれば、テストが失敗した場合にSlackやメールで知らせることも可能です。

8. ポイント整理

8. ポイント整理
8. ポイント整理

FlaskアプリのテストをGitHub Actionsで自動化するには、.github/workflowsにYAMLファイルを作成し、pytestやcoverage.pyを組み込むのが基本です。自動化により、テストの実行漏れを防ぎ、カバレッジを可視化しながらチームで効率的に開発できます。初心者でも、順を追って設定すれば安全に自動化を始められます。

カテゴリの一覧へ
新着記事
New1
Django
Djangoプロジェクトのディレクトリ構造を完全解説!初心者でも迷わないフォルダの見方
New2
Flask
Flask×Flask-SocketIOでチャットアプリを作る流れを初心者向けにやさしく解説
New3
Flask
Flaskアプリの作り方を基礎から学ぼう!初心者が覚えるべき開発の流れとは?
New4
Flask
Flask-WTFでファイルアップロードフォームを完全ガイド!初心者でもわかる画像やPDFのアップロード方法
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Flask
Flask-Loginでユーザー認証を完全ガイド!初心者でもわかるログイン処理の作り方
No.3
Java&Spring記事人気No3
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.4
Java&Spring記事人気No4
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.5
Java&Spring記事人気No5
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
No.6
Java&Spring記事人気No6
Python
Pythonでリストを文字列に変換する方法を完全ガイド!初心者でもわかるjoinの使い方
No.7
Java&Spring記事人気No7
Python
Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方をやさしく解説
No.8
Java&Spring記事人気No8
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本