【问题标题】:How do I get unittest run in pycharm when import something from __init__.py从 __init__.py 导入某些内容时,如何在 pycharm 中运行 unittest
【发布时间】:2014-08-17 04:07:35
【问题描述】:

我正在尝试在我的项目中使用以下结构在 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。

【问题讨论】:

  • 我无法重现您的错误。尝试删除 pycharm 测试配置并再次运行测试。
  • @Dunes 谢谢。我试过了,一样。这是我所做的: 1. 克隆 repo 2. PyCharm 中的新项目并导入源代码 3. 导航到 mytest.py 并右键单击“Run 'Unittests in mytest'” 然后我得到了同样的错误。

标签: python unit-testing pycharm


【解决方案1】:

这对于原始海报来说已经太晚了,但我在 PyCharm 上遇到了完全相同的问题,并认为提出我的解决方案可能会帮助那些通过搜索偶然发现这个问题的人。

此问题的一个可能解释是 Python 没有从您期望的路径导入。在发生 ImportError 的点上方插入以下行:

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

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

您可能会发现,“测试”模块的路径不是您所期望的。如果是这种情况,删除错误模块应该会为您修复它。

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

import sys
print(sys.path)

同时删除路径中的所有构建目录,以免意外导入坏蛋。

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

find -name '*.pyc' -delete

最后一个可能不会影响上述问题,但在重建一个干净的 vagrant box 后导致 py.test 失败。

【讨论】:

    猜你喜欢
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-12
    • 2015-07-30
    相关资源
    最近更新 更多