2

我有 Django 1.4。在我的 test.py 中,我有必要的 TestCase 导入:

from django.test import TestCase

为了隔离问题,我添加了以下行:

fixtures = ['westeros']

到默认示例测试用例,即

class SimpleTest(TestCase):
    fixtures = ['westeros']

    def test_basic_addition(self):
        """
        Tests that 1 + 1 always equals 2.
        """
        self.assertEqual(1 + 1, 2)

使用 django-admin.py 转储数据,我在 customers/fixtures 目录中创建了一个名为“westeros”的夹具文件,其中“customers”是 settings.INSTALLED_APPS 中列出的应用程序。

当我运行测试时,无论多么冗长,Django 都会简单地忽略夹具并通过test_basic_addition测试。没有错误,没有夹具加载。就好像 TestCase 导入不存在一样。关于可能出错或如何调试的任何想法?

4

2 回答 2

2

定义时可以省略扩展名fixtures,即

fixtures = ['westeros']

但是,fixture 文件本身必须具有与其序列化程序相对应的扩展名,例如westeros.jsonwesteros.json.zip或者westeros.xml分别对应于 json、zipped json 或 xml。

于 2012-08-08T22:35:57.673 回答
1

你的westeros文件在哪里?

它需要fixtures位于应用程序内的目录中或文件中指定的目录FIXTURE_DIRSsettings.py

您可以运行测试verbosity=2以获得完整输出。 https://docs.djangoproject.com/en/1.0/ref/django-admin/#test

您的固定装置文件是否命名westeros?还是有文件扩展名?

如您所见,Django 将在夹具加载时静默失败。(至少在 1.3 之前,我还没有在新的 1.4 版本中使用过灯具)。但是您实际上并没有测试固定装置是否正在加载。输入 a self.assertGreater(YourModel.objects.all(), 0)or somethign 以验证没有对象,或放入调试器并开始查询您的一些模型。

于 2012-08-08T20:50:47.840 回答