python testing nosetests pdb

python - establecer puntos de interrupción con nosetests--pdb option



testing (3)

Incluso mejor que recordar usar -s es usar la variante set_trace que viene con Nose. Añadir

from nose.tools import set_trace; set_trace()

donde quieras ingresar al depurador La redirección stdin / out se ocupará de usted. El único efecto secundario extraño con el que me he encontrado es la imposibilidad de reiniciar el código desde pdb (utilizando run ) mientras se depura durante una ejecución de nariz.

Pruebas de nariz --pdb Vamos a detenerme por error o falla, pero esto es demasiado tarde para mis necesidades. Recorrer el código durante la ejecución me ayuda a depurar dónde está el problema.

Sin embargo, los exámenes de nariz son útiles ya que permiten pruebas que dependen de importaciones relativas (es decir, pruebas en un paquete).

¿Cómo puedo establecer puntos de interrupción antes de que se ejecuten las pruebas? Actualmente estoy usando:

python -m pdb /path/to/my/nosetests testfile.py

Esta solución no es adecuada. Las pruebas de nariz interfieren con la salida de pdb, y los controles de mi teclado (p. Ej., Las teclas de flecha) están rotos.

Usando importación pdb; pdb.set_trace () parece una buena idea, sin embargo nosetests está bloqueando mi acceso a la consola pdb.


Puedes añadir

import pdb; pdb.set_trace()

en cualquier lugar de su fuente que desee detener en el depurador.

Asegúrese de pasar -s a la nariz para que no capture la stdout .


Si tienes ipython , para el uso ilimitado de awesomeness:

import ipdb; ipdb.set_trace()

* awesomeness ilimitado: al igual que ipython - autocompletado, coloreado, etc.