Мокирующая модель. Пользователь, использующий микшер, пропускает ошибку
Я пытаюсь добавить модульный тест для своего проекта Django. Я использую микшер, чтобы издеваться над моделями. Модель выглядит так, как показано ниже.
from django.contrib.auth.models import User
class Mytable(Model):
username = models.OneToOneField(User, on_delete=models.CASCADE, db_column='username')
...
...
Мой тестовый пример выглядит как
class MyTest:
def test_test1(self):
mock_user = mixer.blend('django.contrib.auth.models.User')
stock_mock = mixer.blend('app.Mytable', username=mock_user)
Но я нажимаю "слишком много значений для распаковки", высмеивая модель пользователя.
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/Users/kketan/Documents/projects/Extractor/.venv/lib/python3.8/site-packages/mixer/main.py", line 566, in blend
type_mixer = self.get_typemixer(scheme)
File "/Users/kketan/Documents/projects/Extractor/.venv/lib/python3.8/site-packages/mixer/main.py", line 583, in get_typemixer
return self.type_mixer_cls(
File "/Users/kketan/Documents/projects/Extractor/.venv/lib/python3.8/site-packages/mixer/main.py", line 47, in __call__
cls_type = cls.__load_cls(cls_type)
File "/Users/kketan/Documents/projects/Extractor/.venv/lib/python3.8/site-packages/mixer/backend/django.py", line 137, in __load_cls
app_label, model_name = cls_type.split(".")
ValueError: too many values to unpack (expected 2)
Правильно ли я издеваюсь над моделями? Если да, известна ли эта ошибка? Если нет, не могли бы вы предложить лучший способ?
1 ответ
Из документации микшера:
Вы можете использовать класс или строку с именем модели.
[1] Название модели поддерживает два формата. Используйте "app_name.model_name" для предотвращения конфликтов. Или вы можете использовать просто «имя_модели» для моделей с уникальными именами.
Следовательно, формат, в котором вы пишете название модели, неверен. Вам нужно написать это в форме
<pp_name>.<model_name>
. Следовательно, вместо
'django.contrib.auth.models.User'
тебе нужно написать
'auth.User'
:
class MyTest:
def test_test1(self):
mock_user = mixer.blend('auth.User')
stock_mock = mixer.blend('app.Mytable', username=mock_user)