nosetests erfasst die Ausgabe meiner print-Anweisungen. Wie kann man das umgehen?

142

Wenn ich tippe

$ nosetests -v mytest.py

Alle meine Druckausgaben werden erfasst, wenn alle Tests bestanden wurden. Ich möchte Druckausgaben sehen, auch wenn alles vorbei ist.

Ich erzwinge also einen Assertionsfehler, um die Ausgabe wie folgt anzuzeigen.

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)

Es fühlt sich so hackisch an, es muss einen besseren Weg geben. Erleuchte mich bitte.

Frankie Ribéry
quelle
Irgendeine Idee, wie man es programmatisch macht?
Yauhen Yakimovich

Antworten:

219

Entweder:

$ nosetests --nocapture mytest.py

Oder:

$ NOSE_NOCAPTURE=1 nosetests mytests.py

(kann auch in der nose.cfgDatei angegeben werden, siehe nosetests --help)

Codeape
quelle
3
Danke für die nützliche Antwort. Ich fand es auch hilfreich zu wissen, dass ich dieses Argument an nas.main () übergeben kann, wie im Beitrag beschrieben: stackoverflow.com/questions/7070501/…
David Hall
1
Für den Fall, dass jemand die Quelle sehen möchte: Nase.readthedocs.org/en/latest/plugins/capture.html
Ceasar Bautista
12
Die Kurzversion dieses Befehls lautet nosetests -s. Weitere Standardoptionen finden Sie entweder in der -hHilfe oder auf der Hilfeseite zur grundlegenden Verwendung .
dbn
python3.5 -m "Nase" --nocapture
Alex Punnen
1
funktioniert bei mir nicht, auch mit dieser Option werden meine Druckanweisungen nicht gedruckt, wenn die Tests bestanden sind
John Smith Optional
16

Verwenden

--nologcapture 

es hat bei mir funktioniert

Damian
quelle
9

Dies wurde kürzlich zur Nase hinzugefügt, anstatt --nocapture dies zu tun:

Nasentests -s

Moeabdol
quelle
Dies gibt keine Antwort auf die Frage. Um einen Autor zu kritisieren oder um Klärung zu bitten, hinterlassen Sie einen Kommentar unter seinem Beitrag.
Bhargav Rao
7
@BhargavRao "do this nosetests -s" beantwortet die Frage (allerdings ohne die geringste Berücksichtigung der Grammatik). Ich bin mir nicht sicher, warum Sie Einwände erheben.
dbliss
1
Beachten Sie, dass dies -sdie Einzelbuchstabenabkürzung des --nocaptureFlags gemäß der Dokumentation ist .
Joelostblom
3

Um mich in http://travis-ci.org zu integrieren, habe ich dies in .travis.yml eingefügt :

script:  "python setup.py nosetests -s"

wo setup.py enthält:

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