PyCharm 单元测试:"Failed to import test module" 由符号链接环境中的 "loadTestsFromName" 引起

PyCharm unittest: "Failed to import test module" caused by "loadTestsFromName" in a symlink environment

我试图在 PyCharm 中 运行 我的单元测试,其中我的工作空间是一个符号链接(通过 ln -s)。我一直得到以下输出:

Testing started at 17:50 ...
<HOME>/.virtualenvs/venv/bin/python <PYCHARM>/helpers/pycharm/_jb_unittest_runner.py --path <PROJECT_ACTUAL_DIR>/module/test_module.py
Launching unittests with arguments python -m unittest <PROJECT_LINKED_DIR>/module/module_test.py in <PROJECT_ACTUAL_DIR>/module

Error
Traceback (most recent call last):
  File "/usr/lib/python3.5/unittest/case.py", line 58, in testPartExecutor
    yield
  File "/usr/lib/python3.5/unittest/case.py", line 600, in run
    testMethod()
  File "/usr/lib/python3.5/unittest/loader.py", line 34, in testFailure
    raise self._exception
ImportError: Failed to import test module: <PROJECT_LINKED_DIR>/module/test_module
Traceback (most recent call last):
  File "/usr/lib/python3.5/unittest/loader.py", line 153, in loadTestsFromName
    module = __import__(module_name)
ImportError: No module named '<PROJECT_LINKED_DIR>/module/test_module'

任何人都可以给我解决这个问题的好方法吗?我想保留我的符号链接结构。

原来是符号链接结构的问题。特别是 运行 使用虚拟路径的单元测试失败:

python -m unittest <PROJECT_LINKED_DIR>/module/module_test.py

在使用实际目录时有效:

python -m unittest <PROJECT_ACTUAL_DIR>/module/module_test.py

PyCharm 配置然而忠实地尝试使用,因为这是我打开项目的地方(参见 "Run->Edit Configurations...")。

不幸的是,我无法为这个问题想出通用的解决方案。我只在 运行 测试时找到了解决方法。

解决方法: 有趣的是,对于 PyCharm IDE,运行 整个文件 test_module.py 引发上述异常,运行 测试 classes 并测试自己工作得很好。因此,在初始化测试时尽量不要单击文件 test_module.py 的 header(例如,通过按 STRG+SHIFT+F10)。而是关注 class 名称或测试方法的签名。