在我的项目中,我使用多个数据库,准确地说是3。一个默认数据库和两个参考数据库(另一个主机),由我们的数据团队提供支持和更新。我使用了来自2个外部数据库的4个表,这些表是用./manage.py inspectdb
检查的。设置为managed=False
一切都很好,我的应用程序工作如预期和计划。
现在好戏开始了,我需要编写测试。我不想删除我的数据库。我需要从它们中读取,我不想创建fixture。每次当我尝试使用pytest或自定义django测试时,它都试图删除我的数据库,重新创建,运行迁移等等。
我怎样才能保留它?无论是在pytest还是django测试?我试过——reusedb和其他几个参数。
这是我的数据库设置(可以上传的部分)
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'NAME': 'default_db',
'USER': 'default_usr',
'PASSWORD': 'default_pass',
'HOST': 'postgres.somehost.com',
'SUPPORTS_TRANSACTIONS': True,
},
'geolocations': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'OPTIONS': {
'options': '-c search_path=some_schema'
},
'NAME': 'geo_name',
'USER': 'geo_user',
'PASSWORD': 'geo_password',
'HOST': 'some-host.domain.com',
'SUPPORTS_TRANSACTIONS': True,
},
'eoc': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'OPTIONS': {
'options': '-c search_path=another_schema'
},
'NAME': 'eco_name',
'USER': 'eoc_user',
'PASSWORD': 'eoc_',
'HOST': 'some-another-host.domain.com',
'SUPPORTS_TRANSACTIONS': True,
}
}
所以在pytest.ini中,你应该能够添加一个'——no-migrations'标志,以确保不进行迁移。使用pytest标记pytest文档应该使您能够访问数据库。
你需要的标记是:
pytestmark = pytest.mark.django_db