you variable template tag register forget examples did python django debugging testing stdout

python - variable - ¿Cómo veo stdout cuando ejecuto las pruebas de Django?



django template variable (4)

Cuando realizo pruebas con la ./manage.py test , no se muestra lo que envíe a la salida estándar mediante print . Cuando las pruebas fallan, veo un bloque "stdout" por prueba fallida, así que supongo que Django lo atrapa (pero no lo muestra cuando pasan las pruebas).


Probablemente tenga algún corredor de prueba intermedio, como Nariz, interceptando y almacenando stdout. Pruebe ejecutando las pruebas de Django directamente, o escriba a stderr en su lugar.


Sí, este problema es causado por NoseTestSuiteRunner . Add -- -s es una solución difícil pero no la mejor. Intenta agregar líneas de seguimiento en settings.py :

NOSE_ARGS = [''--nocapture'', ''--nologcapture'',]

Lo cual resolvió mis problemas.


Usando las versiones actuales de todos los paquetes relevantes ( Django==1.11.2 , django-nose==1.4.5 y nose==1.3.7 ) es suficiente agregar el indicador --nocapture cuando se ejecutan las pruebas. Por lo tanto, un simple

./manage.py test --nocapture

Será suficiente.

Por supuesto que tienes

TEST_RUNNER = "django_nose.NoseTestSuiteRunner"

en su settings.py


TEST_RUNNER en settings.py , está usando un corredor específico del proyecto que llama a Nose. Nose tiene la opción -s para detener la captura de stdout , pero si ejecuto:

./manage.py test -s

manage.py captura primero y arroja un error de "no such such option". La ayuda para manage.py no menciona esto, pero descubrí que si ejecuto:

./manage.py test -- -s

ignora el -s y me permite capturarlo en el lado del corredor personalizado, pasándolo a Nariz sin ningún problema.