【发布时间】:2016-05-17 09:18:24
【问题描述】:
我正在使用 Django 1.9 并编写了一个自定义测试运行器。我无法弄清楚为什么使用我的生产数据库而不是我的 test_ 数据库。我已经阅读了很多 Django 文档,但无济于事。我的生产数据库的名称是 zippymeals,所以我的测试数据库应该是 test_zippymeals。但是我的测试似乎是针对 zippymeals 数据库而不是 test_zippymeals 运行的。这是我的自定义测试运行器的代码:
class TestRunner(DiscoverRunner):
def __init__(self, pattern=None, top_level=None, verbosity=1, interactive=True, failfast=False, **kwargs):
super(TestRunner, self).__init__(pattern, top_level, verbosity, interactive, failfast, **kwargs)
def setup_databases(self, **kwargs):
bash_cmd = "createdb -T zippymeals_template test_zippymeals"
process = subprocess.Popen(bash_cmd.split(), stdout=subprocess.PIPE)
process.communicate()[0]
def teardown_databases(self, old_config, **kwargs):
bash_cmd = "dropdb test_zippymeals"
process = subprocess.Popen(bash_cmd.split(), stdout=subprocess.PIPE)
process.communicate()[0]
我在我的 settings.py 文件中设置了以下内容:
TEST_RUNNER = 'tests.test_runner.TestRunner'
我使用的是 PostgreSQL,所以我的自定义测试运行程序使用 zippymeals_template 数据库(这是我的数据库的一个空结构)来创建一个空的 test_zippymeals 数据库。 test_zippymeals 数据库创建得很好,只是在我运行测试时没有使用它。另外,我尝试过以下操作,但没有成功:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'zippymeals',
'TEST': {
'NAME': 'test_zippymeals'
}
}
}
有谁知道如何从 DiscoverRunner 继承并确保正在使用 test_ 数据库?
【问题讨论】:
标签: python django postgresql unit-testing