définir des points d’arrêt avec nosetests –pdb option

Nosetests –pdb me permet d’arrêter en cas d’erreur ou d’échec, mais c’est trop tard pour mes besoins. Passer du code pendant l’exécution m’aide à déboguer le problème.

Cependant, les nosetests sont utiles car ils permettent des tests qui reposent sur des importations relatives (c’est-à-dire des tests dans un package).

Comment puis-je 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. Les nosetests interfèrent avec la sortie pdb, et mes contrôles de clavier (par exemple les touches fléchées) sont cassés.

Utiliser import pdb; pdb.set_trace () semble être une bonne idée, cependant, nosetests bloque mon access à la console pdb.

Vous pouvez append

 import pdb; pdb.set_trace() 

n’importe où dans votre source que vous souhaitez arrêter dans le débogueur.

Assurez-vous de passer au nez pour qu’il ne capture pas la stdout .

Encore mieux que de se rappeler d’utiliser -s faut utiliser la variante set_trace fournie avec Nose. Ajouter

 from nose.tools import set_trace; set_trace() 

où que vous souhaitiez 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’incapacité de redémarrer votre code depuis pdb (en utilisant run ) pendant le débogage lors d’une exécution de nez.

Si vous avez ipython , pour une utilisation illimitée:

 import ipdb; ipdb.set_trace() 

* génialité illimitée: tout comme ipython – auto-complétion, coloration etc.