2015-10-27 27 views
18

Ho appena eseguito py.test il mio codice ed ho ottenuto il seguente risultato:Come mostrare gli avvisi in py.test

================== 6 passed, 2 pytest-warnings in 40.79 seconds ======================= 

Tuttavia, non riesco a vedere ciò che py.test vorrebbe mettermi in guardia circa. Come posso attivare l'uscita di avviso sulla console?

py.test --help mi offre la bandiera --strict:

--strict run pytest in modalità rigorosa, gli avvisi diventano errori.

Tuttavia, voglio solo vedere l'output, non far fallire i miei test.

Ho controllato pytest.org e this question ma si preoccupano solo di far valere gli avvertimenti in python, non mostrando gli avvisi generati sulla riga di comando.

risposta

22

In questo caso, pytest-warnings sono avvisi che sono stati generati per pytest e/o it's plugins. Questi avvisi non sono stati generati per il tuo codice. Per elencarli nel rapporto, è necessario utilizzare l'opzione -r w. Ecco parte del py.test --help:

-r chars    show extra test summary info as specified by chars (f)ailed, 
         (E)error, (s)skipped, (x)failed, (X)passed 
         (w)pytest-warnings (a)all. 

Questo permetterà di mostrare le avvertenze contenute nella relazione (parte superiore del record) elencherà quali plugin pytest usano argomenti obsolete (nel mio caso sotto):

... 
================================ pytest-warning summary ================================ 
WI1 /Projects/.tox/py27/lib/python2.7/site-packages/pytest_timeout.py:68 'pytest_runtest_protocol' hook uses deprecated __multicall__ argument 
WI1 /Projects/.tox/py27/lib/python2.7/site-packages/pytest_capturelog.py:171 'pytest_runtest_makereport' hook uses deprecated __multicall__ argument 
... 
+2

In realtà non è vero, quelli sono sempre degli avvertimenti, che non sono generati per il tuo codice. Ho avuto un esempio, in cui ho aggiunto un costruttore '__init__' alla mia classe di test, che ha causato che' py.test' non fosse in grado di utilizzare il test. L'avviso non mi è stato mostrato, anche con '--strict', ma la tua risposta mi ha aiutato a far sì che' py.test' mostri l'avvertimento, di cui la causa era ancora nel mio codice. – Zelphir

Problemi correlati