Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ Pytestフレームワーク:自動テストのセットアップと実行 | Pytestフレームワークの習得
/
Python構造化プログラミング

bookPytestフレームワーク:自動テストのセットアップと実行

メニューを表示するにはスワイプしてください

インストール

まず最初に、Pytest をインストールします。この手順は Python のパッケージマネージャーである pip を使うことで簡単に行えます。コマンドラインまたはターミナルを開き、次のコマンドを入力します:

pip install pytest

プロジェクトの仮想環境内で実行することを推奨します。

構文の説明

Pytest が Python コミュニティで広く支持されている理由の一つは、そのシンプルで分かりやすい構文です。他のテストフレームワークと異なり、Pytest では非常に読みやすいテストコードを書くことができます。概要は以下の通りです:

  • テストファイル: pytest は test_ で始まる、または _test.py で終わるファイルを認識します;
  • テスト関数: これらのファイル内で test_ で始まる関数は、自動的にテスト関数として pytest に認識されます;
  • アサーション: Python 標準の assert 文を使って、特定の条件が満たされているかを検証します。

コードサンプル

学んだ内容を簡単な例で確認しましょう。2つの数値を加算する add という関数があるとします。Pytest を使ったテストの書き方は次の通りです:

# content of test_example.py
def add(a, b):
    return a + b

def test_add():
    assert add(2, 3) == 5
    assert add('space', 'ship') == 'spaceship'

このコードサンプルでは、数値と文字列の2つのテストを示しています。assert 文で関数が期待通りに動作するかを確認しています。

テストの実行方法と結果の解釈

Pytest でテストを実行するのは非常に簡単です。テストファイルがあるディレクトリに移動し、次のコマンドを実行します:

pytest

Pytest はディレクトリ内のすべてのテストを自動的に検出して実行し、各テストが成功したか失敗したかを示すレポートを表示します。出力例は以下の通りです:

===================== test session starts ======================
collected 2 items

test_example.py ..                                         [100%]

====================== 2 passed in 0.12s =======================

ドット はテストが成功したことを示します。Pytest は失敗したテストについて、行番号や失敗理由など詳細な情報を提供するため、問題の特定と修正が容易です。

===================== test session starts ======================
collected 2 items

test_example.py .F                                         [100%]

====================== FAILURES ==========================
____________________ test_add _________________________

    def test_add():
>       assert add(2, 3) == 8
E       AssertionError: assert 5 == 8
E        +  where 5 = add(2, 3)

test_example.py:6: AssertionError
===================== 1 passed, 1 failed in 0.23s ======================

結果の解釈

  • Passed (.): テストが正常に実行され、すべてのアサーションが True であった場合;
  • Failed (F): テスト内のアサーションが True でなかった場合、問題があることを示します;
  • Skipped (s): 条件や依存関係によってテストがスキップされた場合。

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 4.  2

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 4.  2
some-alt