【问题标题】:ImportError under admin.autodiscover() when trying to run single django-nose test尝试运行单个 django-nose 测试时 admin.autodiscover() 下的 ImportError
【发布时间】:2015-05-26 16:45:26
【问题描述】:

我正在尝试使用 django-nose 运行单个测试:

./manage.py test lead.tests:LeadStatTests.basic_stat_test

并发生以下 ImportError:

======================================================================
ERROR: Failure: ImportError (cannot import name LeadSource)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/kolen/.virtualenvs/someenv/lib/python2.7/site-packages/nose/loader.py", line 420, in loadTestsFromName
    addr.filename, addr.module)
  File "/Users/kolen/.virtualenvs/someenv/lib/python2.7/site-packages/nose/importer.py", line 47, in importFromPath
    return self.importFromDir(dir_path, fqname)
  File "/Users/kolen/.virtualenvs/someenv/lib/python2.7/site-packages/nose/importer.py", line 94, in importFromDir
    mod = load_module(part_fqname, fh, filename, desc)
  File "/Users/kolen/items/someproject/lead/tests.py", line 16, in <module>
    from lead.models import Lead, Action, LeadSource, LeadType, events_by_month, EventSummary
  File "/Users/kolen/items/someproject/lead/models.py", line 38, in <module>
    User = get_user_model()
  File "/Users/kolen/.virtualenvs/someenv/lib/python2.7/site-packages/django/contrib/auth/__init__.py", line 127, in get_user_model
    user_model = get_model(app_label, model_name)
  File "/Users/kolen/.virtualenvs/someenv/lib/python2.7/site-packages/django/db/models/loading.py", line 271, in get_model
    self._populate()
  File "/Users/kolen/.virtualenvs/someenv/lib/python2.7/site-packages/django/db/models/loading.py", line 78, in _populate
    self.load_app(app_name)
  File "/Users/kolen/.virtualenvs/someenv/lib/python2.7/site-packages/django/db/models/loading.py", line 99, in load_app
    models = import_module('%s.models' % app_name)
  File "/Users/kolen/.virtualenvs/someenv/lib/python2.7/site-packages/django/utils/importlib.py", line 40, in import_module
    __import__(name)
  File "/Users/kolen/.virtualenvs/someenv/lib/python2.7/site-packages/debug_toolbar/models.py", line 63, in <module>
    patch_root_urlconf()
  File "/Users/kolen/.virtualenvs/someenv/lib/python2.7/site-packages/debug_toolbar/models.py", line 51, in patch_root_urlconf
    reverse('djdt:render_panel')
  File "/Users/kolen/.virtualenvs/someenv/lib/python2.7/site-packages/django/core/urlresolvers.py", line 507, in reverse
    app_list = resolver.app_dict[ns]
  File "/Users/kolen/.virtualenvs/someenv/lib/python2.7/site-packages/django/core/urlresolvers.py", line 329, in app_dict
    self._populate()
  File "/Users/kolen/.virtualenvs/someenv/lib/python2.7/site-packages/django/core/urlresolvers.py", line 267, in _populate
    for pattern in reversed(self.url_patterns):
  File "/Users/kolen/.virtualenvs/someenv/lib/python2.7/site-packages/django/core/urlresolvers.py", line 365, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "/Users/kolen/.virtualenvs/someenv/lib/python2.7/site-packages/django/core/urlresolvers.py", line 360, in urlconf_module
    self._urlconf_module = import_module(self.urlconf_name)
  File "/Users/kolen/.virtualenvs/someenv/lib/python2.7/site-packages/django/utils/importlib.py", line 40, in import_module
    __import__(name)
  File "/Users/kolen/items/someproject/system/urls.py", line 8, in <module>
    admin.autodiscover()
  File "/Users/kolen/.virtualenvs/someenv/lib/python2.7/site-packages/django/contrib/admin/__init__.py", line 29, in autodiscover
    import_module('%s.admin' % app)
  File "/Users/kolen/.virtualenvs/someenv/lib/python2.7/site-packages/django/utils/importlib.py", line 40, in import_module
    __import__(name)
  File "/Users/kolen/items/someproject/lead/admin.py", line 5, in <module>
    from lead.models import LeadSource, LeadType, Lead, ........, \
ImportError: cannot import name LeadSource

使用./manage.py test 运行所有测试有效。此异常仅在尝试运行单个测试或测试类时发生。但是运行所有测试需要太多时间,所以我想要一种运行单个测试的方法。

Application 和 django admin 也可以工作。项目根目录下没有__init__.py

【问题讨论】:

    标签: python unit-testing nose django-nose


    【解决方案1】:

    突然发现问题是django-debug-toolbar引起的。从项目中删除它解决了这个问题。

    还有possibly duplicate of this question with similar problem也是django-debug-toolbar引起的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-20
      • 2015-06-28
      • 2012-09-12
      • 2012-08-01
      • 2012-07-28
      • 2012-11-11
      • 2013-06-18
      • 1970-01-01
      相关资源
      最近更新 更多