如何在PyCharm中运行unittest并从__init__.py导入内容?

1 投票
1 回答
1444 浏览
提问于 2025-04-18 17:33

我在用pycharm进行项目测试,项目的结构如下:

root/
  tests/
    __init__.py
    mytest.py

当我从init.py文件中导入my_settings到mytest.py时,出现了以下错误:

Traceback (most recent call last):
  File "/Applications/PyCharm.app/helpers/pycharm/utrunner.py", line 116, in <module> modules = [loadSource(a[0])]
  File "/Applications/PyCharm.app/helpers/pycharm/utrunner.py", line 40, in loadSource module = imp.load_source(moduleName, fileName)
  File "/Users/user/temp/test/tests/mytest.py", line 2, in <module> from tests import my_settings
  ImportError: cannot import name my_settings

我可以用以下命令顺利运行测试:

python -m unittest discover -s tests/

这是一个示例项目:https://github.com/xcompass/pycharm-broken-test-path

我正在使用pycharm 3.4版本。

1 个回答

0

这对原发帖者来说可能已经太晚了,但我在使用PyCharm时遇到了完全相同的问题,觉得把我的解决办法分享出来,或许能帮助到那些通过搜索找到这个问题的人。

这个问题的一个可能原因是,Python没有从你想要的路径导入模块。在出现ImportError的地方上方插入以下代码:

# using example module from above
import tests
print(tests.__file__)

然后在PyCharm中重新运行测试,看看输出结果。

你可能会发现,"tests"模块的路径并不是你预期的。如果是这样,删除错误的模块应该能解决问题。

如果这样还是不行,可以在错误出现的地方上方插入以下代码,检查一下Python的路径是否是你想要的:

import sys
print(sys.path)

另外,记得删除路径中的任何构建目录,这样你就不会意外地导入错误的文件了。

最后,删除目录中的所有*.pyc文件:

find -name '*.pyc' -delete

这最后一步可能不会直接影响上面的问题,但在我重新构建一个干净的vagrant环境后,导致py.test失败了。

撰写回答