【问题标题】:IntelliJ Python unittests cannot import modulesIntelliJ Python 单元测试无法导入模块
【发布时间】:2017-03-29 23:27:25
【问题描述】:

我正在尝试配置我的 IntelliJ Ultimate 2017 IDE 以运行 Python 单元测试。它不工作。

  • 项目为Gradle项目,大部分模块为Java/Scala。不过有几个 Python 模块。
  • Python 插件已安装,Python 方面已添加到相应的模块中。
  • Python 解释器设置良好。 IDE 实际上可以通过 ctrl 单击操作在代码中移动。
  • 在“项目结构”->“<mymodule>”-> 依赖项下,解释器和<Module source> 都包括在内。
  • 每个 Python 模块都有一个“内容根”。紧随其下的是一个src 文件夹,其下有一个test 文件夹。测试文件夹的内容与 src 文件夹相同,但文件前面带有 test_ 以避免 Python 名称冲突。
  • 测试配置已选中“将源/内容根添加到 PYTHONPATH”选项。解释器已指定。
  • 如果test 在模块设置中被标记为测试文件夹,我可以右键单击该文件夹中的测试并“运行测试”。但是,ImportErrors 会发生,因为它在 src 目录中找不到模块。
  • 在所有适当的位置都有__init__.py 文件。
  • IntelliJ 为您提供了它正在运行的内容,如果我在命令上运行它,它就会起作用,类似于:

    python -m unittest discover -s /Users/nathanielford/myrepo/mymodule/src/tests -p test_util.py
    

似乎正在使用的根路径设置为我正在运行的单元测试文件所在的位置:它不使用src 作为路径,因此它找不到要导入的东西。没有明显的地方可以指定这种行为。过去似乎不是这样。

这种情况最近开始发生,在 IntelliJ 更新之后。有可能某些配置变得古怪,需要修复,但我不知道那是什么。也有可能在 IntelliJ 中引入了一些错误,但我也不知道如何识别。我错过了什么?

【问题讨论】:

标签: python intellij-idea intellij-17


【解决方案1】:

遇到同样的问题并通过不将测试文件夹标记为已排除但只是将其移出源来解决它。

所以如果结构是:

src
--->package
--->resources
test

在 IntelliJ src 文件夹中标记为 Sources,将 src/resources 标记为 Resources。

您的测试将在 IDEA 中运行。

由于我是 python 新手,我不确定这是否会影响包装。构建虽然不会导出测试文件夹。

希望对您有所帮助。

【讨论】:

    【解决方案2】:

    我有类似的问题:无法导入手动安装的模块。 我尝试在 Mac 环境参数和 intellij SDK 中添加类路径,但它不起作用。 我的最终解决方案是将模块的类路径添加到运行/调试配置:

    打开运行/调试配置并选择您的单元测试类:

    运行 --> 编辑配置...

    将模块的类路径添加到环境变量中:

    【讨论】:

      猜你喜欢
      • 2020-06-04
      • 2012-08-08
      • 1970-01-01
      • 1970-01-01
      • 2020-04-16
      • 1970-01-01
      • 1970-01-01
      • 2020-06-16
      • 2015-12-10
      相关资源
      最近更新 更多