nosetests está capturando el resultado de mis declaraciones impresas. ¿Cómo evitar esto?

142

Cuando escribo

$ nosetests -v mytest.py

todas mis salidas de impresión se capturan cuando pasan todas las pruebas. Quiero ver resultados de impresión, incluso todo pasa.

Entonces, lo que estoy haciendo es forzar un error de aserción para ver el resultado, como este.

class MyTest(TestCase):

    def setUp(self):
        self.debug = False

    def test_0(self):
        a = .... # construct an instance of something
        # ... some tests statements
        print a.dump()
        if self.debug:
            eq_(0,1)

Se siente tan hackear, debe haber una mejor manera. Iluminame por favor.

Frankie Ribery
fuente
¿Alguna idea de cómo hacerlo programáticamente?
Yauhen Yakimovich

Respuestas:

219

Ya sea:

$ nosetests --nocapture mytest.py

O:

$ NOSE_NOCAPTURE=1 nosetests mytests.py

(también se puede especificar en el nose.cfgarchivo, ver nosetests --help)

codeape
fuente
3
Gracias por la útil respuesta. También me pareció útil saber que podría pasar este argumento a nose.main () como se describe en la publicación: stackoverflow.com/questions/7070501/…
David Hall
1
En caso de que alguien quiera ver la fuente: nose.readthedocs.org/en/latest/plugins/capture.html
Ceasar Bautista
12
La versión corta de este comando es nosetests -s. Para otras opciones estándar, consulte la -hayuda o la página de ayuda de uso básico .
dbn
python3.5 -m "nose" --nocapture
Alex Punnen
1
no funciona para mí, incluso con esta opción, mis declaraciones impresas no se imprimen cuando pasan las pruebas
John Smith Opcional
16

Utilizar

--nologcapture 

funciono para mi

Damian
fuente
9

Esto se agregó recientemente a nose en lugar de --nocapture, haga esto:

pruebas de nariz -s

moeabdol
fuente
Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar una aclaración de un autor, deje un comentario debajo de su publicación.
Bhargav Rao
77
@BhargavRao "do this nosetests -s" responde a la pregunta (aunque sin la menor consideración por la gramática). No estoy seguro de por qué te estás oponiendo.
dbliss
1
Tenga en cuenta que -ses la abreviatura de una letra de la --nocapturebandera según la documentación .
joelostblom
3

Para integrarme con http://travis-ci.org , he puesto esto en .travis.yml :

script:  "python setup.py nosetests -s"

donde setup.py contiene:

setup(
    ...
    tests_require=['nose>=1.0'],
    test_suite='nose.collector',
)
Yauhen Yakimovich
fuente