我已经逐行复制了一个工作测试,只更改了一些名称(至少我认为如此),现在我得到了这个非常神秘的错误:(我用FOO,BAR替换了一些东西)
String
问题在于我根本不理解错误。这个错误信息是什么意思?
完成堆栈跟踪:
ImportError: 'tests' module incorrectly imported from 'FOO/exports/tests'. Expected 'FOO/exports'. Is this module globally installed?
答案 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。