No fixtures found when testing an app on Django

I have finally decided to create unit test for all my code. That is I'm trying to create fixtures based on my models to test my function against them.

I have create a json fixture using dumpdata command and placed it under fixtures directory on my app. The following is the code on my test:

import unittest
from mysite.myapp.models import Post

class RatingTestCase(unittest.TestCase):
  fixtures = [
      'posts.json',
  ]

def test_me(self):
  p = Post.objects.all()
  self.assertTrue(p)

I run my test using the following command on my Arch Linux machine:

python2.7 manage.py test myapp

It creates a sqlite database and installs all the tables and indeces, however at the end it says no fixtures found and it says my test failed since it didn't find any data.

I'm running the latest revision of development version of Django and noticed that based on the documentation I am supposed to import unittest using:

from django.utils import unittest

However, when I do this, it complains that unittest cannot be imported. That's why I import unittest directly from my python path which worked.

I've tried to mock django model objects before, but I think it's better to test Django apps using fixtures than using mock libraries. Any idea how to load the fixtures?

Thanks in advance.

EDIT: If I change my fixture name to initial_data.json, it will load it every time I run my test. However, I still need to have multiple fixture names for running different tests.

EDIT: I got it working by importing TestCase from the following:

from django.test import TestCase

There are a couple things that could help:

  • You can run the test with --verbosity=2 to see which directories django looks in for fixtures.
  • django TestCase is what django recommends to use, opposed to unittest.
  • Where is your fixture directory/file located? If it's not in your app you have to specify a fixture directory in your settings file.

  • 您是否检查过灯具存在的路径是否可用:

    settings.FIXTURE_DIRS = ('/path/to/proj_folder/fixtures/',)
    

    I had the name problem. The code below would not work even though I had the file in my fixture directory under the app folder.

    fixtures = ['initial_data2.json']

    I then changed the import statement to below an it just worked.

    from django.test import TestCase

    链接地址: http://www.djcxy.com/p/52302.html

    上一篇: Django在测试中加载装置(不是来自已安装的应用程序)

    下一篇: 在Django上测试应用程序时未找到任何固件