Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ unittestによるテストの作成 | Testing with unittest and pytest
Python構造化プログラミング

unittestによるテストの作成

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

コードが期待通りに動作することを確認するには、自動テストの作成が不可欠です。Python の unittest モジュールは、テストの作成と整理を簡単に行える組み込みフレームワークです。テストケースは unittest.TestCase を継承したクラスを作成し、その中に test_ で始まるメソッドを定義します。各メソッドはコードの特定の側面を検証します。

テストスイートは、複数のテストケースをまとめて実行できるコレクションです。デフォルトでは、unittesttest_ クラス内のすべての TestCase メソッドを自動的に検出して実行します。期待される結果が得られるかどうかを確認するために、assertEqualassertTrueassertFalseassertRaises などのアサーションメソッドを使用します。これらのアサーションメソッドは、実際の結果と期待される結果を比較し、一致しない場合は失敗を報告します。

テストを実行するには、コマンドラインを使用するか、テストファイルの末尾で unittest.main() を呼び出します。

Note
注意

assertRaises は、assertEqualassertTrue など他のアサーションメソッドとは異なるパターンに従います。最終的な値を検証するのではなく、with 文を使ってコンテキストマネージャとして動作し、保護された領域を作成します。これにより、テスト中にコードの実行を監視し、想定されるエラーを「捕捉」できます。

1234567891011121314151617181920212223
import unittest def add(a, b): return a + b def divide(a, b): return a / b class TestMathFunctions(unittest.TestCase): def test_add_positive_numbers(self): self.assertEqual(add(2, 3), 5) def test_add_negative_numbers(self): self.assertEqual(add(-2, -3), -5) def test_divide_normal(self): self.assertAlmostEqual(divide(10, 2), 5.0) def test_divide_by_zero(self): with self.assertRaises(ZeroDivisionError): divide(10, 0) unittest.main(argv=['first-arg-is-ignored'], exit=False)
Note
注意

この章で使用されている関数 unittest.main() には、この学習環境専用の追加パラメータがいくつか含まれています。これらはプラットフォーム上でコードを正しく実行するためのものであり、今学ぶべきPythonの基本概念には含まれていません。

question mark

関数呼び出しが期待される例外を発生させることを確認するには、どの unittest アサーションメソッドを使うべきですか?

正しい答えを選んでください

すべて明確でしたか?

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

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

セクション 5.  2

AIに質問する

expand

AIに質問する

ChatGPT

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

セクション 5.  2
some-alt