Próbuję używać TDD (programowanie oparte na testach) z pytest
.
pytest
nie print
do konsoli, kiedy używam print
.
Używam go pytest my_tests.py
do uruchomienia.
documentation
Zdaje się mówić, że to powinno działać domyślnie: http://pytest.org/latest/capture.html
Ale:
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.
Nic nie jest drukowane na mojej standardowej konsoli wyjściowej (tylko normalny postęp i ile testów przeszło / zakończyło się niepowodzeniem).
A skrypt, który testuję, zawiera print:
class Blogger(Site):
get_links(self, posts):
print len(posts) # It won't get printed in the test.
W unittest
module wszystko jest domyślnie drukowane, czyli dokładnie to, czego potrzebuję. Chciałbym jednak użyć pytest
z innych powodów.
Czy ktoś wie, jak wyświetlić instrukcje drukowania?
sys.stdout.write("Test")
? A co powieszsys.__stdout__.write("Test")
? Ten ostatni powinien zawsze zapisywać do standardowego wyjścia zdefiniowanego przez system, którym powinna być konsola. Jeśli te dwie komendy robią różne rzeczy, to stdout jest zmieniane; jeśli robią to samo, problem jest inny.