Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django试验。运行测试时从生产数据库中查找数据?_Django_Testing_Document - Fatal编程技术网

Django试验。运行测试时从生产数据库中查找数据?

Django试验。运行测试时从生产数据库中查找数据?,django,testing,document,Django,Testing,Document,Django 1.5关于测试的文件说: 运行测试时从生产数据库中查找数据 如果您的代码在编译数据库模块时试图访问数据库,则这将在设置测试数据库之前发生,可能会产生意外结果。例如,如果在模块级代码中有一个数据库查询,并且存在一个真实的数据库,那么生产数据可能会污染测试。无论如何,在代码中包含这样的导入时间数据库查询是一个坏主意-重写代码,这样它就不会这样做 有人能解释一下我听不懂的粗体字吗。多谢各位 您正在阅读以下内容: 这看起来像是那些可能包含尴尬段落的协作在线书籍之一 首先,您的设置文件设置了

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',
        )