【问题标题】:Django and pytest, multiple databases, preserve deletiondjango和pytest,多数据库,保留删除
【发布时间】:2016-09-08 10:11:14
【问题描述】:

在我的项目中,我使用了多个数据库,准确地说是 3 个。 一个默认数据库和两个参考数据库(另一个主机),由我们的数据团队提供支持和更新。我正在使用来自 2 个外部数据库的 4 个表,这些表使用 ./manage.py inspectdb 检查。它们设置为managed=False 一切正常,我的应用程序按预期和计划工作。

现在有趣的开始了,我需要编写测试。我不想删除我的数据库。 我需要从他们那里阅读,我不想创建固定装置。 每次我尝试使用 pytest 或自定义 django 测试时,它都会尝试删除我的数据库、重新创建、运行迁移等。

我怎样才能保存它?在 pytest 或 django 测试中?我尝试过 --re-usedb 和其他几个参数。

这是我的数据库设置(可以上传的部分)

DATABASES = {
    'default': {
        'ENGINE': 'django.contrib.gis.db.backends.postgis',
        'NAME': 'default_db',
        'USER': 'default_usr',
        'PASSWORD': 'default_pass',
        'HOST': 'postgres.somehost.com',
        'SUPPORTS_TRANSACTIONS': True,
    },
    'geolocations': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'OPTIONS': {
            'options': '-c search_path=some_schema'
        },
        'NAME': 'geo_name',
        'USER': 'geo_user',
        'PASSWORD': 'geo_password',
        'HOST': 'some-host.domain.com',
        'SUPPORTS_TRANSACTIONS': True,
    },
    'eoc': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'OPTIONS': {
            'options': '-c search_path=another_schema'
        },
        'NAME': 'eco_name',
        'USER': 'eoc_user',
        'PASSWORD': 'eoc_',
        'HOST': 'some-another-host.domain.com',
        'SUPPORTS_TRANSACTIONS': True,
    }
}

【问题讨论】:

    标签: python django database postgresql pytest


    【解决方案1】:

    因此,在 pytest.ini 中,您应该能够添加一个“--no-migrations”标志,以确保不会进行迁移。使用 pytest 标记 pytest documentation 应该可以让您访问您的数据库。

    你需要的标记是:

    pytestmark = pytest.mark.django_db
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多