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

lmr*_*391 3 python django postgresql heroku pytest

有人知道如何针对现有(例如生产)数据库使用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测试的另一种方法(例如,通过自动创建测试数据库的方式),我也对该解决方案感到满意。

Joh*_*fis 6

遵循有关如何链接到现有数据库的文档

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

本示例说明如何连接到现有数据库并将其用于测试。
这个例子很简单,您只需要禁用所有pytest-django和Django的测试数据库创建,并指向现有数据库即可。这可以通过简单地实现无操作django_db_setup固定装置来实现。

放入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',
    }
Run Code Online (Sandbox Code Playgroud)