와 함께 TDD (테스트 중심 개발)를 사용하려고합니다 pytest
.
내가 사용할 때 콘솔에 pytest
없습니다 .print
print
나는 pytest my_tests.py
그것을 실행하는 데 사용 하고 있습니다.
는 documentation
: 그것은 기본적으로 작동한다고 말할 것 http://pytest.org/latest/capture.html
그러나:
import myapplication as tum
class TestBlogger:
@classmethod
def setup_class(self):
self.user = "alice"
self.b = tum.Blogger(self.user)
print "This should be printed, but it won't be!"
def test_inherit(self):
assert issubclass(tum.Blogger, tum.Site)
links = self.b.get_links(posts)
print len(links) # This won't print either.
표준 출력 콘솔에 아무것도 인쇄되지 않습니다 (정상 진행 상태 및 몇 번의 테스트 통과 / 실패).
그리고 내가 테스트하는 스크립트에는 인쇄가 포함되어 있습니다.
class Blogger(Site):
get_links(self, posts):
print len(posts) # It won't get printed in the test.
unittest
모듈 에서는 기본적으로 모든 것이 기본적으로 인쇄되므로 정확히 필요합니다. 그러나 pytest
다른 이유로 사용 하고 싶습니다 .
인쇄 문을 표시하는 방법을 아는 사람이 있습니까?
sys.stdout.write("Test")
? 어때요sys.__stdout__.write("Test")
? 후자는 항상 시스템 정의 stdout에 작성해야하며 콘솔이어야합니다. 두 명령이 서로 다른 작업을 수행하면 stdout이 변경됩니다. 그들이 똑같은 일을하면 문제는 다른 것입니다.