Тестовая модель Django с FilerImageField
Все новички в Django, я хочу написать тесты для IndexView
и DetailView
по аналогии с учебником Джанго.
У меня есть модель, которая содержит FilerImageField
как обязательное поле (blank=False
).
Чтобы проверить мои представления, связанные с этой моделью, я хочу создать экземпляр модели программно.
Я знаю об этом вопросе о том, как создать FilerImageField
в коде. Проблема, с которой я сталкиваюсь, применяя предполагаемое решение, заключается в том, чтобы правильно понять владельца изображения.
def create_exhibitor(name, image_path, active):
filename = 'file'
user = User.objects.get(username='myuser')
with open(image_path) as f:
file_obj = File(f, name=filename)
image = Image.objects.create(
owner=user,
original_filename=filename,
file=file_obj
)
return Exhibitor(name=name, image=image, active=active)
Запуск их тестов дает:
Traceback (most recent call last):
...
DoesNotExist: User matching query does not exist.
Мне кажется, что нет пользователя в тестовой базе данных.
Так что мой вопрос действительно двойной:
Нужен ли там пользователь для создания экземпляра модели, содержащей FilerImageField
?
Если да, то как мне создать его для целей тестирования?
1 ответ
Я наконец делаю это так:
from django.test import TestCase
from django.contrib.auth.models import User
from django.core.files.uploadedfile import SimpleUploadedFile
from .models import Exhibitor
class TestCase():
su_username = 'user'
su_password = 'pass'
def setUp(self):
self.superuser = self.create_superuser()
def create_superuser(self):
return User.objects.create_superuser(self.su_username, 'email@example.com', self.su_password)
def create_exhibitor(self):
name = 'eins'
active = True
image_file = SimpleUploadedFile(
'monkey.jpg', b'monkey', content_type="image/jpeg"
)
return Exhibitor(name=name, image=image_file, active=active)