Estoy tratando de usar TDD (desarrollo basado en pruebas) con pytest.
pytestNo printa la consola cuando lo uso print.
Estoy usando pytest my_tests.pypara ejecutarlo.
El documentationparece decir que debería funcionar por defecto: http://pytest.org/latest/capture.html
Pero:
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.
No se imprime nada en mi consola de salida estándar (solo el progreso normal y cuántas pruebas pasaron / fallaron).
Y el script que estoy probando contiene print:
class Blogger(Site):
get_links(self, posts):
print len(posts) # It won't get printed in the test.
En el unittestmódulo, todo se imprime por defecto, que es exactamente lo que necesito. Sin embargo, deseo utilizarlo pytestpor otros motivos.
¿Alguien sabe cómo hacer que se muestren las declaraciones impresas?
sys.stdout.write("Test")? ¿Qué talsys.__stdout__.write("Test")? Este último siempre debe escribir en el stdout definido por el sistema, que debe ser la consola. Si los dos comandos hacen cosas diferentes, entonces se está cambiando stdout; si hacen lo mismo, entonces el problema es otra cosa.