问题描述
我在 django 应用程序上使用了 2 个数据库 - 第一个是 MysqL,第二个是 Mongo(使用 djongo 引擎)。
我开始使用 TestCase
编写一些测试,我想使用 sqlite3 引擎。
我的数据库配置: (你可以看到我在 sqlite 上分配了 TEST DB]
#settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.MysqL','NAME': DEFAULT_NAME,'USER': DEFAULT_USER,'PASSWORD': DEFAULT_PASSWORD,'HOST': 'my-host-here','PORT': '3306','TEST': {
'NAME': 'test_dev'
}
},'mongoDB': {
'ENGINE': 'djongo','CLIENT': {
'host': 'mongodb+srv://{}:{}@{}/?retryWrites=true&w=majority'.format(
username,password,host),'username': username,'password': password,'name': name,'authSource': authSoruce,'ssl':ssl,'authMechanism': 'SCRAM-SHA-1',}
}
}
# If django runs unittests - run on a local sqlite DB
if 'test' in sys.argv:
DATABASES['default'] = {
'ENGINE': 'django.db.backends.sqlite3','NAME': 'mydatabase','SUPPORTS_TRANSACTIONS': True
}
DATABASES['mongoDB'] = {
'ENGINE': 'django.db.backends.sqlite3','NAME': 'mydatabase2','SUPPORTS_TRANSACTIONS': True
}
当我运行测试时,当 Django 尝试创建 mongoDB TEST 数据库时我会失败。错误:
return Database.Cursor.execute(self,query,params) django.db.utils.OperationalError: no such table: release_notes_releasenotesformmodel
(release_notes_releasenotesformmodel
是我在 mongoDB 中唯一的模型)
测试脚本:
databases = '__all__'
def SetUp(self):
self.client = Client()
self.dummy_test = EdisonAbTestsListModel.objects.create(
test_id=DUMMY_TEST_ID_1
)
def run_test(self):
## here is my test logic...
如您所见,我尝试在 TestCase 配置中使用 databases = '__all__'
,但它无济于事
编辑:这是 release_notes_releasenotesformmodel
模型:
class Meta:
db_table = 'release_notes'
_DATABASE = "edison_mongo"
# Automated fields
created_at = models.DateTimeField(auto_Now_add=True,editable=False)
updated_at = models.DateTimeField(auto_Now=True)
# Model Fields
'''
test_id is actually the primary key in to EdisonAbTestsListModel
Notice: for 'full_rollout' RNs,test_id is populated but has no meaning.
for 'full_rollout' RNs The minimum id should match FULL_ROLLOUT_RN_MINIMUM_ID from views.py
'''
test_id = models.IntegerField(primary_key=True)
release_note_title = models.CharField(max_length=300,blank=True,null=False)
user_group = models.CharField(max_length=200,null=True)
tl_dr = models.CharField(max_length=10000,null=True)
owner = models.CharField(max_length=200,null=True)
dev_owner = models.CharField(max_length=200,null=True)
data_owner = models.CharField(max_length=200,null=True)
ds_owner = models.CharField(max_length=200,null=True)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)