2017-09-22 37 views
0

Settings.py:夾具在Django不加載

import os 

# Build paths inside the project like this: os.path.join(BASE_DIR, ...) 
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 

FIXTURE_DIRS = (
    os.path.join(BASE_DIR, '/deals/fixtures/'), 
) 

test_deals.py:

import unittest 
from deals.models import Retailer 
import django.test 

class TestRetailer(django.test.TestCase): 

    def setUp(self): 
     fixtures = ['deals_test_data.json'] 
     self.bestbuy = Retailer(Retailer.objects.get(pk=1)) 

    def test_name(self): 
     self.assertEqual(self.bestbuy.name, 'Best Buy US') 

項目結構:

project 
    - deals 
    - fixtures 
     - deals_test_data.json 
    - tests 
     - test_deals.py 

錯誤:

Traceback (most recent call last): 
    File "/home/danny/PycharmProjects/askarby/deals/tests/test_deals.py", line 10, in setUp 
    self.bestbuy = Retailer(Retailer.objects.get(pk=1)) 
    File "/home/danny/.virtualenvs/AskArby/lib/python3.5/site-packages/django/db/models/manager.py", line 85, in manager_method 
    return getattr(self.get_queryset(), name)(*args, **kwargs) 
    File "/home/danny/.virtualenvs/AskArby/lib/python3.5/site-packages/django/db/models/query.py", line 380, in get 
    self.model._meta.object_name 
deals.models.DoesNotExist: Retailer matching query does not exist. 

Destroying test database for alias 'default'... 

Process finished with exit code 1 

我試過不使用FIXTURES_DIR,而是使用fixtures = ['../ deals_test_data.jason']。我試過在FIXTURES_DIR的字符串的前面和後面刪除斜槓。沒有快樂。

我該如何加載我的燈具?

回答

0

的燈具被加載,但我的代碼檢索對象必須已經脫落。這釘了它:

import unittest 
from django.test import TestCase 
from deals.models import Retailer 

class TestRetailer(TestCase): 

    fixtures = ['deals_test_data.json'] 

    def test_loaded(self): 
     s = Retailer.objects.get(pk=1) 
     self.assertEquals(s.name, "Best Buy US") 
1

看起來你有一個錯字

fixtures = ['deals_test_data.json'] 
# but file - test_deals_data.jason 
+0

感謝您的發現。錯字在我的文本中,但不在我的實際代碼中。已編輯的問題,以反映實際上市,問題依然存在! – RubyNoob