“'测试'模块错误导入”是什么意思?

新手上路,请多包涵

我已经逐行复制了一个工作测试并且只是更改了几个名称(至少我是这么认为的)现在我得到了这个非常神秘的错误:(我已经用 FOO,BAR 替换了一些东西)

 ImportError: 'tests' module incorrectly imported from 'FOO/exports/tests'. Expected 'FOO/exports'. Is this module globally installed?

问题是我根本不明白这个错误。此错误消息是什么意思?

完整的堆栈跟踪:

 Traceback (most recent call last):
  File "BAR/modeling/manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
    utility.execute()
  File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/core/management/__init__.py", line 345, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/core/management/commands/test.py", line 30, in run_from_argv
    super(Command, self).run_from_argv(argv)
  File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/core/management/base.py", line 348, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/core/management/commands/test.py", line 74, in execute
    super(Command, self).execute(*args, **options)
  File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/core/management/base.py", line 399, in execute
    output = self.handle(*args, **options)
  File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/core/management/commands/test.py", line 90, in handle
    failures = test_runner.run_tests(test_labels)
  File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/test/runner.py", line 531, in run_tests
    suite = self.build_suite(test_labels, extra_tests)
  File "/Users/jonathan/anaconda/lib/python2.7/site-packages/django/test/runner.py", line 451, in build_suite
    tests = self.test_loader.discover(start_dir=label, **kwargs)
  File "/Users/jonathan/anaconda/lib/python2.7/unittest/loader.py", line 206, in discover
    tests = list(self._find_tests(start_dir, pattern))
  File "/Users/jonathan/anaconda/lib/python2.7/unittest/loader.py", line 267, in _find_tests
    raise ImportError(msg % (mod_name, module_dir, expected_dir))
ImportError: 'tests' module incorrectly imported from 'FOO/exports/tests'. Expected 'FOO/exports'. Is this module globally installed?

原文由 jonalv 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 559
2 个回答

根据我的经验,运行测试时奇怪的 ImportErrors 是由测试模块本身中的 ImportError 引起的。

确保可以导入您的测试模块:

 $ python manage.py shell
...
>>> import foo.exports.tests

编辑:

如果这导致错误,请确保您没有同时拥有目录 foo/exports/tests 和文件 foo/exports/tests.py

原文由 Daniel Hepper 发布,翻译遵循 CC BY-SA 3.0 许可协议

正如 Daniel Hepper 在上面的评论中所说,尝试检查您的应用程序中是否同时拥有 app/tests 文件夹和 app/tests.py 文件。

Django startapp 自动创建一个 tests.py 文件,所以可能有一个你没有注意到的文件。

如果您只是删除自动生成的 tests.py 文件,它应该可以工作。 (显然,您应该在删除任何内容之前检查文件的内容!)

原文由 Brendan Quinn 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题