2016-08-02 66 views
0

我是tests in Django的新手。我需要寫一對夫婦。編寫和運行測試。 ImportError:沒有模塊命名爲generic

Django版本1.9.7。 OS:Linux version 4.2.0-42-generic ([email protected]) (gcc version 5.2.1 20151010 (Ubuntu 5.2.1-22ubuntu2)) #49-Ubuntu SMP Tue Jun 28 21:26:26 UTC 2016

我簡單的測試代碼:

cat animal/tests.py 

from django.test import TestCase 
from animal.models import Animal 

class AnimalTestCase(TestCase): 
    def say_hello(self): 
     print('Hello, World!') 

我這樣./manage.py test animal

執行它,會出現以下錯誤:

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 

我在做什麼錯?

+0

你可以發佈你的動物模型嗎? – levi

回答

1

您安裝的django-autofixture版本不支持Django 1.9,因爲它已經過時導入GenericRelation

嘗試升級到最新版本。該項目的changelist表示在版本0.11.0中添加了Django 1.9支持。

爲了Django的在你的AnimalTestCase運行你的方法,你需要重新命名它,使它開始test_

class AnimalTestCase(TestCase): 
    def test_say_hello(self): 
     print('Hello, World!') 
+0

我升級了django-autofixture,並且沒有錯誤了。謝謝。 – trex

+0

感謝您提供有關'test_'前綴的提示! – trex

2

你打錯進口,正確的進口主要是來自

django.contrib.contenttypes.fields import GenericRelation 

但這似乎實際上來自django自動夾具,而不是從您自己的代碼。好消息是,你不需要自動夾具進行這種簡單的測試。只要說再見吧。

+0

我升級了django-autofixture,沒有錯誤了。你說我不必使用django-autofixture。那麼,我必須使用什麼呢? – trex

+1

其實沒什麼!例如,您所展示的測試不需要任何固定裝置! – e4c5

相關問題