Почему Django-1.3 не находит мои приборы для UnitTest? - PullRequest
3 голосов
/ 04 мая 2011

Я пытаюсь использовать свои приборы в UnitTest.

AddFavoritesTestCase(unittest.TestCase):  

fixtures = ['/Users/Bryan/work/osqa/fixtures/fixture_questions.json']  

def setUp(self):  
    self.factory = RequestFactory()  

def testAdminCanFavorite(self):  
    user = User.objects.get(pk=3)   
    ...  
    self.assertEqual(response.status_code, 200)  


======================================================================  
ERROR: testAdminCanFavorite (forum.tests.tests_building_stickyness.AddFavoritesTestCase)  
----------------------------------------------------------------------  
Traceback (most recent call last):  
  File "/Users/Bryan/work/osqa/forum/tests/tests_building_stickyness.py", line 18, in testAdminCanFavorite  
    user = User.objects.get(pk=3) # Kallie has admin  
  File "/usr/local/lib/python2.7/site-packages/Django-1.3-py2.7.egg/django/db/models/manager.py", line 132, in get  
    return self.get_query_set().get(*args, **kwargs)  
  File "/Users/Bryan/work/osqa/forum/models/base.py", line 64, in get  
    obj = super(CachedQuerySet, self).get(*args, **kwargs)  
  File "/usr/local/lib/python2.7/site-packages/Django-1.3-py2.7.egg/django/db/models/query.py", line 349, in get  
    % self.model._meta.object_name)  
DoesNotExist: User matching query does not exist.  

Кажется, приборы не загружаются.

Мне удалось использовать приборы для заполнения базы данных, но по какой-то причине приборы не были обнаружены в тестах.

Путь правильный, но я не могу понять, что идет не так.

$ ls /Users/Bryan/work/osqa/fixtures/fixture_questions.json 
/Users/Bryan/work/osqa/fixtures/fixture_questions.json

Выполнение теста при более высокой детализации показывает, что приборы не найдены. Я использую Django 1.3.

Ответы [ 2 ]

3 голосов
/ 02 июня 2011

Импорт TestCase из django.test;

  • Не: import unittest
  • Не: import django.utils.unittest
  • Но: import django.test

Как это:

from django.test import TestCase

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

https://docs.djangoproject.com/en/1.3/topics/testing/#django.test.TestCase

0 голосов
/ 04 мая 2011

Вы не передаете полный путь к устройству, только имя устройства:

fixtures = ['fixture_questions.json']  

Пока устройство находится в каталоге fixtures в приложении, которое находится в INSTALLED_APPS, Django будетнайди это.

...