ฉันพยายามที่จะใช้ 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 จะถูกเปลี่ยนไป หากพวกเขาทำสิ่งเดียวกันปัญหาก็คือสิ่งอื่น