nosetests --pdb
arrêtons-moi en cas d'erreur ou d'échec, mais c'est trop tard pour mes besoins. Parcourir le code pendant l'exécution m'aide à déboguer où se trouve le problème.
Cependant, les tests noset sont utiles car ils permettent des tests qui reposent sur des importations relatives (c'est-à-dire des tests dans un package).
Comment définir des points d'arrêt avant l'exécution des tests? Actuellement j'utilise:
python -m pdb /path/to/my/nosetests testfile.py
Cette solution n'est pas adéquate. Nosetests interfèrent avec la sortie pdb et mes commandes de clavier (par exemple les touches fléchées) sont cassées.
Utiliser import pdb; pdb.set_trace () semble être une bonne idée, mais nosetests bloque mon accès à la console pdb.
Vous pouvez ajouter
import pdb; pdb.set_trace()
n'importe où dans votre source que vous souhaitez arrêter dans le débogueur.
Assurez-vous de réussir -s
au nez pour qu'il ne capture pas stdout
.
Encore mieux que de penser à utiliser -s
consiste à utiliser le set_trace
variante fournie avec Nose. Ajouter
from nose.tools import set_trace; set_trace()
partout où vous souhaitez pénétrer dans le débogueur. La redirection stdin/out sera prise en charge pour vous. Le seul effet secondaire étrange que j'ai rencontré est l'impossibilité de redémarrer votre code à partir de pdb (en utilisant run
) lors du débogage lors d'une exécution de nez.
Si vous avez ipython, pour une impression illimitée, utilisez:
import ipdb; ipdb.set_trace()
* génialité illimitée: tout comme ipython - auto-complétion, coloration, etc.
Si vous utilisez pytest , vous pouvez utiliser
import pytest; pytest.set_trace()
Voir documentation .