Мокирующая модель. Пользователь, использующий микшер, пропускает ошибку

Я пытаюсь добавить модульный тест для своего проекта 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)
Другие вопросы по тегам