我使用 django 1.3、Mongodb 和 django-mongo-engine 建立了一个网站。当我使用“manage.py runserver”运行服务器时,它是成功的。但是当我尝试通过“manage.py test”进行单元测试时,它以某种方式失败了。
这是关于数据库的settings.py:
DATABASES = {
'default': {
'ENGINE': 'django_mongodb_engine',
'NAME': 'sean_test',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
这是测试中的错误消息:
....问题安装夹具 'c:\Python27\lib\sitepackages\django\contrib\auth\fixtures\authtestdata.json':回溯(最近一次通话最后):
文件“c:\Python27\lib\site-packages\django\core\management\commands\loaddata.py”,第 174 行,在 handleobj.save(using=using)
文件“c:\Python27\lib\site-packages\django\core\serializers\base.py”,第 165 行,在 savemodels.Model.save_base(self.object, using=using, raw=True)
文件“c:\Python27\lib\site-packages\django\db\models\base.py”,第 573 行,在 save_baseresult = manager._insert(values, return_id=update_pk, using=using)
文件“c:\Python27\lib\site-packages\django\db\models\manager.py”,第 195 行,在 _insertreturn insert_query(self.model, values, **kwargs)
文件“c:\Python27\lib\site-packages\django\db\models\query.py”,第 1438 行,在 insert_queryreturn query.get_compiler(using=using).execute_sql(return_id)
文件“c:\Python27\lib\site-packages\djangotoolbox\db\basecompiler.py”,第 369 行,在 execute_sqlvalue = self.convert_value_for_db(db_type, value)
文件“c:\Python27\lib\site-packages\django_mongodb_engine\compiler.py”,第 67 行,在 wrapperreturn func(*args, **kwargs)
文件“c:\Python27\lib\site-packages\django_mongodb_engine\compiler.py”,第 307 行,在 convert_value_for_dbraise InvalidId(msg)
InvalidId:AutoField(默认主键)值必须是表示 MongoDB 上的 ObjectId 的字符串(取而代之的是 u'1')
我知道 django 使用整数,而 mongodb 使用字符串作为主键,但我不知道为什么“runserver”成功时测试会失败。关于如何解决这个问题的任何想法?
谢谢!