[英]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.