Sto cercando di utilizzare TDD (sviluppo test-driven) con pytest.
pytestnon printalla console quando uso print.
Sto usando pytest my_tests.pyper eseguirlo.
La documentationsembra dire che dovrebbe funzionare per impostazione predefinita: http://pytest.org/latest/capture.html
Ma:
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.
Nulla viene stampato sulla mia console di output standard (solo i normali progressi e il numero di test superati / falliti).
E lo script che sto testando contiene print:
class Blogger(Site):
get_links(self, posts):
print len(posts) # It won't get printed in the test.
Nel unittestmodulo, tutto viene stampato per impostazione predefinita, che è esattamente quello di cui ho bisogno. Tuttavia, desidero utilizzarlo pytestper altri motivi.
Qualcuno sa come mostrare le dichiarazioni di stampa?
sys.stdout.write("Test")? Che ne dicisys.__stdout__.write("Test")? Quest'ultimo dovrebbe sempre scrivere sullo stdout definito dal sistema, che dovrebbe essere la console. Se i due comandi fanno cose diverse, allora stdout viene modificato; se fanno la stessa cosa, allora il problema è qualcos'altro.