我已经找到了一种用于 django 1.7+ 的仅测试模型的方法。
基本思想是,制作tests
一个应用程序,然后将您的应用程序添加tests
到INSTALLED_APPS
.
这是一个例子:
$ ls common
__init__.py admin.py apps.py fixtures models.py pagination.py tests validators.py views.py
$ ls common/tests
__init__.py apps.py models.py serializers.py test_filter.py test_pagination.py test_validators.py views.py
而且我有不同settings
的用途(参考:拆分设置文件),即:
settings/default.py
:基本设置文件
settings/production.py
: 用于生产
settings/development.py
: 开发
settings/testing.py
: 供测试用。
在 中settings/testing.py
,您可以修改INSTALLED_APPS
:
settings/testing.py
:
from default import *
DEBUG = True
INSTALLED_APPS += ['common', 'common.tests']
并确保您为测试应用程序设置了正确的标签,即,
common/tests/apps.py
from django.apps import AppConfig
class CommonTestsConfig(AppConfig):
name = 'common.tests'
label = 'common_tests'
common/tests/__init__.py
,设置正确AppConfig
(参考:Django Applications)。
default_app_config = 'common.tests.apps.CommonTestsConfig'
然后,生成数据库迁移
python manage.py makemigrations --settings=<your_project_name>.settings.testing tests
最后,您可以使用 param 运行测试--settings=<your_project_name>.settings.testing
。
如果您使用 py.test,您甚至可以将pytest.ini
文件与 django 的manage.py
.
py.test
[pytest]
DJANGO_SETTINGS_MODULE=kungfu.settings.testing