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

时间:2018-01-04 13:51:56

标签: 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测试有另一种方法(例如通过自动创建测试数据库的方法),我也会对该解决方案感到满意。

1 个答案:

答案 0 :(得分: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',
    }