2015-06-19 7 views
6

py.test L'opzione --verbose è necessaria per mostrare le differenze complete sugli errori di asserzione, ma questo visualizza anche il nome completo di ciascun test durante l'esecuzione (che è rumoroso).Come posso mostrare prolissi py.test diff senza progresso di test dettagliato?

Mi piacerebbe che i diff completi mostrassero quando un'asserzione fallisce, ma voglio solo i singoli . da visualizzare quando i test sono in esecuzione. C'è un modo per fare questo?

risposta

2

Sfortunatamente, sembra che non ci sia alcuna configurazione o flag di riga di comando per quello, dal momento che è codificato con hard disk deep inside pytest: quando si definisce --verbose, si ottiene l'intero pacchetto. Tuttavia, sono riuscito a venire con questo hackish mod. Mettere la seguente funzione nel vostro conftest.py:

def pytest_configure(config): 
    terminal = config.pluginmanager.getplugin('terminal') 
    BaseReporter = terminal.TerminalReporter 
    class QuietReporter(BaseReporter): 
     def __init__(self, *args, **kwargs): 
      BaseReporter.__init__(self, *args, **kwargs) 
      self.verbosity = 0 
      self.showlongtestinfo = self.showfspath = False 

    terminal.TerminalReporter = QuietReporter 

Questo è essenzialmente una scimmia-patching, basandosi su interni pytest, non è garantito per essere compatibile con le versioni future e brutto come il peccato. È inoltre possibile rendere condizionale questa patch in base ad altre configurazioni personalizzate dell'argomento della riga di comando.

+0

Questo funziona. Dovresti prendere in considerazione la creazione di un plugin 'py.test' che aggiunge un'opzione a riga di comando per correggere questo comportamento! –

+0

@JaceBrowning Prenderò in considerazione la possibilità di effettuare una richiesta di pull per il plug-in del terminale interno, grazie. – bereal