如何解决模拟模型用户使用混合器通过错误
我正在尝试为我的 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)
我是在以正确的方式嘲笑模型吗?如果是,此错误是否已知?如果没有,你能提出更好的方法吗?
解决方法
来自混音器的documentation:
您可以使用带有模型名称的类或字符串。
[1] 型号名称支持两种格式。使用‘app_name.model_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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。