web-dev-qa-db-fra.com

Comment puis-je voir stdout lors de l'exécution Django tests?

Quand je passe des tests avec ./manage.py test, tout ce que j'envoie à la sortie standard via print ne montre pas. Lorsque les tests échouent, je vois un bloc "stdout" par test échoué, donc je suppose Django le piège (mais ne le montre pas lorsque des tests passent).

44
Helder S Ribeiro

Vérifié TEST_RUNNER dans settings.py, il utilise un coureur spécifique au projet qui appelle au nez. Nose a le -s option pour l'arrêter de capturer stdout, mais si je cours:

./manage.py test -s

manage.py Cela le capture en premier et jette une erreur "Aucune telle option". L'aide pour manage.py ne mentionne pas cela, mais j'ai trouvé que si je cours:

./manage.py test -- -s

il ignore le -s Et me permet de la capturer sur le côté du coureur sur mesure, le transmettant au nez sans problème.

39
Helder S Ribeiro

Ouais, ce problème est causé par NoseTestSuiteRunner. Ajouter -- -s est délicat et pas la meilleure solution. Essayez d'ajouter les lignes suivantes dans le settings.py:

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

Cela a résolu mes problèmes.

38
WisZhou

En utilisant des versions actuelles de tous les packages pertinents (Django==1.11.2, Django-nose==1.4.5 et nose==1.3.7) Il suffit d'ajouter le --nocapture Drapeau lors de vos tests. Ainsi un simple

./manage.py test --nocapture

suffira.

Accordé bien sûr que vous avez

TEST_RUNNER = "Django_nose.NoseTestSuiteRunner"

dans ton settings.py

5
oivvio