2011-09-02 3 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을 사용하여 두 물체가 동일한 타입 일 필요는 없다, 그들은 단지 동일한 값으로 할 필요가있다. 비교에서 assertIs을 사용하면 두 객체가 같은 객체 여야합니다. == 오퍼레이터 등 어떤지

assertEqual 시험 :

연산자 <> ==,> =, = < 및 = 두 객체의 값을 비교!. 객체는 동일한 유형을 가질 필요는 없습니다. 둘 다 숫자이면 일반 유형으로 변환됩니다. 그렇지 않으면, 서로 다른 유형의 객체는 항상 동일하지 않으며, 일관되게하지만 임의로 정렬됩니다.

연산자이고 객체 동일성 테스트되지 : 다음 isis not 연산자와 같은 객체 아이덴티티

assertIs 테스트 X는 Y가 참이고, X 및 Y는 경우에만 있다면 같은 대상. x는 y가 아닌 반대의 진리 값을 산출합니다.

위의 인용문은 모두 파이썬 설명서 섹션 5.9 Comparisons에서 발췌 한 것입니다.

+0

3.x 버전에서 불평등 비교가 변경되었습니다 : 그렇지 않으면 == 및! = 연산자는 항상 서로 다른 형식의 개체가 같지 않은 것으로 간주하지만 <, >,> = 및 <= 연산자는 주어진 형식 쌍에 대해 이러한 연산자를 구현하지 않는 다른 형식의 개체를 비교할 때 TypeError를 발생시킵니다. –

관련 문제