Tôi đang cố gắng sử dụng TDD (phát triển dựa trên thử nghiệm) với pytest
.
pytest
sẽ không print
đến bàn điều khiển khi tôi sử dụng print
.
Tôi đang sử dụng pytest my_tests.py
để chạy nó.
Các documentation
dường như để nói rằng nó sẽ hoạt động theo mặc định: http://pytest.org/latest/capture.html
Nhưng:
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.
Không có gì được in vào bảng điều khiển đầu ra tiêu chuẩn của tôi (chỉ là tiến trình bình thường và có bao nhiêu bài kiểm tra đã vượt qua / thất bại).
Và tập lệnh mà tôi đang kiểm tra có chứa bản in:
class Blogger(Site):
get_links(self, posts):
print len(posts) # It won't get printed in the test.
Trong unittest
mô-đun, mọi thứ được in theo mặc định, đó chính xác là những gì tôi cần. Tuy nhiên, tôi muốn sử dụng pytest
cho các lý do khác.
Có ai biết làm thế nào để làm cho các báo cáo in được hiển thị?
sys.stdout.write("Test")
? Thế cònsys.__stdout__.write("Test")
? Cái sau phải luôn luôn ghi vào thiết bị xuất chuẩn do hệ thống xác định, nên là bàn điều khiển. Nếu hai lệnh làm những việc khác nhau, thì thiết bị xuất chuẩn sẽ bị thay đổi; nếu họ làm điều tương tự, thì vấn đề là một cái gì đó khác.