Reputation: 5644
I'm new to tests in Django. And I need to write a couple.
Django version 1.9.7.
OS: Linux version 4.2.0-42-generic (buildd@lgw01-54) (gcc version 5.2.1 20151010 (Ubuntu 5.2.1-22ubuntu2) ) #49-Ubuntu SMP Tue Jun 28 21:26:26 UTC 2016
My simple test code is:
cat animal/tests.py
from django.test import TestCase
from animal.models import Animal
class AnimalTestCase(TestCase):
def say_hello(self):
print('Hello, World!')
I execute it in this way ./manage.py test animal
And the following error arise:
Traceback (most recent call last):
File "./manage.py", line 13, in <module>
execute_from_command_line(sys.argv)
File "/path-to-venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
utility.execute()
File "/path-to-venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 327, in execute
django.setup()
File "/path-to-venv/local/lib/python2.7/site-packages/django/__init__.py", line 18, in setup
apps.populate(settings.INSTALLED_APPS)
File "/path-to-venv/local/lib/python2.7/site-packages/django/apps/registry.py", line 85, in populate
app_config = AppConfig.create(entry)
File "/path-to-venv/local/lib/python2.7/site-packages/django/apps/config.py", line 90, in create
module = import_module(entry)
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/path-to-venv/local/lib/python2.7/site-packages/autofixture/__init__.py", line 5, in <module>
from autofixture.base import AutoFixture
File "/path-to-venv/local/lib/python2.7/site-packages/autofixture/base.py", line 7, in <module>
from django.contrib.contenttypes.generic import GenericRelation
ImportError: No module named generic
What am I doing wrong?
Upvotes: 0
Views: 2327
Reputation: 309049
Your installed version of django-autofixture does not support Django 1.9, because it has out of date imports for GenericRelation
.
Try upgrading to the latest version. The project's changelist says that Django 1.9 support was added in version 0.11.0.
In order for Django to run your method in your AnimalTestCase
, you need to rename it so that it begins with test_
:
class AnimalTestCase(TestCase):
def test_say_hello(self):
print('Hello, World!')
Upvotes: 1
Reputation: 53774
You have the wrong import, the correct import is from
django.contrib.contenttypes.fields import GenericRelation
But that seems to actually come from django auto-fixtures rather than from your own code. The good news is that you don't need auto-fixtures for this sort of simple tests. Just say good bye to it.
Upvotes: 2