quando ho eseguito test con ./manage.py test
, qualunque cosa io mando sullo standard output attraverso print
non mostra. Quando i test falliscono, vedo un blocco "stdout" per test fallito, quindi credo che Django lo intrappoli (ma non lo mostri quando i test passano).Come vedo lo stdout quando eseguo i test di Django?
risposta
Controllato TEST_RUNNER
in settings.py
, sta utilizzando un corridore specifico del progetto che chiama Naso. Naso ha la possibilità -s
per impedirgli di catturare stdout
, ma se corro:
./manage.py test -s
manage.py
cattura per primo e genera un errore "tale opzione". L'aiuto per manage.py
non menziona questo, ma ho scoperto che se corro:
./manage.py test -- -s
ignora il -s
e mi permette di catturare sul lato del corridore personalizzato, passarlo a naso senza un problema.
Perché sto usando il framework contrib.sites, specificando --settings per i miei test. Quando lo faccio, il flag -s funziona come previsto, e passa in un altro - prima che il -s lanci un OSError (nessun file di questo tipo). – ken
Solo per la cronaca. Se hai django_south installato in INSTALLED_APPS __after__ django_nose non ti permetterà di dare le opzioni per nose (come -s). Devi mettere sud __before__ django_nose in INSTALLED_APPS. Era il problema con me – yakxxx
Stranamente questo sembra funzionare per me con 'print (...)', ma l'output di una bella stampa con 'pprint.pprint (...) 'non viene visualizzato nella console. –
Probabilmente hanno qualche test runner intermedi, come il naso, intercettare e memorizzare stdout. Prova a eseguire direttamente i test di Django oppure scrivi invece a stderr.
Avevi ragione. L'esecuzione diretta dei test di django non funziona perché ci sono molte impostazioni che il runner personalizzato fa, ma sono riuscito a rintracciare il problema e correggerlo. Ora questa è la mia prima domanda qui, quindi è ok modificare la domanda per includere la soluzione come sopra? Grazie! – hsribei
La cosa migliore è pubblicare la tua risposta. –
Proprio fatto. Grazie! – hsribei
Sì, questo problema è causa di NoseTestSuiteRunner
. Aggiungi -- -s
è una soluzione complicata ma non la migliore. Tenta di aggiungere le linee seguire le settings.py
:
NOSE_ARGS = ['--nocapture',
'--nologcapture',]
che ha risolto i miei problemi.
Questa è la risposta corretta. Il metodo '- -s' causa effetti collaterali indesiderati. – adam
Utilizzando le versioni correnti di tutti i pacchetti rilevanti (Django==1.11.2
, django-nose==1.4.5
e nose==1.3.7
) è sufficiente aggiungere il flag --nocapture
quando si esegue i test. Così un semplice
./manage.py test --nocapture
sarà sufficiente.
Certo, naturalmente, che avete
TEST_RUNNER = "django_nose.NoseTestSuiteRunner"
nel vostro settings.py
- 1. Come eseguo tutti i miei test PHPUnit?
- 2. Ho creato i test NUnit, ora come li eseguo?
- 3. Come posso mantenere i dati di test dopo che i test di Django sono stati completati?
- 4. Come disattivare i soccorritori nelle app Ruby on Rails quando eseguo test funzionali?
- 5. Vagrant non sta inoltrando quando eseguo django runserver su ssh
- 6. osservando lo stdout di un altro processo
- 7. Come vedo i registri su parse-server?
- 8. Come reindirizzare lo stdout in benedetto?
- 9. Come vedo i comandi eseguiti da GNU?
- 10. come ottenere lo stdout in Console.app
- 11. Come reindirizzare lo stdout per un sottoprocesso?
- 12. Firebug: come vedo i parametri GET?
- 13. Test di Django - patch object in tutti i test
- 14. Quando si chiama Edge.js da C#, come si agganciano lo stdout e lo stderr?
- 15. Catturare/reindirizzare internamente lo stdout?
- 16. Swift: come svuotare lo stdout dopo println?
- 17. Esegui i test di django-sedano su Django 1.8
- 18. Come visualizzare l'output del registro di autoconfigurazione durante i test di avvio primaverili (test di integrazione)
- 19. Django test memorizzati i dati di sessione nei test
- 20. Come posso impedire a Resharper di eseguire il mio progetto Specifiche quando eseguo tutti i test dalla soluzione?
- 21. Duplicare lo stdout allo stderr
- 22. Supervisord non mostra lo stdout dai processi
- 23. Lo stdout del processo figlio NodeJS sono tutti i numeri
- 24. Viene chiamato l'inizializzatore di Rails quando eseguo la console rails
- 25. Come creare lo schema hbm2ddlExport per registrare lo schema su stdout?
- 26. Come chiamare ipdb quando un test fallisce nel test di django?
- 27. Test fallito in prova se scrive su stdout senza newline
- 28. Come posso eseguire i test a livello di progetto Django?
- 29. Come mai quando eseguo uno script .php in Ubunutu, è sufficiente eseguire lo script stesso?
- 30. Come disabilitare console.log quando non eseguo il debug?
aggiungere l'opzione '-s' –
Si dovrebbe contrassegnare si possiede risposta come corretta dal momento che è. – Catskul