반응형
출력 파일을 디스크에 쓰는 Python 함수가 있습니다.
Python unittest 모듈을 사용하여 단위 테스트를 작성하고 싶습니다.
파일의 동등성을 어떻게 주장해야합니까? 파일 내용이 예상 내용과 다른 경우 오류가 발생하고 + 차이점 목록이 표시됩니다. unix diff 명령의 출력과 같습니다.
공식 / 권장 방법이 있습니까?
해결 방법
가장 간단한 방법은 출력 파일을 작성한 다음 해당 내용을 읽고 금 (예상) 파일의 내용을 읽고이를 단순한 문자열 같음과 비교하는 것입니다. 동일한 경우 출력 파일을 삭제하십시오. 다른 경우 주장을 제기하십시오.
이런 식으로 테스트가 완료되면 모든 실패한 테스트가 출력 파일로 표시되고 타사 도구를 사용하여 골드 파일과 비교할 수 있습니다 (Beyond Compare는이 기능이 훌륭합니다).
자신 만의 diff 출력을 제공하고 싶다면 Python stdlib에 difflib 모듈이 있음을 기억하십시오. Python 3.1의 새로운 unittest 지원에는 다음과 유사한 diff를 표시하는 데 사용하는 assertMultiLineEqual
메서드가 포함되어 있습니다.
def assertMultiLineEqual(self, first, second, msg=None):
"""Assert that two multi-line strings are equal.
If they aren't, show a nice diff.
"""
self.assertTrue(isinstance(first, str),
'First argument is not a string')
self.assertTrue(isinstance(second, str),
'Second argument is not a string')
if first != second:
message = ''.join(difflib.ndiff(first.splitlines(True),
second.splitlines(True)))
if msg:
message += " : " + msg
self.fail("Multi-line strings are unequal:\n" + message)
참조 페이지 https://stackoverflow.com/questions/3942820
반응형
'파이썬' 카테고리의 다른 글
파이썬 함수를 호출 할 때 목록을 * args로 변환 (0) | 2020.10.30 |
---|---|
파이썬 set ([])은 두 객체가 같은지 어떻게 확인합니까? 이것을 사용자 정의하기 위해 객체는 어떤 메소드를 정의해야합니까? (0) | 2020.10.30 |
파이썬 UnicodeEncodeError : 'latin-1'코덱은 문자를 인코딩 할 수 없습니다. (0) | 2020.10.30 |
파이썬 유형 힌트로 "nullable"반환 유형을 지정하는 방법 (0) | 2020.10.30 |
파이썬 Python의 바이너리 파일에서 데이터 읽기 및 해석 (0) | 2020.10.30 |
댓글