对我的项目进行了转储数据,然后在我的新测试中将其添加到固定装置中。
from django.test import TestCase
class TestGoal(TestCase):
fixtures = ['test_data.json']
def test_goal(self):
"""
Tests that 1 + 1 always equals 2.
"""
self.failUnlessEqual(1 + 1, 2)
运行测试时我得到:
Problem installing fixture 'XXX/fixtures/test_data.json':
DoesNotExist: XXX matching query does not exist.
但是当数据库为空时,手动执行加载数据 工作正常 不会。
我做了一个 dropdb,createdb 一个简单的 syncdb 尝试加载数据,但它失败了,同样的错误。
有什么线索吗?
Python 版本 2.6.5,Django 1.1.1
最佳答案
也许您遇到了一些外键问题。如果您的模型包含引用另一个模型的外键,但另一个模型不存在,您将收到此错误。
发生这种情况的原因有几个:如果您要指向另一个应用程序中的模型,但您没有包含在 test_data.json 转储中,就会遇到麻烦。
此外,如果外键发生变化,这可能会破坏序列化——这对于像 permissions 这样自动创建的字段来说尤其成问题。或 generic relations . Django 1.2 支持 natural keys ,这是一种使用模型的“自然”表示作为外键而不是可能更改的 ID 进行序列化的方法。
关于Django:文本 fixture 无法加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2733760/