我正在尝试为我的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)我嘲笑模型的方式正确吗?如果是,这个错误是已知的吗?如果没有,你能建议更好的方法吗?
发布于 2021-06-11 14:35:37
从mixer的documentation:
您可以将类或字符串与模型名称一起使用。
1型号名称支持两种格式。使用‘app_name.model_name’来防止冲突。或者,对于具有唯一名称的模型,您可以只使用‘model_name’。
因此,您写入模型名称的格式是不正确的。您需要以<pp_name>.<model_name>的形式编写它。因此,您需要编写'auth.User'而不是'django.contrib.auth.models.User'
class MyTest:
def test_test1(self):
mock_user = mixer.blend('auth.User')
stock_mock = mixer.blend('app.Mytable', username=mock_user)https://stackoverflow.com/questions/67932110
复制相似问题