Django试验。运行测试时从生产数据库中查找数据?
Django 1.5关于测试的文件说: 运行测试时从生产数据库中查找数据 如果您的代码在编译数据库模块时试图访问数据库,则这将在设置测试数据库之前发生,可能会产生意外结果。例如,如果在模块级代码中有一个数据库查询,并且存在一个真实的数据库,那么生产数据可能会污染测试。无论如何,在代码中包含这样的导入时间数据库查询是一个坏主意-重写代码,这样它就不会这样做 有人能解释一下我听不懂的粗体字吗。多谢各位 您正在阅读以下内容: 这看起来像是那些可能包含尴尬段落的协作在线书籍之一 首先,您的设置文件设置了一个数据库:Django试验。运行测试时从生产数据库中查找数据?,django,testing,document,Django,Testing,Document,Django 1.5关于测试的文件说: 运行测试时从生产数据库中查找数据 如果您的代码在编译数据库模块时试图访问数据库,则这将在设置测试数据库之前发生,可能会产生意外结果。例如,如果在模块级代码中有一个数据库查询,并且存在一个真实的数据库,那么生产数据可能会污染测试。无论如何,在代码中包含这样的导入时间数据库查询是一个坏主意-重写代码,这样它就不会这样做 有人能解释一下我听不懂的粗体字吗。多谢各位 您正在阅读以下内容: 这看起来像是那些可能包含尴尬段落的协作在线书籍之一 首先,您的设置文件设置了
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'myDB' ...
当您运行测试时,测试运行程序读取该名称,在“test_”前面加上前缀以获取“test_myDB”,并创建一个空白数据库供测试使用
但是测试运行程序只有在模块加载(而不是“编译”)后才执行此操作。所以
另一个细节:除非你疯了,直接在生产服务器上进行开发和测试,否则myDB不是“生产数据库”。更好的名称应该是“开发数据库”。你说得对;同样,通过
production
他们也可能意味着staging
。。。C-;我的意思是,您可以在开发服务器上进行开发和测试,然后可以部署到登台服务器上,并在那里再次运行测试,以确保在将其部署到生产服务器之前,所有内容都在该环境中正常工作。
from django.test import TestCase
# Don't use the database here; it's still myDB
class SimpleTest(TestCase):
def setUp(self):
# We are all about the test_myDB database, here
self.user = User.objects.create_user(
username='zaphod',
email='zaphod@...',
password='beeblebrox',
)