使用pytest-django对现有数据库运行测试

问题描述 投票:1回答:1

有人知道如何使用pytest-django对现有(例如生产)数据库运行Django测试吗? 我知道一般来说,这不是单元测试应该做的,但在我的情况下,我正在Heroku上运行测试。默认情况下,Django会创建一个新的测试数据库,但是,这在Heroku上是不可能的。

我找到了一个没有pytest-django(python manage.py test)的解决方案:https://gist.github.com/gregsadetsky/5018173 但据我所知,pytest-django没有使用Django设置中定义的测试运行器。

如果有人对如何在Heroku上使用pytest-django运行Django测试有另一种方法(例如通过自动创建测试数据库的方法),我也会对该解决方案感到满意。

python django postgresql heroku pytest
1个回答
4
投票

关于如何链接到现有数据库的the documentation

使用现有的外部数据库进行测试

此示例显示如何连接到现有数据库并将其用于测试。 这个例子很简单,您只需要禁用所有pytest-django和Django的测试数据库创建并指向现有数据库。这是通过简单地实现no-op django_db_setup fixture来实现的。

把它放入conftest.py

import pytest


@pytest.fixture(scope='session')
def django_db_setup():
    settings.DATABASES['default'] = {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': 'db.example.com',
        'NAME': 'external_db',
    }
© www.soinside.com 2019 - 2024. All rights reserved.