Django test not loading fixture data

后端 未结 4 1083
面向向阳花
面向向阳花 2021-02-07 06:40

I have written tests for a Django project that i am working on, but one particular fixture fails to load. The fixture is generated using dumpdata and i havent fiddled with it at

相关标签:
4条回答
  • 2021-02-07 06:49

    I Am not sure if this fixes your problem, but on this site:

    https://code.djangoproject.com/wiki/Fixtures

    I found an interesting remark:

    you see that Django searches for appnames/fixtures and settings.FIXTURE_DIRS and loads the first match. So if you use names like testdata.json for your fixtures you must make sure that no other active application uses a fixture with the same name. If not, you can never be sure what fixtures you actually load. Therefore it is suggested that you prefix your fixtures with the application names, e.g. myapp/fixtures/myapp_testdata.json .

    Applying this (renaming the fixtures with appname as prefix in the filename), solved my problem (I had the same issue as described here)

    0 讨论(0)
  • 2021-02-07 06:58

    Import the TestCase from django.test:

    from django.test import TestCase
    
    class test_something(TestCase):
        fixtures = ['one.json', 'two.json']
        ...
    
    • Not: import unittest
    • Not: import django.utils.unittest
    • But: import django.test

    That's a day of frustration right there. Stop complaining - it's in the docs :-/

    0 讨论(0)
  • 2021-02-07 07:07

    Check if the fixture is really in the right place. From the docs:

    Django will search in three locations for fixtures:

    1. In the fixtures directory of every installed application
    2. In any directory named in the FIXTURE_DIRS setting
    3. In the literal path named by the fixture
    0 讨论(0)
  • 2021-02-07 07:10

    One thing to note, when creating the FIXTURE_DIRS constant in your settings file, be sure to leave out the leading '/' if you have a general fixtures directory off of the root of your project.

    Ex:
    '/actual/path/to/my/app/fixtures/'

    Now, in the settings.py file:
    Will NOT work:
    FIXTURE_DIRS = '/fixtures/'

    Will work:
    FIXTURE_DIRS = 'fixtures/'

    It's possible this depends on how your other routes are configured, but it was a gotcha that had me scratching my head for a little while. Hope this is useful. Cheers.

    0 讨论(0)
提交回复
热议问题