5

我写了一个单元测试检查初始数据是否正确加载。然而,Node.objects.all().count()总是返回 0,因此似乎根本没有加载固定装置。没有加载夹具的命令行中没有输出/错误消息。

from core.models import Node

class NodeTableTestCase(unittest.TestCase):
    fixtures = ['core/core_fixture.json']
    def setUp(self):
        print "nothing to prepare..."

    def testFixture(self):
        """Check if initial data can be loaded correctly"""
        self.assertEqual(Node.objects.all().count(), 14) 

夹具core_fixture.json包含 14 个节点,我使用此夹具作为初始数据加载到数据库中,使用以下命令:

python manage.py loaddata core/core_fixture.json

它们位于我在settings.py设置中提供的文件夹中FIXTURE_DIRS

4

3 回答 3

5

在另一个线程中找到了解决方案,来自 John Mee 的回答

# Import the TestCase from django.test:

# Bad:  import unittest
# Bad:  import django.utils.unittest
# Good: import django.test

from django.test import TestCase

class test_something(TestCase):
    fixtures = ['one.json', 'two.json']
    ...

这样做我收到一条正确的错误消息,说外键被违反,我还必须包括应用程序“auth”的固定装置。我用这个命令导出了所需的数据:

manage.py dumpdata auth.User auth.Group > usersandgroups.json

使用 Unittest 我只收到了加载夹具数据失败的消息,这不是很有帮助。

最后我的工作测试看起来像这样:

from django.test import TestCase

class NodeTableTestCase2(TestCase):
    fixtures = ['auth/auth_usersandgroups_fixture.json','core/core_fixture.json']

    def setUp(self):
        # Test definitions as before.
        print "welcome in setup: while..nothing to setup.."

    def testFixture2(self):
        """Check if initial data can be loaded correctly"""
        self.assertEqual(Node.objects.all().count(), 11)  
于 2012-07-23T08:52:54.327 回答
1

确保您列出了您的INSTALLED_APPS应用程序并且您的应用程序包含models.py文件。

于 2014-07-03T15:46:54.940 回答
1

在测试用例中加载夹具时,我认为 Django 不允许您包含目录名称。尝试将您的fixtures设置更改为:

fixtures = ['core_fixture.json',]

您可能还必须更改FIXTURE_DIRS设置以包含core目录。

如果您以详细模式运行测试,您将看到 Django 尝试加载的夹具文件。这应该可以帮助您调试配置。

python manage.py test -v 2
于 2012-07-22T21:49:34.703 回答