Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python関数が例外をスローすることをどのようにテストしますか?


関数が予期された例外をスローしない場合にのみ失敗する単体テストを記述します。

Python関数が例外をスローするかどうかもテストします。

たとえば、Pythonの型安全性をテストするためにPythonシェルに貼り付けるサンプルコードを参照してください。

import unittest
class MyTestCase(unittest.TestCase):
   def test_1_cannot_add_int_and_str(self):
      with self.assertRaises(TypeError):
         1 + '1'
      def test_2_cannot_add_int_and_str(self):
      import operator
      self.assertRaises(TypeError, operator.add, 1, '1')
 unittest.main(exit=False)

テストの実行

出力

そして、端末は次のように出力します-

..

----------------------------------------------------------------------

Ran 2 tests in 0.001s

OK

テスト1では、assertRaisesをコンテキストマネージャーとして使用します。これにより、記録中にエラーが適切にキャッチされ、クリーンアップされます。

コンテキストマネージャーなしで作成することもできます。テスト2を参照してください。最初の引数は、発生すると予想されるエラータイプ、2番目の引数、テストしている関数であり、残りの引数とキーワード引数はその関数に渡されます。

コンテキストマネージャを使用するだけで、はるかにシンプルで読みやすくなります。

予想どおり、1と「1」を追加しようとするとTypeErrorが発生することがわかります。


  1. Python Matplotlibで多変量関数をプロットする方法は?

    Pythonで多変量関数をプロットするには、次の手順を実行できます- ステップ 図のサイズを設定し、サブプロット間およびサブプロットの周囲のパディングを調整します。 ランダムなxを作成します 、 y およびz numpyを使用したデータポイント。 図とサブプロットのセットを作成します。 xを使用して散布図を作成します 、 y およびz データポイント。 ScalarMappableインスタンスのカラーバーを作成します。s 。 図を表示するには、 show()を使用します メソッド。 例 import numpy as np import matpl

  2. PythonでLambda関数を使用する方法は?

    これらは基本的に実行時に作成される匿名の1行関数であり、関数の名前にバインドされていません。 それらはその場で関数の定義を返します。 Lambda関数にはreturnステートメントは含まれていません。常に、式を返します。 関数が期待される場所ならどこにでもラムダ定義を置くことができます。 1回だけ使用され、1つの場所からのみ呼び出される関数があるとすると、ラムダ関数を使用できます。 したがって、名前を付ける必要はなく、そこで機能を定義することができます。したがって、関数の使用を排除し、Lambda式を使用します。 構文 lambda argument: manipulate(argu