2010-02-24 15 views
0

Comment puis-je entrer dans un test en cours d'exécution avec le débogueur interactif pdb?Pourquoi ne puis-je pas entrer dans un test en cours d'exécution avec le débogueur interactif pdb?

C'est le test:

class UserTestCase(TestCase): 
    def test_register_should_create_UserProfile(self): 
    c = Client() 
    response = c.post('/account/register/', {u'username': [u'john'], u'email': [u'[email protected]'], u'bnewaccount': [u'Signup']}) 

    self.assertEqual(response.status_code, 302) 
    import pdb; pdb.set_trace() 
    user = User.objects.get(username ='john') 
    self.assertTrue(user.get_profile()) 

Lorsque je tente d'exécuter les tests:
$ test python manage.py

La base de données de test est créé. Les points de progrès '.' commencer à progresser à travers l'écran à mesure que les tests passent. Alors le progrès s'arrête.

Je ne suis jamais montré une invite pdb> dans la fenêtre du terminal.

Comment puis-je faire fonctionner correctement pdb?

Répondre

1

Avez-vous essayé ipdb au lieu de vanille pdb? J'utilise ipdb et ce que vous essayez de faire fonctionne bien. Sinon, en guise de solution de repli, pourquoi ne pas essayer l'appel pdb dans la méthode que vous testez, juste avant que la réponse ne soit retournée?

+0

iPdb fonctionne. Je vais l'utiliser comme mon débogueur par défaut. – BryanWheelock

+2

Il ne devrait y avoir aucune différence entre ipdb et pdb dans l'exemple d'utilisation. Ils devraient tous les deux bien fonctionner. J'aurais commencé en déplaçant l'importation vers la première ligne du test au lieu de changer d'outils. Les outils de commutation peuvent masquer un problème différent. – istruble