Ich versuche, TDD (testgetriebene Entwicklung) mit zu verwenden pytest
.
pytest
werde nicht print
zur Konsole, wenn ich benutze print
.
Ich benutze es pytest my_tests.py
, um es auszuführen.
Das documentation
scheint zu sagen, dass es standardmäßig funktionieren sollte: http://pytest.org/latest/capture.html
Aber:
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.
Auf meiner Standardausgabekonsole wird nichts gedruckt (nur der normale Fortschritt und wie viele Tests bestanden / fehlgeschlagen sind).
Und das Skript, das ich teste, enthält print:
class Blogger(Site):
get_links(self, posts):
print len(posts) # It won't get printed in the test.
Im unittest
Modul wird standardmäßig alles gedruckt, genau das, was ich brauche. Ich möchte jedoch pytest
aus anderen Gründen verwenden.
Weiß jemand, wie die Druckanweisungen angezeigt werden?
sys.stdout.write("Test")
? Wie wäre essys.__stdout__.write("Test")
? Letzterer sollte immer in das systemdefinierte Standardout schreiben, das die Konsole sein sollte. Wenn die beiden Befehle unterschiedliche Aktionen ausführen, wird stdout geändert. Wenn sie dasselbe tun, ist das Problem etwas anderes.