2012-06-20 3 views
14

당신은 그런 기능을 위해 unittest -cases를 작성하려면 :인쇄 문을 테스트하는 방법은 무엇입니까?

def test_me(a): 
    for b in c: 
     print do_something(a,b) 

가 처음에는 그냥 문자열에 do_something의 출력을 수집 한 후 인쇄 함께 전체 출력을 테스트하기 위해, 그것을 반환에 대해 생각했다. 그러나 이러한 루프가 상황에 따라 버퍼 문자열이 매우 커질 수 있으므로 항상 편리하지는 않습니다. 인쇄물이 반환되고 반환되지 않을 때 출력물을 테스트하기 위해 할 수있는 일은 무엇입니까?

+1

이 정보가 도움이 되셨습니까? http://stackoverflow.com/questions/5136611/capture-stdout-from-a-script-in-python –

+1

'yield' 문을 사용 하시겠습니까? –

+0

@both comments above : 나는 unittesting에 대한 전형적인 접근법이 무엇인지 모릅니다. 둘 다 가능할 수도 있습니다. – erikbwork

답변

12

printsys.stdout으로 인쇄되며 원하는 경우 사용자 자신의 개체로 재 할당 할 수 있습니다. 객체에 필요한 유일한 것은 write 함수이며 단일 문자열 인수를 사용합니다.

파이썬 2.6 이후로 스크립트의 맨 위에 from __future__ import print_function을 추가하여 print을 언어 구조가 아닌 함수로 변경할 수도 있습니다. 이렇게하면 print을 자신의 기능으로 재정의 할 수 있습니다.

관련 문제