pdb.set_trace () provoquant des nosetests gelés, ne tombe pas dans le débogueur

StackOverflow https://stackoverflow.com/questions/9013728

  •  14-11-2019
  •  | 
  •  

Question

J'exécute une suite de tests (fichiers .py) à l'aide de Nosetests. Utilisation d'un classique

import pdb; pdb.set_trace()

Les Nosetests s'exécutent ne se termine jamais. Il s'accroche juste à l'endroit où le point d'arrêt a été fixé, mais ne tombe jamais dans le débogueur PDB.

Des idées pourquoi ce serait? J'ai essayé de déplacer le point d'arrêt vers un certain nombre de positions différentes (autres fonctions de test, autres fichiers) en vain.

Était-ce utile?

La solution

Courir le nez avec le -s / --nocapture Option et vous pourrez voir l'invite PDB et interagir avec le débogueur normalement.

Si vous utilisez la ligne de commande, cela signifie: -

python manage.py  test -s [other-opts-and-args]

Autres conseils

Le nez capture la sortie et le redirige. Donc, le point d'arrêt est touché, mais vous ne le voyez pas. Vous devez désactiver la redirection de sortie afin que la sortie de débogage apparaisse à l'écran.

Le nez peut le faire pour vous, si vous utilisez:

from nose.tools import set_trace; set_trace()

à la place de:

import pdb;pdb.set_trace()

Dans mon cas, le drapeau de l'indicateur -s / - Nocapture, ne l'a toujours pas résolu et laisse tomber le compilateur dans PDB.

Une autre raison pour laquelle vous pourriez examiner est si vous utilisez une base de données telle que MySQL dans le cadre de vos tests, qu'elle n'est pas verrouillée par un autre processus simultané. Dans mon cas, j'avais commencé un shell Python pour interroger la base de données MySQL via SQL Alchemy et qui avait verrouillé les tables. En conséquence, mes tests de nez étaient suspendus - pas courir / sortir.

J'ai tué les processus Python qui verrouillaient les tables et le nez était reniflé

> $ ps Auxww | grep python | awk '{print $ 2}' | sudo xargs tuer -9

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top