Flask Academy · レッスン

テストクライアントとフィクスチャ

テスト用にアプリとクライアントを起動します

レッスン 1/413 ステップ

「テストクライアントとフィクスチャ」はCoddyKit上の無料Flask Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはFlask Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Flask Academyコースには全4レッスンが含まれています。

Flaskアプリをテストする理由

テストがあれば、恐れずにコードを変更できます。pytestを使えば、アプリを手作業で操作しなくても、すべてのルートが数秒で動作することを確認できます。🧪

テストクライアントを知る

Flaskにはtest clientという偽のブラウザーが用意されています。実際のサーバーやネットワークを使わず、メモリ上でルートを呼び出します。

client = app.test_client()
resp = client.get('/')

アプリからクライアントを取得する

app.test_client()を呼び出してクライアントを作成します。返されるオブジェクトには、getやpostなど実際のHTTPメソッドに対応するメソッドがあります。

from app import app
client = app.test_client()

リクエストを送り、レスポンスを取得する

client.get('/')を呼び出すと、レスポンスオブジェクトが返されます。すべてがPython内部ですぐに実行されますが、実際のレスポンスと同じように調べられます。

resp = client.get('/')
print(resp.status_code)

フィクスチャとは

fixtureは、テストの前にpytestが実行する再利用可能なセットアップコードです。クライアントを各所で作り直す代わりに、一度定義して再利用できます。

クライアントフィクスチャを書く

関数に@pytest.fixtureを付け、テストクライアントをyieldします。引数としてその名前を指定したテストには、新しいクライアントが渡されます。

@pytest.fixture
def client():
    yield app.test_client()

名前でフィクスチャを要求する

フィクスチャを使うには、その名前をtest argumentとして追加するだけです。Pytestが一致を検出し、自動的に値を注入します。

def test_home(client):
    resp = client.get('/')
    assert resp.status_code == 200

フィクスチャでのyieldとreturn

yieldを使うと、テスト終了後にクリーンアップを実行できます。yieldより前のコードがセットアップ、後のコードが後片付けになります。

@pytest.fixture
def client():
    yield app.test_client()
    print('cleanup here')

フィクスチャの配置場所

共有フィクスチャはconftest.pyという名前のファイルに置きます。Pytestが自動的に見つけるため、インポートなしですべてのテストファイルから使用できます。

テストファイルの命名

Pytestはtest_で始まるファイルと、同じパターンで命名された関数を検出します。この規則に従えば、1つのコマンドでテストを実行できます。

# file: test_routes.py
def test_home(client):
    ...

すべてのテストを実行する

プロジェクトのルートから、ターミナルでpytestを実行するだけです。すべてのテストファイルを収集して実行し、成功または失敗の概要を表示します。

$ pytest
2 passed in 0.04s

クイックチェック

再利用可能なテストクライアントが必要です。どうすればよいでしょうか。

まとめ:クライアントとフィクスチャ

メモリ上のtest clientについて学び、conftest.pyのfixtureで共有する方法を習得しました。これで、すべてのテストが準備済みのclientから開始されます。🎉

無料で開始

AI チューターと学ぶ Python — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「テストクライアントとフィクスチャ」レッスンは無料ですか?

はい。「テストクライアントとフィクスチャ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Flask Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Flask Academyコースには全4レッスンが含まれています。

「テストクライアントとフィクスチャ」で何を学びますか?

テスト用にアプリとクライアントを起動します ブラウザで直接実行するハンズオンコードでFlask Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Flask Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのFlask Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「テストクライアントとフィクスチャ」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このFlask Academyレッスンでコードを書いて実行できますか?

はい。すべてのFlask Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. テストクライアントとフィクスチャ
  2. ルートとJSONをアサートする
  3. テスト用データベースでテストを分離する
  4. 認証が必要なエンドポイントをテストする
← Flask Academyに戻る