본문 바로가기
파이썬

파이썬 Why is assertDictEqual needed if dicts can be compared by `==`?

by º기록 2020. 11. 11.
반응형

솔직히 말해서 저는 항상 assertDictEqual 을 사용했습니다. 왜냐하면 그것을 사용하지 않았을 때 정보를 얻었 기 때문에 동일한 딕셔너리가 같지 않기 때문입니다.

하지만 ... dicts는 == 연산자로 비교할 수 있다는 것을 알고 있습니다.

>>> {'a':1, 'b':2, 'c': [1,2]} == {'b':2, 'a':1, 'c': [1,2]}
True

실제로 assertDictEqual 이 필요한 곳은 어디입니까?

 

해결 방법

 

기본적으로 unittest 가 테스트가 실패한 이유 에 대한 자세한 정보를 제공 할 수 있습니다. 다음 두 테스트를 비교하십시오.

class DemoTest(unittest.TestCase):

    D1 = {'a': 1, 'b': 2, 'c': [1, 2]}
    D2 = {'a': 1, 'b': 2, 'c': [1]}

    def test_not_so_useful(self):
        assert self.D1 == self.D2

    def test_useful(self):
        self.assertDictEqual(self.D1, self.D2)

그리고 그 결과 :

Failure
Traceback (most recent call last):
  File "...x.py", line 86, in test_not_so_useful
    assert self.D1 == self.D2
AssertionError

Failure
Traceback (most recent call last):
  File "...x.py", line 80, in test_useful
    self.assertDictEqual(self.D1, self.D2)
AssertionError: {'a': 1, 'c': [1, 2], 'b': 2} != {'a': 1, 'c': [1], 'b': 2}
- {'a': 1, 'b': 2, 'c': [1, 2]}
?                         ---

+ {'a': 1, 'b': 2, 'c': [1]}


... 일반적으로 이러한 메서드를 직접 호출 할 필요는 없습니다.

 

참조 페이지 https://stackoverflow.com/questions/34414326

 

 

반응형

댓글