single
Pytestにおける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 関数が 10 と 2 の掛け算で 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のテスト関数を作成してください。
is_even(4)を呼び出した結果がTrueであることを確認します。add(2, 3)を呼び出した結果が5であることを確認します。multiply(3, 7)を呼び出した結果が21であること、およびアサーションが失敗した場合には詳細なエラーメッセージを表示することを確認します。divide(10, 0)を呼び出した際にZeroDivisionErrorが発生することを確認します。これにはtry / exceptブロックとassert文を使用して検証できます。- 文字列
'grape'がfruit_listに存在することを確認します。
各テストは test_ プレフィックスを付けて個別の関数として記述してください。
検証には assert 文を使用してください。
詳細な失敗メッセージには、アサーション失敗時に実際の結果を表示するf-stringを使用してください。
解答
フィードバックありがとうございます!
single
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください