nosetests przechwytuje wyniki moich wydruków. Jak to obejść?


142

Kiedy piszę

$ nosetests -v mytest.py

wszystkie moje wydruki są przechwytywane po przejściu wszystkich testów. Chcę zobaczyć wydruki, nawet wszystko przechodzi.

Więc to, co robię, to wymuszenie błędu asercji, aby zobaczyć wyjście, w ten sposób.

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)

To takie hakerskie uczucie, musi być lepszy sposób. Oświeć mnie, proszę.


Masz pomysł, jak to zrobić programowo?
Yauhen Yakimovich

Odpowiedzi:


219

Zarówno:

$ nosetests --nocapture mytest.py

Lub:

$ NOSE_NOCAPTURE=1 nosetests mytests.py

(można go również określić w nose.cfgpliku, patrz nosetests --help)


3
Dzięki za przydatną odpowiedź. Przydało mi się również wiedzieć, że mogę przekazać ten argument do nose.main (), jak opisano w poście: stackoverflow.com/questions/7070501/…
David Hall

1
Na wypadek, gdyby ktoś chciał zobaczyć źródło: nos.readthedocs.org/en/latest/plugins/capture.html
Ceasar Bautista,

12
Krótka wersja tego polecenia to nosetests -s. Inne standardowe opcje można znaleźć w -hpomocy lub na stronie pomocy dotyczącej podstawowego użytkowania .
dbn

python3,5 -m "nos" --nocapture
Alex Punnen

1
nie działa dla mnie, nawet przy tej opcji moje instrukcje drukowania nie są drukowane po przejściu testu
John Smith Opcjonalnie


9

To zostało dodane niedawno do nosa zamiast --nocapture zrób to:

nosetests -s


To nie daje odpowiedzi na pytanie. Aby skrytykować lub poprosić autora o wyjaśnienie, zostaw komentarz pod jego postem.
Bhargav Rao

7
@BhargavRao "do this nosetests -s" odpowiada na pytanie (aczkolwiek bez najmniejszej uwagi na gramatykę). nie jestem pewien, dlaczego się sprzeciwiasz.
dbliss

1
Zauważ, że -sjest to jednoliterowy skrót --nocaptureflagi zgodnie z dokumentacją .
joelostblom

3

W celu integracji z http://travis-ci.org umieściłem to w .travis.yml :

script:  "python setup.py nosetests -s"

gdzie setup.py zawiera:

setup(
    ...
    tests_require=['nose>=1.0'],
    test_suite='nose.collector',
)
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.