我正在尝试使用夹具数据运行测试,并得到臭名昭著的IntegrityError: column user_id is not unique
错误。
现在,查看我的灯具,我可以看到我的灯具中的用户模型的 id 彼此之间是唯一的。我推断冲突与(非测试)数据库中的现有数据发生冲突。这个对吗?(编辑:这似乎是不正确的 - 见下文)
我希望能够准确控制哪些数据可用于我的测试。有没有办法阻止 django testrunner 从我的实时数据库中加载数据,以及我的夹具数据?(编辑:是的 - 见 Thibaut 的回答)。
编辑:根据 Thibaut 的回答,切换到使用干净的内存数据库并不能解决问题。因此,我推断我现有的开发数据库不是问题。
所以,我有第三个问题:在测试期间加载夹具时如何诊断 IntegrityError 的原因?(而且,我该如何解决?)
编辑 2:我的问题的解决方案,除了从一个干净的数据库开始(根据 Thibault J)之外,还从安装的应用程序中删除引用用户的模型,直到错误不再发生。
DrTyrsa 的另一个建议(除了查看数据)是使用自然键,这对于 User 无疑需要一定数量的猴子补丁或其他黑客(编辑 User 的代码?)。