nosetests sta catturando l'output delle mie dichiarazioni di stampa. Come aggirare questo?


142

Quando scrivo

$ nosetests -v mytest.py

tutti i miei output di stampa vengono acquisiti quando tutti i test passano. Voglio vedere le stampe anche se tutto passa.

Quindi quello che sto facendo è forzare un errore di asserzione a vedere l'output, in questo modo.

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)

Sembra così hacker, ci deve essere un modo migliore. Illuminami per favore.


Qualche idea su come farlo in modo programmatico?
Yauhen Yakimovich,

Risposte:


219

O:

$ nosetests --nocapture mytest.py

O:

$ NOSE_NOCAPTURE=1 nosetests mytests.py

(può anche essere specificato nel nose.cfgfile, vedi nosetests --help)


3
Grazie per la risposta utile Ho anche trovato utile sapere che potrei passare questo argomento in nose.main () come descritto nel post: stackoverflow.com/questions/7070501/…
David Hall

1
Nel caso in cui qualcuno voglia vedere la fonte: nose.readthedocs.org/en/latest/plugins/capture.html
Ceasar Bautista

12
La versione breve di questo comando è nosetests -s. Per altre opzioni standard, consultare la guida -ho la pagina della guida per l'uso di base .
dbn

python3.5 -m "nose" --nocapture
Alex Punnen

1
non funziona per me, anche con questa opzione le mie dichiarazioni di stampa non vengono stampate quando i test passano
John Smith Facoltativo


9

Questo è stato aggiunto di recente a nose invece di --nocapture:

nosetests -s


Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti a un autore, lascia un commento sotto il suo post.
Bhargav Rao

7
@BhargavRao "do this nosetests -s" risponde alla domanda (anche se, senza il minimo riguardo per la grammatica). non sono sicuro del motivo per cui stai obiettando.
dbliss,

1
Si noti che -sè l'abbreviazione della lettera singola della --nocapturebandiera come da documentazione .
joelostblom,

3

Per integrarmi con http://travis-ci.org l' ho inserito in .travis.yml :

script:  "python setup.py nosetests -s"

dove setup.py contiene:

setup(
    ...
    tests_require=['nose>=1.0'],
    test_suite='nose.collector',
)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.