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.