IntelliJ Python单元测试无法导入模块

时间:2017-03-29 23:27:25

标签: python intellij-idea intellij-17

我正在尝试配置IntelliJ Ultimate 2017 IDE来运行Python单元测试。它没有用。

  • 该项目是Gradle项目,大多数模块都是Java / Scala。但是有几个Python模块。
  • 安装了Python插件,并将Python facet添加到相应的模块中。
  • Python解释器设置正常。实际上,IDE可以通过按住Ctrl键单击操作在代码中移动。
  • 项目结构&#39; - &GT; &#39; <mymodule>&#39; - &GT;依赖项包括解释器和<Module source>
  • 每个Python模块都有一个&#39;内容根&#39;。紧接着这是一个src文件夹,其下有一个test文件夹。测试文件夹的内容镜像src文件夹,但文件前面加test_以避免Python名称冲突。
  • 测试配置同时为PYTHONPATH添加源/内容根源&#39;检查选项。指定了解释器。
  • 如果test在模块设置中被标记为测试文件夹,我可以右键单击并运行测试&#39;对于该文件夹中的测试。但是,ImportError会出现,因为它无法在src目录中找到模块。
  • 所有适当的地方都有__init__.py个文件。
  • IntelliJ为您提供正在运行的内容,如果我在命令上运行它,它可以工作,如:

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

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

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

2 个答案:

答案 0 :(得分:1)

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

所以如果结构是:

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

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

您的测试将在IDEA中运行。

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

希望有所帮助。

答案 1 :(得分:0)

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

打开“运行/调试配置”,然后选择您的unittest类:

  

运行->编辑配置...

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