Nice programing

Unittest의 assertEqual 및 iterables-내용 만 확인

nicepro 2020. 11. 21. 09:14
반응형

Unittest의 assertEqual 및 iterables-내용 만 확인


두 개의 반복 가능한 객체의 내용이 같은지 확인하기 위해 unittest에 '괜찮은'방법이 있습니까? 나는 많은 튜플, 목록 및 numpy 배열을 사용하고 있으며 일반적으로 유형이 아닌 내용 만 테스트하고 싶습니다. 현재 나는 단순히 유형을 캐스팅하고 있습니다.

self.assertEqual (tuple (self.numpy_data), tuple (self.reference_list))

얼마 전에이 목록 이해를 사용했습니다.

[self.assertEqual (*x) for x in zip(self.numpy_data, self.reference_list)]

그러나이 솔루션은 실패 할 경우 단일 값만 인쇄하고 다른 길이의 참조 및 데이터 (zip 함수로 인해)에 대해 실패하지 않기 때문에 typecast보다 약간 열등 해 보입니다.


파이썬 3

Python> = 2.7


언제든지 TestCase 클래스에 고유 한 어설 션 메서드를 추가 할 수 있습니다.

def assertSequenceEqual(self, it1, it2):
    self.assertEqual(tuple(it1), tuple(it2))

또는 2.7이 어떻게 정의했는지 살펴보세요 : http://hg.python.org/cpython/file/14cafb8d1480/Lib/unittest/case.py#l621


시퀀스의 항목 순서에 관심이있는 것 같습니다. 따라서 assertItemsEqual/ assertCountEqual는 당신을위한 것이 아닙니다.

Python 2.7 및 Python 3에서 원하는 것은 self.assertSequenceEqual. 이것은 항목의 순서에 민감합니다.

참고 URL : https://stackoverflow.com/questions/7473071/unittests-assertequal-and-iterables-only-check-the-contents

반응형