2012-07-22 28 views
5

Tôi đã viết kiểm tra đơn vị kiểm tra xem liệu dữ liệu ban đầu có được tải chính xác hay không. Tuy nhiên, Node.objects.all().count() luôn trả về 0, do đó có vẻ như các đồ đạc không được nạp gì cả. Không có đầu ra/lỗi msg trong dòng lệnh mà đồ đạc không được nạp.Đồ đạc không được nạp trong khi thử nghiệm

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) 

các vật cố core_fixture.json chứa 14 nút và tôi đang sử dụng vật cố này như là một tải dữ liệu ban đầu vào db bằng cách sử dụng lệnh sau:

python manage.py loaddata core/core_fixture.json 

Chúng nằm trong thư mục tôi cung cấp trong settings.py cài đặt FIXTURE_DIRS.

Trả lời

5

Tìm thấy giải pháp trong chủ đề khác, answer from 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'] 
    ... 

Việc làm này tôi nhận được một thông báo lỗi thích hợp, nói rằng chính nước ngoài bị vi phạm và tôi cũng đã bao gồm các đồ đạc cho các ứng dụng "auth ". Tôi xuất khẩu các dữ liệu cần thiết bằng lệnh này:

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

Sử dụng UnitTest tôi chỉ thông điệp rằng tải dữ liệu cố định thất bại, đó là không phải là rất hữu ích.

Cuối cùng kiểm tra làm việc của tôi trông như thế này:

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) 
1

Khi tải đồ đạc trong các trường hợp thử nghiệm, tôi không nghĩ Django cho phép bạn bao gồm tên thư mục. Hãy thử thay đổi thiết lập của bạn để fixtures:

fixtures = ['core_fixture.json',] 

Bạn có thể phải thay đổi cài đặt FIXTURE_DIRS của bạn là tốt, để bao gồm các thư mục core.

Nếu bạn chạy thử nghiệm trong verbose mode, bạn sẽ thấy các tệp cố định mà Django cố gắng tải. Điều này sẽ giúp bạn gỡ lỗi cấu hình của mình.

python manage.py test -v 2 
+0

Cảm ơn các đề xuất. Tôi đưa vào FIXTURE_DIRS cũng là thư mục lõi. Trong khi tôi vẫn có thể tải các đồ đạc bằng lệnh loaddata, tôi nhận được lỗi sau khi chạy các kiểm tra: Kiểm tra xem dữ liệu ban đầu có thể được nạp đúng không ... FAIL –

+0

Nó có thể liên quan đến tín hiệu mô hình của tôi và một số xung đột dữ liệu. Trong khi tôi không thực hiện tín hiệu cho lệnh loaddata với "if not kwargs.get ('raw', False):", tín hiệu có thể được thực hiện trong khi tải các đồ đạc trong một bộ kiểm tra. sẽ kiểm tra nó. –

1

Hãy chắc chắn rằng bạn đã ứng dụng của bạn được liệt kê trong INSTALLED_APPS và rằng ứng dụng của bạn có chứa models.py tập tin.

Các vấn đề liên quan