J'ai créé un site Web en utilisant django 1.3, Mongodb et django-mongo-engine. Lorsque j'exécute le serveur en utilisant "manage.py runserver", cela fonctionne. Mais quand j'essaie de faire des tests unitaires avec "manage.py test", ça échoue.Échec du test d'unité à l'aide de django-mongo-engine
Voici la settings.py à propos de la base de données:
DATABASES = {
'default': {
'ENGINE': 'django_mongodb_engine',
'NAME': 'sean_test',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
Et ceci est le message d'erreur dans les tests:
.... Problème appareil installation « c: \ Python27 \ lib \ sitepackages \ django \ contrib \ auth \ fixtures \ authtestdata.json ': Traceback (appel le plus récent en dernier):
Fichier "c: \ Python27 \ lib \ paquets-de-site \ django \ core \ management \ commands \ loaddata. py ", ligne 174, dans handleobj.save (using = using)
Fichier "c: \ Python27 \ lib \ paquets-de-site \ django \ core \ serializers \ base.py", ligne 165, dans savemodels.Model.save_base (self.object, using = using, raw = True)
fichier "c: \ Python27 \ lib \ site-packages \ django \ db \ modèles \ base.py", ligne 573, dans save_baseresult = manager._insert (valeurs, return_id = update_pk, en utilisant =) à l'aide
fichier "c: \ Python27 \ lib \ site-packages \ django \ db \ modèles \ manager.py", ligne 195, en _insertreturn insert_query (self.model, valeurs, ** kwargs)
fichier « c : \ Python27 \ lib \ packages \ django \ db \ models \ query.py ", ligne 1438, dans insert_queryr etour query.get_compiler (en utilisant =) à l'aide .execute_sql (return_id)
fichier "c: \ Python27 \ lib \ site-packages \ djangotoolbox \ db \ basecompiler.py", ligne 369, dans execute_sqlvalue = self.convert_value_for_db (type_bdd, valeur)
fichier "c: \ Python27 \ lib \ site-packages \ django_mongodb_engine \ compiler.py", ligne 67, en wrapperreturn func (* args, ** kwargs)
fichier « c: \ Python27 \ lib \ paquets-de-site \ django_mongodb_engine \ compiler.py ", ligne 307, dans convert_value_for_dbraise InvalidId (msg)
InvalidId: Les valeurs AutoField (clé primaire par défaut) doivent être st anneaux représentant un ObjectId sur MongoDB (GOT U'1' au lieu)
Je sais que le django utilise entier tandis que MongoDB utilise la chaîne pour la clé primaire, mais je ne sais pas pourquoi le test échouera lorsque le " runserver "réussit. Une idée sur la façon de résoudre ce problème?
Merci!
Je savais qu'en utilisant sqlite vous n'avez pas besoin de 'USER' et de 'PASSWORD' dans le fichier' settings.py', mais je ne sais pas utiliser 'mongodb', n'est-ce pas nécessaire? – eLRuLL