【问题标题】:How to use default database in django testing如何在 django 测试中使用默认数据库
【发布时间】:2017-09-24 15:02:31
【问题描述】:

现在我想使用我的默认数据库测试 API,因为我首先需要太多数据来模拟请求,所以我不想设置测试数据库

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'bills_db',
        'USER': 'root',
        'PASSWORD': '****',
    }
}

我该如何使用它?

【问题讨论】:

    标签: django testing django-rest-framework


    【解决方案1】:

    另一种选择是将Django's database fixtures 用于所有环境(测试、开发、生产)通用的数据。这里的另一个好处是,fixture 可以很容易地使用您的公共数据为新数据库播种:

    ./manage.py loaddata myfixture1 myfixture2
    

    您可以使用./manage.py dumpdata 创建固定装置。以下是如何从 books 应用程序中名为 Author 的模型创建 JSON 固定装置,例如:

    mkdir books/fixtures
    ./manage.py dumpdata --indent=2 --output books/fixtures/author.json books.author 
    

    然后你可以在你的测试中使用这个fixture:

    from django.test import TestCase
    
    
    class AuthorTestCase(TestCase):
        fixtures = ['author']
        ....
    

    【讨论】:

      【解决方案2】:

      为您的默认和测试使用相同的数据库名称。

      django 使用以下模式来定义数据库:

      DATABASES = {
          'default': {
              'ENGINE': 'django.db.backends.postgresql',
              'USER': 'mydatabaseuser',
              'NAME': 'mydatabase',
              'TEST': {
                  'NAME': 'mytestdatabase',
              },
          },
      }
      

      只需使用mydatabase 而不是mytestdatabase

      【讨论】:

      • Type 'yes' if you would like to try deleting the test database 'bills_db', or 'no' to cancel: no 然后返回Tests cancelled.
      • 尝试 --keepdb 获取你的数据库
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      • 2016-11-23
      相关资源
      最近更新 更多