Im trying to add unit test for my Django project. Im using mixer to mock the models. The model looks as below
from django.contrib.auth.models import User
class Mytable(Model):
username = models.OneToOneField(User, on_delete=models.CASCADE, db_column='username')
...
...
My testcase looks like
class MyTest:
def test_test1(self):
mock_user = mixer.blend('django.contrib.auth.models.User')
stock_mock = mixer.blend('app.Mytable', username=mock_user)
But im hitting "too many values to unpack" while mocking User model
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)
Am I mocking the models right way ? If yes is this error known ? If no can you please suggest better way ?
From the documentation of mixer:
Hence the format in which you write the model name is incorrect. You need to write it in the form
<pp_name>.<model_name>
. Hence instead of'django.contrib.auth.models.User'
you need to write'auth.User'
: