Django:文本 fixture 无法加载

标签 django testing fixtures

对我的项目进行了转储数据,然后在我的新测试中将其添加到固定装置中。

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/

相关文章:

python - 开发服务器上的 Django 媒体文件

python - Django自定义身份验证模型注册表单返回唯一用户名错误

javascript - 是否可以使用 Angular 场景编写单元测试?

maven - Karate 赛跑者在等待并行功能完成时挂起

mysql - 如何查找表中相对于初始 SQL fixture 的更改?

django - 邀请用户 django-allauth

django - Django REST Framework 应用程序真的必须是项目根应用程序文件夹的子文件夹吗?

javascript - 保存后自动更新时如何识别 Selenium 页面中的元素?(自动化相关)

pytest:如何从文件中读取灯具列表?

ruby-on-rails - 如何加载 Globalize 翻译装置来测试模型?