【发布时间】:2013-03-25 14:35:13
【问题描述】:
我有一个加载了数据的现有数据库“A”,它是我正在集成的另一个项目的一部分。我正在使用多数据库 Django 支持并将我需要持久化的东西存储在我的数据库“B”中,这是 Django 建模的。
现在我想运行测试,这会为我创建两个测试数据库。问题是测试数据库“A”没有表或数据。
有没有办法避免为“A”(这是一个只读的非生产数据库)创建测试数据库而直接使用“A”?
【问题讨论】:
标签: django
我有一个加载了数据的现有数据库“A”,它是我正在集成的另一个项目的一部分。我正在使用多数据库 Django 支持并将我需要持久化的东西存储在我的数据库“B”中,这是 Django 建模的。
现在我想运行测试,这会为我创建两个测试数据库。问题是测试数据库“A”没有表或数据。
有没有办法避免为“A”(这是一个只读的非生产数据库)创建测试数据库而直接使用“A”?
【问题讨论】:
标签: django
如果我正确阅读了django.test.simple.DjangoTestSuiteRunner.setup_databases,您可以通过为您的数据库定义'TEST_MIRROR' 设置来避免创建测试数据库。
该选项旨在用于testing master/slave configuration,但如果您将镜像设置为与您配置该选项的数据库相同的数据库,则可以达到预期效果:
DATABASES = {
'A': {
'ENGINE': ..., # standard configuration goes here
'TEST_MIRROR': 'A',
},
'B': {
'ENGINE': ..., # no TEST_MIRROR, a test database will be created for B
}
}
不会为“A”创建测试数据库,而是将其替换为TEST_MIRROR,这也是“A”,因此测试将按预期在“A”和“test_B”上运行。
【讨论】:
A,清除所有数据。