views:

56

answers:

2

I have a TestCase that doesn't seem to load the fixtures.

I'm seeing this error as the test database is being built:

No fixtures found.  
.............................................Problem installing fixture '/Users/Bryan/work/CNPROG/forum/fixtures/forum_fixtures.json': Traceback (most recent call last):  
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/management/commands/loaddata.py", line 169, in handle  
    obj.save(using=using)  
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/serializers/base.py", line 165, in save  
    models.Model.save_base(self.object, using=using, raw=True)  
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/db/models/base.py", line 543, in save_base  
    created=(not record_exists), raw=raw)  
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/dispatch/dispatcher.py", line 162, in send  
    response = receiver(signal=self, sender=sender, **named)  
  File "/Users/Bryan/work/CNPROG/forum/models.py", line 656, in record_ask_event  
    activity = Activity(user=instance.author, active_at=instance.added_at, content_object=instance, activity_type=TYPE_ACTIVITY_ASK_QUESTION)  
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/db/models/fields/related.py", line 302, in __get__  
    rel_obj = QuerySet(self.field.rel.to).using(db).get(**params)  
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/db/models/query.py", line 341, in get  
    % self.model._meta.object_name)  
DoesNotExist: User matching query does not exist.  



class UserProfileTestCases(TestCase):  
    """These are tests to verify that refactoring of UserProfile is correct"""  
    fixtures = ['forum_fixtures.json'] # apparently this needs to be in fixtures/ directory.  
    def setUp(self):  
        self.client = Client()  
        if self.client.login(username='DickCheney', password='test'):   
            print "client.login DickCheney successful";    
        else:   
            print "client.login FAILED"  

For some reason the fixtures are not loading.

The fixture is located at:
forum/fixtures/forum_fixtures.json

How can I output the reason that the fixture is not loading?

The Traceback suggests something is happening here:
File "/Users/Bryan/work/CNPROG/forum/models.py", line 656, in record_ask_event

But I can't imagine why that would affect the loading of the fixtures. When I looked at the code, record_ask_events is called via post_save event.
I was able to successfully manage.py loaddata forum_fixtures so I believe I set them up correctly.

A: 

Run tests with greater detail with this command: python manage.py test --verbosity=2

I fixed this by rearranging the order of the fixtures.

If you have Related objects, you need to make sure the objects that have the most associations ( e.g. auth_user ) is listed first in the fixture because the related objects may be called during a save.

Django v1.2 only looked for fixtures named 'initial_data'. Not once was there are search for 'forum_fixtures.json'

I changed the fixture name to 'initial_data.json' and it now works.

BryanWheelock
A: 

I'm having this exact problem. My app is included in my INSTALLED_APPS tuple in my settings file. So according to django docs, it should search the fixtures directory under the app directory for any filenames I place in the 'fixtures' attribute of my TestCase class. Doesn't work. Don't want to name my fixture 'initial_data.json' because I only want it to be used when I run unit tests.

Jon Oelfke