2011-09-02 15 views
5

リファレンス - http://docs.python.org/library/unittest.html#assert-methodsassertEqualとassertIsの違いは何ですか(assertIsはPython 2.7で導入されました)?

assertEqual(a, b) # checks that a == b 
assertIs(a, b) # checks that a is b <---- whatever that means???? 
+3

ドキュメントを読むと、どのような正確な単語があなたを混乱させましたか? '=='と 'is'演算子について読んだことがありますか? '=='と 'is'演算子の違いを読んだとき、正確な単語はあなたを混乱させましたか?読んでいる資料を引用すると、あなたのことを混乱させた言葉の答えを見つけることができます。 –

+1

[Pythonの 'is'演算子のセマンティクスは何ですか?](http://stackoverflow.com/questions/2438667/what-is-the-semantics-of-is-operator-in-python) –

+0

この回答はあなたに役立ちますhttp://stackoverflow.com/questions/1504717/python-vs-is-comparing-strings-is-fails-sometimes-why/1504742#1504742 –

答えて

14

assertEqualを使用して2つのオブジェクトが同じタイプである必要はないが、彼らは単に同じ値にする必要があります。比較すると、assertIsを使用すると、2つのオブジェクトが同じオブジェクトである必要があります。 ==オペレータのような平等のための

assertEqualテスト:!

演算子<、>、==、> =、< =、および= 2つのオブジェクトの値を比較します。オブジェクトは同じタイプである必要はありません。両方が数字の場合は、共通タイプに変換されます。さもなければ、異なる型のオブジェクトは常に不等号を比較し、一貫していますが任意に順序付けられます。

assertIsisis not演算子と同じオブジェクトのアイデンティティのための試験:

演算子であり、オブジェクト識別のためにテストされていない:xがyはxとyである場合にのみ場合に真であります同じオブジェクト。 xがyでない場合、逆の真理値が得られます。

上記の引用符は、どちらもPythonのマニュアルセクション5.9 Comparisonsに由来しています。

+0

3.xバージョンで不等式の比較が変更されました:それ以外の場合==演算子と!=演算子は、異なる型のオブジェクトが常に等しくないとみなしますが、<, >、> =および<=演算子は、指定された型のペアに対してこれらの演算子を実装しない異なる型のオブジェクトを比較すると型エラーを発生させます。 –

関連する問題