Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ PytestにおけるAssert文の使用:テスト条件の検証 | Pytestフレームワークの習得
Python構造化プログラミング
セクション 4.  3
single

single

bookPytestにおけるAssert文の使用:テスト条件の検証

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

assert 文は、条件が True であることを検証するために使用。条件が False の場合、テストは失敗となる。Pytest は基本的な assert を拡張し、アサーションが失敗した際に詳細な出力を提供するため、問題の原因を理解しやすくなる。

シンプルなアサーション:

条件が True と評価されることを確認。False と評価された場合、Pytest は AssertionError を発生させ、テストを失敗としてマークする。

assert condition

次の例では、word.isupper()True が大文字の場合に word を返す必要がある。そうでない場合、テストは失敗する。

def test_is_uppercase():
    word = "HELLO"
    assert word.isupper()

比較アサーション:

assert actual == expected

操作の結果(actual)が期待値(expected)と一致することを検証。

def test_addition():
    assert add(5, 3) == 8, "The addition function should return 8 for 5 + 3"

ここでは、add 関数が 2 つの数値を正しく加算するかをテスト。カンマの後のメッセージは、テストが失敗した場合に追加の情報を提供。

詳細なフィードバック付きアサーション:

assert condition, message

アサーションが失敗した際に表示されるカスタムエラーメッセージを指定し、問題の詳細を提供。

def test_multiply():
    result = multiply(2, 5)
    assert result == 10, f"Expected 10, got {result}"

このアサーションは、multiply 関数が 102 の掛け算で 5 を返すかどうかを確認。カスタムメッセージにより、期待される結果と実際の結果の違いが明確になる。

例外に対するアサーション:

pytest.raises(ExceptionType)

特定の例外がコードブロックで発生することを確認。

import pytest

def divide(x, y):
    return x / y

def test_divide_zero():
    with pytest.raises(ZeroDivisionError):
        divide(10, 0)

このテストは、ゼロによる除算が ZeroDivisionError を発生させることを保証。コードのエラーハンドリングをテストする際に重要。

高度なアサーション:

リストや辞書の内容、アプリケーション内のより複雑な状態など、より複雑な条件を検証するためにアサーションを使用。

def test_inventory():
    inventory = ["apple", "banana", "cherry"]
    assert "banana" in inventory, "Banana should be in the inventory"

このテストは、リスト内に特定のアイテムが存在するかを確認し、アイテムが存在しない場合に明確なフィードバックを提供。

タスク

スワイプしてコーディングを開始

次の条件を検証するために、pytestのテスト関数を作成してください。

  1. is_even(4) を呼び出した結果が True であることを確認します。
  2. add(2, 3) を呼び出した結果が 5 であることを確認します。
  3. multiply(3, 7) を呼び出した結果が 21 であること、およびアサーションが失敗した場合には詳細なエラーメッセージを表示することを確認します。
  4. divide(10, 0) を呼び出した際に ZeroDivisionError が発生することを確認します。これには try / except ブロックと assert 文を使用して検証できます。
  5. 文字列 'grape'fruit_list に存在することを確認します。

各テストは test_ プレフィックスを付けて個別の関数として記述してください。 検証には assert 文を使用してください。 詳細な失敗メッセージには、アサーション失敗時に実際の結果を表示するf-stringを使用してください。

解答

Switch to desktop実践的な練習のためにデスクトップに切り替える下記のオプションのいずれかを利用して、現在の場所から続行する
すべて明確でしたか?

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

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

セクション 4.  3
single

single

AIに質問する

expand

AIに質問する

ChatGPT

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

some-alt