2017-10-13 18 views
2

Je rencontrais des problèmes lors de l'exécution de tests pour mon application et j'ai réussi à les résoudre en this previous post.Test avec Django: bloqué lors de la création de la base de données de test

Maintenant, l'exécution python manage.py test ne passe à travers sans soulever des erreurs, mais il est bloqué à la création de bases de données:

Lorsque la base de données de test n'existe pas il ne crée que je peux voir dans pgAdmin, mais il se coince dans le processus avec ce message:

Creating test database for alias 'default'... 

il est coincé ici pour toujours, quand je termine le processus, il est dit manuellement et exécuter à nouveau test existe la base de données et me pousse à soit supprimer et en créer de nouveau, ou d'annuler la processus. Je tape « oui » et le processus est bloqué à nouveau avec cet autre message:

Destroying old test database 'default'... 

Avec ouvert pgAdmin je ne peux pas voir immédiatement toute nouvelle base de données test_dbname, mais si je ferme et ouvre à nouveau que je peux, il test_dbname est, mais la tâche test est juste coincé là et ne passe pas à travers ...

Une solution de contournement à ce problème est this solution, désactivation des migrations. De cette façon, il ne reste plus bloqué à ces messages et le test par défaut est exécuté.

. 
---------------------------------------------------------------------- 
Ran 1 test in 0.002s 

OK 

Cependant, cela semble juste être une mauvaise solution et la tricherie. Il doit y avoir une bonne raison pour laquelle les migrations sont exécutées lors de l'exécution des tests, donc je ne vois pas de bonne raison de les désactiver.

+0

Quel type de base de données utilisez-vous? –

+0

@SamBobel J'utilise PostgreSQL – dabadaba

+0

L'avez-vous exécuté à haute verbosité? Il est très probable que vous soyez bloqué sur l'une de vos migrations, et cela vous dira lequel. –

Répondre

1

Essayez d'exécuter python manage.py test --verbosity=2. Cela vous dira exactement où il se coince, et vous pouvez partir de là.