파이썬에서 assertEquals vs. assertEqual


184

파이썬 assertEqualsassertEqual파이썬에 차이점이 있습니까?unittest.TestCase 있습니까?

그리고 없다면, 왜 두 가지 기능이 있습니까? 편의를 위해서만?

답변:


209

좋은 질문!

사실, 파이썬 2.6, 모두 assertEqualassertEquals편의 별칭이다 failUnlessEqual. 소스는 다음과 같이 선언합니다.

 # Synonyms for assertion methods
 assertEqual = assertEquals = failUnlessEqual

에서 파이썬 3 , 당신의 포인트로, failUnlessEqual명시 적으로 사용되지 않습니다. assertEquals이 의견을 수행 :-)

어설 션 방법의 동의어

# 복수는 문서화되어 있지 않습니다. 사용을 자제 할 수 있도록 보관하십시오.

# 더 추가하지 마십시오. 제거하지 마십시오.

# 이들에 대한 지원 중단주기를 거치는 것은 많은 사람들을 귀찮게 할 것입니다.

결론은 Python 2.x에 원하는 것을 사용해야하지만 assertEqualPython 3에 대한 경향이 있다는 것 입니다.


34
실제로 복수에 대한 의견은 모호합니다. "복수"는 문서화되어 있지 않습니다. 마지막 문장은이를 이해하기 위해 다음과 같이 's'로 끝나는 메소드 이름을 의미 assertEquals합니다. 그러나 문법적으로, equals 는 복수형이 아니라 단수형 (3 인칭) 동사의 형태입니다. 나는 당신이 주석 작성자의 의미를 정확하게 이해했다고 생각하지만 '복수'라는 단어는 잘못되었습니다.
LarsH

45

3.3 업데이트 : 26.3.7.1.1 부터 . 더 이상 사용되지 않는 별칭 :

역사적인 이유로 일부 TestCase 메소드에는 더 이상 사용되지 않는 하나 이상의 별명이 있습니다. 다음 표는 더 이상 사용되지 않는 별명과 함께 올바른 이름을 나열합니다.

Method Name   | Deprecated alias | Deprecated alias
--------------+------------------+-----------------
assertEqual() | failUnlessEqual  | assertEquals
...

24

Python 2.7 assertEquals은 더 이상 사용되지 않으므로 Python 3.x 뿐만 아니라 다음과 같습니다.

Method Name            | Deprecated alias(es)
_________________________________________________________
assertEqual()          | failUnlessEqual, assertEquals

에서 25.3.7.1.1. 더 이상 사용되지 않는 별칭


5

나는 이것이 "전체적인 코드 흐름을 의미 적으로 만드는 별명"과 "별명 한 방법"사이의 긴장이라고 생각한다. 개인적으로 나는 읽고 싶은 것을 발견했다

failIf(some_condition)

위에

assertFalse(some_condition)

하지만 좋아

assertEqual(a, b)

다른 두 개 ( assertEquals(a, b)내 문법 감각을 방해).

앞으로는 "한 가지 확실한 방법"이 우선합니다.


3

http://docs.python.org/library/unittest.html 에서 assertEquals에 대한 언급이 없습니다 . 그러나 TestCase를 가져온 다음 "help (TestCase)"를 수행하면 나열됩니다. 편의상 동의어 일 뿐이라고 생각합니다.


10
. 그래,하지만 심하게 진언 :-(은 "그것을 할 수있는 단 하나의 확실한 방법"나누기
알렉스 마르 텔리

4
@Alex-당신은 그것에 대해 나로부터 논쟁을 얻지 못할 것입니다.
Fred Larson

0

특정 질문에 대한 답변이 아니라는 것을 알고 있지만 검색하는 동안 여기에 있다면

using deprecated method assertEquals()

호출을 .assertEqual ()로 변경하면됩니다 (equals에서 's'를 제거하십시오)


-1

assertEquals가 필요하다는 점을 제외하면 거의 동일합니다. 다음과 같이 assertEqual을 사용하는 것이 좋습니다.

# Synonyms for assertion methods
# The plurals are undocumented.  Keep them that way to discourage use.
# Do not add more.  Do not remove.
# Going through a deprecation cycle on these would annoy many people.


      assertEquals = assertEqual

온라인 소스 : https://github.com/python/cpython/blob/e42b705188271da108de42b55d9344642170aa2b/Lib/lib2to3/fixes/fix_asserts.py


1
기술적으로는 맞지만 이름 중 하나는 더 이상 사용되지 않으며 다른 이름은 사용되지 않습니다. 연결 한 코드는 더 이상 사용되지 않는 이름을 더 이상 사용되지 않는 이름으로 다시 작성하기위한 것입니다.
Marius Gedminas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.