如何在PyCharm中运行unittest并从__init__.py导入内容?
我在用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失败了。