2011-08-30 4 views
5

test2.txt이라는 파일에 다음 내용이 있습니다.python doctest 예외 테스트 처리

>>> def faulty(): 
... yield 5 
... return 7 
Traceback(most recent call last): 
SyntaxError: 'return' with argument inside generator(<doctest test.txt[0]>,line 3) 

나는 python -m test2.txt 테스트 실행을 호출합니다. 아래의 결과는 제 기대치를 훨씬 뛰어 넘습니다.

screenshot of terminal output

내 생각은 내 test2.txt 파일에 예상되는 출력을 작성하고이 '거의'나는 콘솔 출력에서 ​​가져온 것과 일치하기 때문에 테스트에 성공해야한다고했다. 'File "G:\"'.... line을 추가하려고 시도 했습니까? 그러나 시험은 여전히 ​​실패했습니다.

답변

8

doctest는 예상되는 예외 형식에 매우주의해야합니다.

Traceback(most recent call last): 당신의 추적 메시지가 지나치게 특정 (또한 잘못된 공백이있다),이 여전히 실패 또한

Traceback (most recent call last):을해야한다 : 당신은 공간을 놓쳤다! 그래서 같이 일치하는 예외에 대해 덜 까다 롭고 doctest가 만들어 doctest가하는 ELLIPSIS 또는 IGNORE_EXCEPTION_DETAIL 플래그를 사용

>>> def faulty(): # doctest: +IGNORE_EXCEPTION_DETAIL 
...  yield 5 
...  return 7 
Traceback (most recent call last): 
SyntaxError: 'return' with argument inside generator (...) 

+0

가 대단히 감사합니다 (ELLIPSIS도 여기서 일 것이다). 초기 텍스트 파일을 __extremely__를 신중하게 수정하기 위해 조언을 따르고 아직 ** 플래그 **를 시도하지는 않았지만 작동합니다. 내 학습이 진행될 때마다 시험을 볼 수 있습니다. – Tracy

+0

이 플래그는 예외 메시지가 무시되도록합니다. – ony