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

时间:2016-05-30 11:54:33

标签: python django

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

String

问题在于我根本不理解错误。这个错误信息是什么意思?

完成堆栈跟踪:

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

8 个答案:

答案 0 :(得分:114)

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

确保可以导入测试模块:

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

修改

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

答案 1 :(得分:24)

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

Django startapp会自动创建一个tests.py文件,因此可能会有一个您没有注意到的文件。

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

答案 2 :(得分:2)

确保您的树文件中没有 2 个名为 test.py 的文件,因为 Python 应该选择您想要的那个。

答案 3 :(得分:1)

只需添加到可能的情况列表中即可。

当本地安装的软件包时,这也可能在虚拟环境中发生。

在这种情况下,您只需要使用开发命令来卸载已“重新链接”它的版本(我不知道正确的术语)

~/dev/stufflib% pip uninstall stufflib
~/dev/stufflib% python setup.py develop
~/dev/stufflib% python setup.py test

答案 4 :(得分:1)

尝试检查您是否同时拥有app/tests文件夹和app / tests.py

应用中的文件。

默认情况下,文件会自动称为tests.py,删除该文件即可解决错误

答案 5 :(得分:0)

在我的情况下问题是因为我试图从符号链接到项目文件夹启动django测试任务,而不是从"真实"路径。当我从不使用符号链接的项目文件夹运行django测试任务时,我没有收到此错误。

答案 6 :(得分:0)

如果您已经创建了一个名为tests的目录并在其中写入了测试文件,例如test_views.py,test_models.py等,请确保删除由命令“ python”自动创建的文件“ test.py” manage.py startapp'

答案 7 :(得分:0)

一句话:删除test.py或tests文件夹 当我将之前在我的一个项目中编写的一些测试复制到我有超过 5 个相同 API 的新项目中时,我遇到了同样的问题。 通常我会创建一个名为测试的新文件夹,并将所有测试写入每个应用程序的文件夹中,以便一切看起来更好 当我在同一个应用程序中创建测试文件夹时,导致我解决这个问题的错误不是从应用程序文件夹中删除 test.py 文件 因为你不能在同一个应用程序中同时拥有测试文件夹和 test.py。