7
votes

Test de l'unité Django sur plusieurs bases de données

Je travaille sur un projet Django où tous mes cas de test d'unité fonctionnaient parfaitement.

Ass Bientôt alors que j'ai introduit une deuxième base de données, tous mes cas de test qui hériter d'une TESTCASE sont cassés. À ce stade, je n'ai construit aucun cas de test pour cette deuxième base de données, mais mon routeur fonctionne bien.

Quand j'exécute les tests, je reçois l'erreur,

"KeyError:" Supports_Transactions ""

Il me semble que vous essayez de vérifier que toutes les bases de données que j'ai configurées des transactions de support, mais la deuxième base de données n'est jamais créée.

Des idées sur la manière d'avoir le script de test pour construire la deuxième base de données.


0 commentaires

4 Réponses :


3
votes

Oui, j'ai eu un problème similaire ... mon correctif était de définir "Supports_Transactions": true pour chacune des connexions de base de données dans le fichier de paramètres. Je ne sais pas si c'est la bonne façon de le réparer, mais cela a fonctionné pour moi.


1 commentaires

Travaille pour moi. Édité mes paramètres / local.py et ajouté "'Supports_Transactions': true," à l'entrée unique "par défaut" à l'intérieur de mon dictionnaire de bases de données.



1
votes

'Supports_Transactions': True a travaillé pour moi aussi. Cependant, j'ai une sorte de configuration de DB multiple étrange à l'aide de routeurs de base de données. @ user298404: Comment votre configuration de DB multiple est-elle ressemblant?

ps. Pardon; Pas assez de points pour commentaires ...


0 commentaires

0
votes

Voici une configuration de DB multiple que j'ai actuellement en production: xxx

db_primary_master, db_primary_slave, db_mail_master et db_mail_slave sont toutes des constantes de chaîne afin qu'elles puissent être utilisées dans mon routeur de base de données. de
Indice: db_primary_master = 'Par défaut'

J'espère que cela aide!


0 commentaires

8
votes

Je me rends compte que c'est un très vieux fil, mais je l'ai rencontré avec le même problème et ma résolution ajouté le drapeau multi_db = true code> à mon témoignage, par exemple:

class TestThingWithMultipleDatabases(TestCase):
     multi_db = True

     def test_thing(self):
         pass


2 commentaires

Django Docs: docs.djangoproject.com/fr/ 2.0 / Thèmes / Test / Outils / ...


Multi_db a été obsolète depuis Django 2.2, en utilisant TESTCASE.DATABASES à la place.