如何使用Python从测试目录运行所有单元测试? (结构化软件包)

问题描述 投票:0回答:1

我像这样在IntelliJ IDEA(或PyCharm)中设置我的项目:

project_root
  + src
    + business
      - production_code.py (has a random class I want to test)
  + test
    + business
      - test_production_code.py (using unittest module)

我尝试了在网上找到的多个解决方案,但不幸的是,这些解决方案都不允许我在test目录及其子目录中运行all测试,而无需在所有位置添加__init__.py(我想避免这种情况),更改源或更改已配置的目录结构。

请注意,使用pytest实际上允许我find所有测试并运行它们,但是导入失败。似乎无法从src目录中找到test中的所有类/模块-我猜是因为默认情况下src未添加到测试路径中。

还请注意,我的测试可以在IDE上正常运行,但是我注意到IntelliJ似乎以某种方式将src目录添加到了路径,因此这可能就是它起作用的原因。

python unit-testing testing pycharm pytest
1个回答
0
投票

与[[pytest结合pyenvvirtualenv的解决方案:另请参阅:Working With Multiple Environments

((python3.8.0的示例; ${PWD##*/}替换脚本中的project_root

单独

(不是Pycharm)终端中运行这些命令:

$ cd project_root $ pyenv virtualenv 3.8.0 ${PWD##*/} $ pyenv local ${PWD##*/}

在Pycharm中-设置-项目
:将项目解释器设置为

~~ .pyenv / versions / project_root / bin / python3.8

Pycharm]中>

-设置-工具-Python集成工具

设置将默认测试运行程序设置为pytest,然后将按下“修复”按钮“!在选定的解释器中未找到pytest运行程序”消息显示。Pycharm终端会自动调整为创建的本地虚拟环境。

我在Pycharm中将生产代码(例如src)标记为business的子文件夹为

source root],并在这些文件夹中包含

conftest.py

文件。
从Pycharm终端(或从Project_root输入单独的)中输入pytest将在test中运行所有测试,并且将在src子文件夹中找到源,而不必在src子文件夹中添加__init__.py文件。当我使用以下命令创建virtualenv时,此方法不起作用:

$ python3 -m venv venv && . venv/bin/activate

© www.soinside.com 2019 - 2024. All rights reserved.