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