簡體   English   中英

測試期間沒有加載夾具

[英]Fixtures not loaded during testing

我寫了一個單元測試,檢查初始數據是否正確加載。 但是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個節點,我使用此夾具作為初始數據加載到db中使用以下命令:

python manage.py loaddata core/core_fixture.json

它們位於我在settings.py設置FIXTURE_DIRS提供的文件夾中。

在另一個主題中找到解決方案, 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)  

在測試用例中加載fixture時,我認為Django不允許你包含目錄名。 嘗試將fixtures設置更改為:

fixtures = ['core_fixture.json',]

您可能還必須更改FIXTURE_DIRS設置,以包含core目錄。

如果以詳細模式運行測試,您將看到Django嘗試加載的fixture文件。 這應該可以幫助您調試配置。

python manage.py test -v 2

確保您的應用已在INSTALLED_APPS列出,並且您的應用包含models.py文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM