Nosetests está capturando a saída das minhas declarações de impressão. Como contornar isso?

142

Quando digito

$ nosetests -v mytest.py

todas as minhas impressões são capturadas quando todos os testes passam. Quero ver as saídas de impressão, mesmo que tudo passe.

Então, o que estou fazendo é forçar um erro de asserção para ver a saída, assim.

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)

Parece tão hackish, deve haver uma maneira melhor. Esclareça-me, por favor.

Frankie Ribery
fonte
Alguma idéia de como fazê-lo programaticamente?
Yauhen Yakimovich

Respostas:

219

Ou:

$ nosetests --nocapture mytest.py

Ou:

$ NOSE_NOCAPTURE=1 nosetests mytests.py

(também pode ser especificado no nose.cfgarquivo, consulte nosetests --help)

codeape
fonte
3
Obrigado pela resposta útil. Eu também achei útil saber que eu poderia passar este argumento em nose.main () conforme descrito no post: stackoverflow.com/questions/7070501/...
David Hall
1
Caso alguém queira ver a fonte: nose.readthedocs.org/en/latest/plugins/capture.html
Ceasar Bautista
12
A versão curta deste comando é nosetests -s. Para outras opções padrão, consulte a -hajuda ou a página de ajuda sobre o uso básico .
DBN
python3.5 -m "nose" --nocapture
Alex Punnen
1
não funciona para mim, mesmo com essa opção, minhas instruções de impressão não são impressas quando os testes passam
John Smith Opcional:
16

Usar

--nologcapture 

funcionou para mim

Damian
fonte
9

Isso foi adicionado recentemente ao nariz, em vez de --nocapture, faça o seguinte:

nosetests -s

moeabdol
fonte
Isso não fornece uma resposta para a pergunta. Para criticar ou solicitar esclarecimentos a um autor, deixe um comentário abaixo da postagem.
Bhargav Rao
7
O @BhargavRao "faz isso nosetests -s" responde à pergunta (embora sem a menor consideração pela gramática). Não sei por que você está fazendo objeções.
dbliss
1
Observe que -sé a abreviação de letra única da --nocapturebandeira, conforme a documentação .
Joelostblom 11/1118
3

Para integrar com http://travis-ci.org , coloquei isso em .travis.yml :

script:  "python setup.py nosetests -s"

onde setup.py contém:

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