2013-07-23 10 views
21

Durante il debug dei test di unità (tramite il programma di prova pycharm), è possibile attivare la riga di comando interattiva, ma (diversamente dal debugging di script regolari) i comandi immessi non producono qualsiasi uscita. È un dato di fatto, sembra che stdout viene catturato da qualche parte, perché stderr funziona come previsto:La riga di comando di debug interattivo del test dell'unità Pycharm non funziona

>>> print "a" 
>>> import sys 
>>> sys.stderr.write("moof") 
moof 
>>> sys.stdout.write("moof") 
>>> sys.stderr.write("test") 
test 

È questo il comportamento previsto? Mi piace molto la console di debug interattiva e sarebbe fantastico se si comportasse bene anche durante il debug dei test delle unità.

risposta

40

Questo è probabile perché il tuo runner di prova sta acquisendo stdout ma non stderr.

Io uso py.test quale captures both stdout and stderr quindi non vedo alcun output. Se voglio vedere l'output devo passare il flag -s al mio py.test runner che può essere fatto modificando la configurazione run/debug e aggiungendo questo flag al campo delle opzioni. (Esegui> Modifica Configurazioni> Impostazioni predefinite> test Python> py.test> Aggiungi -s al campo opzioni.)

>>> print 'a' 
a 
>>> import sys 
>>> sys.stderr.write('moof') 
moof 
>>> sys.stdout.write('moof') 
moof 
>>> sys.stderr.write('test') 
test 

Nota: la bandiera -s può ugualmente essere utilizzato con nose tests

+5

Ho fatto clic sul pulsante di upvote fino a quando il mio dito ha iniziato a irrigidirsi – mbatchkarov

+0

(Esegui> Modifica configurazioni> Predefiniti> Prove di Python> py.test> aggiungi -s al campo delle opzioni.) –

+3

(Esegui> Modifica configurazioni> Predefiniti> Prove Python> py.test> aggiungi -s al campo opzioni ------> (Argomenti aggiuntivi)) impostazioni di default test di esecuzione per pytest: (Preferenze> Strumenti> Strumenti di Python Intergrated> runner di test predefinito) –

1

Per unittest è possibile aggiungi '--capture = no' alla configurazione di Pycharm Run/Debug - questo mostrerà tutti gli output in tempo reale

Problemi correlati