2010-11-03 6 views
11

J'ai deux bases de données que mon site utilise et j'ai une application qui utilise les deux. J'ai besoin d'écrire un TestCase qui charge les appareils pour les deux bases de données. J'utilise un routeur DB, qui fonctionne bien en production, mais dans le cadre de test, Django insiste sur l'utilisation de la base de données par défaut pour tous les appareils, même pour les modèles qui spécifient l'autre base de données. Comment puis-je dire à Django d'exécuter un appareil contre une autre base de données?django - spécifiez la base de données pour les appareils TestCase

Ma TESTCASE liste définie:

class VerifierTestCase(TestCase): 
    fixtures = ['zipcodes_test.json', 'all_states.json', 'wtf.json'] 
    multi_db = True 
+0

Quelqu'un a trouvé une réponse à cela? Impossible d'obtenir les projecteurs pour ne pas charger tous les paramètres par défaut – zenWeasel

+0

Est-ce que quelqu'un a trouvé une réponse pour cela? –

Répondre

4

Il est en fait un bug dans Django qui l'amène à ignorer les pointeurs basés sur le nom spécifique à db si vous spécifiez le nom complet du luminaire.

donc si vous fixtures = ["mydata.default.yaml", "mydata.myotherdatabase.yaml"]

Il chargera les deux appareils dans la base de données par défaut.

Mais si vous fixtures = ['mydata']

Il se charge correctement. Cela est également vrai pour les noms de fichiers spécifiques à la dbengine (par exemple, mydata.default.postgresql.sql).

+0

Malheureusement, ce n'est pas le cas avec Django 1.6. Je reçois une erreur indiquant «UserWarning: aucun appareil nommé» migration_test_data «found» lorsque j'essaie de le faire. – CoreDumpError

+0

@CoreDumpError, j'ai également reçu l'avertissement, mais, les appareils ont été chargés correctement. Je pense que les avertissements sont une sorte de bug. J'ai émis un billet à ce sujet: https://code.djangoproject.com/ticket/24680#ticket – ZZY

Questions connexes