Django: как динамически создавать модель только для тестирования
Ответ @ paluh требует добавления django-fields нежелательного кода в файл, не django-models являющийся тестовым, и, по py моему опыту, решение @ carl unit-test не работает с django.test.TestCase
, который необходим mock для использования фикстур. Если python-shell вы хотите использовать django.test.TestCase
, вам py необходимо убедиться, что python-shell вы вызываете syncdb
до загрузки py фикстур. Для этого требуется mock переопределить метод _pre_setup
(помещения django-fields кода в метод setUp
недостаточно). Я unit-tests использую свою версию TestCase
, которая unit-test позволяет мне добавлять приложения pythonic с тестовыми моделями. Он django-imagefield определяется следующим образом:
from django.conf import settings
from django.core.management import call_command
from django.db.models import loading
from django import test
class TestCase(test.TestCase):
apps = ()
def _pre_setup(self):
# Add the models to the db.
self._original_installed_apps = list(settings.INSTALLED_APPS)
for app in self.apps:
settings.INSTALLED_APPS.append(app)
loading.cache.loaded = False
call_command('syncdb', interactive=False, verbosity=0)
# Call the original method that does the fixtures etc.
super(TestCase, self)._pre_setup()
def _post_teardown(self):
# Call the original method.
super(TestCase, self)._post_teardown()
# Restore the settings.
settings.INSTALLED_APPS = self._original_installed_apps
loading.cache.loaded = False
python
django
unit-testing
django-models
mocking
Django: как динамически создавать модель только для тестирования
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.