Я придумала способ использовать только тестовые модели для 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
для разных целей (ref: разделение файла настроек ), а именно:
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
(ref: Приложения Django ).
default_app_config = 'common.tests.apps.CommonTestsConfig'
Затем сгенерируйте миграцию БД по
python manage.py makemigrations --settings=<your_project_name>.settings.testing tests
Наконец, вы можете запустить тест с параметром --settings=<your_project_name>.settings.testing
.
Если вы используете py.test, вы можете даже выбросить файл pytest.ini
вместе с manage.py
.
Джанго.
py.test
[pytest]
DJANGO_SETTINGS_MODULE=kungfu.settings.testing