Django无视我的TestCase灯具

时间:2012-08-08 19:00:34

标签: django django-fixtures

我有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 dumpdata,我在customers / fixtures目录中创建了一个名为“westeros”的fixture文件,其中“customers”是settings.INSTALLED_APPS中列出的应用程序。

当我运行测试时,任何详细程度,Django都会忽略夹具并通过test_basic_addition测试。没有错误,没有夹具加载。就好像TestCase导入不存在一样。关于什么可能是错误的或者如何调试它的任何想法?

2 个答案:

答案 0 :(得分:2)

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

fixtures = ['westeros']

但是,fixture文件本身必须具有与其序列化程序对应的扩展名,例如j {@ {1}},westeros.jsonwesteros.json.zip,分别为json,zipped json或xml。

答案 1 :(得分:1)

您的westeros文件位于何处?

它需要位于应用内的fixtures目录中,或位于FIXTURE_DIRS文件中settings.py指定的目录

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

你的灯具文件名为westeros吗?还是有文件扩展名?

如你所见,Django会在夹具加载时静默失败。 (至少在1.3之前,我还没有在新的1.4版本中使用过灯具)。但是你实际上并没有测试灯具是否正在加载。 抛出self.assertGreater(YourModel.objects.all(), 0)或某些东西来验证没有对象,或者放入一个debbuger并开始查询你的某些模型。