我已经找到了一种用于 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用于不同的目的(参考:splitting up the settings file),即:
-
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'
然后,通过
生成db迁移
python manage.py makemigrations --settings=<your_project_name>.settings.testing tests
最后,您可以使用参数--settings=<your_project_name>.settings.testing 运行测试。
如果您使用 py.test,您甚至可以将 pytest.ini 文件与 django 的 manage.py 一起删除。
py.test
[pytest]
DJANGO_SETTINGS_MODULE=kungfu.settings.testing