从__init__.py导入内容时,如何在pycharm中运行unittest

时间:2014-08-17 04:07:36

标签: python unit-testing pycharm

我正在尝试使用以下结构在pycharm中的项目中运行测试:

root/
  tests/
    __init__.py
    mytest.py

当我将my_settings从 init .py导入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

我可以使用以下命令运行test:

python -m unittest discover -s tests/

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

我正在运行pycharm 3.4。

1 个答案:

答案 0 :(得分:0)

这对于原始海报来说已经太迟了,但是我和PyCharm有完全相同的问题,并且认为我的解决方案可以帮助那些通过搜索偶然发现的人。

对此问题的一种可能解释是,Python不是从您期望的路径导入的。在ImportError发生的位置上方插入以下行:

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

现在在pycharm中重新运行测试并检查输出。

您可能会发现,模块的路径是&#34;测试&#34;不是你所期望的。如果是这种情况,删除错误模块应该为您解决。

如果这没有帮助,请通过在错误上方插入以下行来检查python路径是否符合预期:

import sys
print(sys.path)

同时删除路径中的所有构建目录,这样您就不会意外导入坏蛋。

最后,从目录中删除任何* .pyc文件:

find -name '*.pyc' -delete

这最后一个可能不会影响上面的问题,但在重建一个干净的流浪盒之后导致py.test失败。