如何在Django单元测试中使用GenericRelations?
我已阅读并尝试过无数的互联网建议无济于事。
这个很有希望Problems with contenttypes when loading a fixture in Django
但Django 1.6中不再出现“reset”命令
我的项目使用GenericForeign键进行ContentType,使用外键进行auth.Users。我使用--natural选项仅为我的应用程序转储数据,但这会导致测试数据库中不存在用户的问题。现在我删除了--natural选项,而是转储了所有3个应用程序myApp,auth,contenttypes的数据。当我运行测试时,我得到“无法加载contenttypes.ContentType(pk = 50):列app_label,模型不是唯一的”。我认为这是由于在导入模型时动态创建了contenttypes。
使用的命令:
python manage.py dumpdata auth myApp contenttypes --natural --indent=4 > auhtmtmnatural.json
接下来我转储了myApp,auth离开了contenttypes。我认为,由于ContentTypes app db是动态创建的,而我的灯具有自然键,这应该可行。它没有。
现在我得到了:
DeserializationError: Problem installing fixture 'auhtmtmnatural.json': ContentType matching query does not exist.
如何使用contetypes进行修复工作?在测试中使用设置和创建对象是否更好?
答案 0 :(得分:4)
使用content_type: [<app_label>, <model>],
代替content_type: <hard-coded pk of model>
答案 1 :(得分:-4)
为什么你不应该使用灯具有几个原因:
你应该使用&#34; mock&#34;而不是灯具。像工厂男孩的应用程序: