>

정직하게 나는 항상 assertDictEqual 를 사용했습니다 , 언젠가는 그것을 사용하지 않았을 때 정보를 얻었 기 때문에, 그와 같은 딕 트는 같지 않습니다.

하지만 pyzwyz에 의해 dicts를 비교할 수 있다는 것을 알고 있습니다  연산자 :

==

실제로 >>> {'a':1, 'b':2, 'c': [1,2]} == {'b':2, 'a':1, 'c': [1,2]} True 가 필요할 수있는 곳 ?

assertDictEqual
  • 답변 # 1

    기본적으로, 그것은 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
    
    

    vs.

    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]}
    
    

    후자는 차이점이 무엇인지 정확히 알 수 있으므로 직접 해결할 필요는 없습니다. 표준 assertEqual 를 사용할 수 있습니다.   assertDictEqual 대신 동일한 결과로;문서 당

    와이즈 비즈 unit

    이것이 단위 테스팅과 관련이 있다고 가정합니다. assertDictEqual 메소드는 dicts를 비교하고 True 또는 False로 평가할뿐만 아니라 추가 정보를 제공 할 수 있습니다. 예를 들어 두 가지의 정확한 차이점과 같은 것입니다.

    좋은 IDE에서 유닛 테스트는 잘 통합 될 것이다. TestCase를 추가하고 assertDictEqual을 사용하면 IDE가 테스트를 찾아 실행합니다. 그러면 출력이 읽기 쉬운 형식으로 표시됩니다. 이를 통해 많은 상용구 코드를 절약 할 수 있습니다.

    "=="와 비교할 때 두 개의 동일한 dicts가 같지 않은 경우에 매우 관심이 있습니다.

  • 답변 # 2

    이것은 더 광범위한 질문의 일부입니다 :

    유니트 테스트에는 왜 모든 특수한 주장이 있습니까?

    대답은 UnitTest assert * 메소드의 주요 작업이 테스트 실패시 의미있는 결과를 제공하는 것입니다. 단위 테스트 모듈 코드를 살펴보십시오. 실제로는 주로 그들이하는 일입니다 (그들이하는 일만 ??)

    파이썬이 쉬운 내성을 가진 역동적 인 언어라는 것을 알면 왜 모든 것이 귀찮게 될까요? 그리고 대답은 "unitest가 Java junit 패키지에서 포팅 되었기 때문에 자바에서 그렇게했기 때문입니다 (런타임에 조사하는 것이 얼마나 어렵거나 불가능한가를 감안할 때).

    따라서 권장 사항 : 표준 라이브러리에 대한 테스트를 작성하지 않는 한 unittest를 전혀 사용하지 마십시오. 모두 방해가되지 않습니다. 나는 pytest를 사용합니다. 코도 좋은 옵션 일 수 있습니다. 테스트를보다 빠르고 쉽게 작성할 수 있으며 오류가 발생하면 뛰어난보고 기능을 제공합니다.

    또한 매개 변수화 된 테스트, 픽스처, 테스트 구성, 조롱 등을위한 멋진 기능이 많이 포함되어 있습니다 ...

    단일 unitest를 사용하는 프로젝트를 사용하는 경우에도 pytest로 테스트를 실행하고 많은 장점을 얻을 수 있습니다.

    ...it’s usually not necessary to invoke these methods directly.

  • 이전 javascript - 실행중인 하위 프로세스 출력의 첫 번째 라인 가져 오기
  • 다음 excel - 특정 기준/결과를 충족하는지에 따라 ID 수를 어떻게 얻습니까?