我有 Java 背景,所以我将我的单元测试组织成独立的并行测试层次结构,以反射(reflect)我的主要项目的结构。我正在使用 PyCharm 代替 Intellij 或 Eclipse。在这两个 I IDE 中,我可以选择任何被测包,并在此命名空间下递归运行所有单元测试。
测试结构
+ tests
+ billing
+ supplier
+ ClassName_tests.py - file
- TestClassName - class
- test_one() - functions
- test_two() - functions
+ config
...
+ invoicing
...
使用 Python 和/或 PyCharm 可以吗?目前我需要单独运行每个命名空间/模块的测试我是否必须在 PyCharm 或 Python 中定义一些东西。
我已阅读并尝试过此设置,但它会运行所选文件夹中的所有测试,而不是递归地运行。 How to force Pycharm to run all unit tests?
只是在这里发布一个答案,因为我在这上面停留了一段时间......这里的每个其他答案都围绕着这个主题跳舞,但你的案例的解决方案相对简单:
当 Pycharm 在目录中发现测试时,它会将子目录视为用于发现测试的模块。
这意味着如果您希望这些文件夹可被发现,则它们需要包含一个 __init__.py
文件。
换句话说:
你的例子:
+ tests
+ billing
+ supplier
+ ClassName_tests.py - file
+ ... (omitted the rest for brevity)
应该变成:
+ tests
+ billing
- __init__.py
+ supplier
- __init__.py
- ClassName_tests.py - file
+ ...
之后,右键单击“测试”目录并在其中运行所有测试应该运行所有测试,包括子文件夹中的测试,但仅适用于可被视为模块的子文件夹(例如包含 __init__ .py
文件)
我是一名优秀的程序员,十分优秀!