필자가 파이썬에서 가지고있는 프로젝트의 테스트 스크립트를 작성한 직후, 두 객체의 값이 같은지 확인하는 것은 foo == bar
처럼 간단하지 않다는 것을 알게되었습니다. 예를 들어, 나는 속성으로 팬더 dataframe을 가진 개체 dashboard
, 그래서 나는 그 __eq__
방법을 정의 : 그것은 각 개체의 사전을 비교Python에서 두 객체의 속성이 동등한 지 테스트하는 일반적인 방법이 있습니까?
def __eq__(self, other):
vals = [self.__dict__[k] == other.__dict__[k] for k in self.__dict__.keys()]
vals = [v if isinstance(v, bool) else all(v) for v in vals]
return all(vals)
, 이러한 비교의가 아닌 다른 뭔가를 산출하는 경우 부울 (예 : 데이터 프레임)은 all()
을 적용하여 단일 부울로 줄입니다. 그런 다음 all()
을이 전체 특성 비교 목록에 적용하여 self
및 other
의 모든 특성이 동일한 지 여부를 테스트합니다.
이 클래스는 여러 클래스에서이 __eq__
정의를 사용했으며, 상위 클래스 인 Test 클래스의 비교 방법에도 비슷한 것을 사용했습니다. 나는 일할 시험을 가지고 있지만, 좀 더 우아하고 효율적인 방법이 있다면 궁금해. (면책 조항 : 일반적으로 OOP뿐 아니라 테스트는 새로운 것이지요.)
당신이 시험에 대해 얘기하고 : 당신은 유닛 테스트, 또는 Pytest 같은 테스트 프레임 워크를 사용한다; 이것들은 이런 종류의 일을하기 위해 많은 기능을 내장하고 있습니다. – MrE