我来自Java背景,所以我将我的单元测试组织成独立的并行测试层次结构,反映了我的主项目的结构。我使用PyCharm代替Intellij或Eclipse。在这两个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?
6条答案
按热度按时间bhmjp9jg1#
只是在这里张贴一个答案,因为我被困在这个一段时间...这里的所有其他答案都围绕着这个主题跳舞,但你的情况的解决方案相对简单:
当Pycharm在一个目录中发现测试时,它将子目录视为 * 模块 *,在其中发现测试。
这意味着如果您希望这些文件夹可被发现,则需要包含
__init__.py
文件。换句话说:
您的示例:
字符串
应该变成:
型
之后,右键单击“tests”目录并运行其中的所有测试应该会运行所有测试,包括子文件夹中的测试,但仅限于可视为模块的子文件夹(例如包含
__init__.py
文件)afdcj2ne2#
在PyCharm中,首先设置默认测试运行器
现在右键单击“test”文件夹。应该有一个“runpy.test”(或类似的,取决于您选择的测试)选项。就这样,没什么需要的了。
(EDIT:这在专业版中有效。我不能确认这是否适用于社区版或不)
um6iljoc3#
这就是我的工作:
1.在父目录中创建一个新的shell脚本。说“run_tests. sh”。
1.编写shell代码,在任何你想要的地方运行测试(正如YuhaoQI建议的那样)。如果要运行项目中的所有测试:
字符串
或者如果你想在一个目录“tests”中运行所有的测试:
型
1.在pycharm configurations下拉菜单中点击“Edit Configurations”并添加您刚刚创建的shell脚本。将配置命名为“All tests”。
368yc8dk4#
真的很遗憾,PyChorm不支持这一点,而IntelliJ支持。所以我用了一个相当古怪的方法。我创建了一个“all_tests”文件夹。然后我把我所有模块的所有测试文件夹符号链接到这个文件夹中。从这里它是直接向前的,只需右键单击并运行所有测试。
注意,windows也支持符号链接,它被称为
mklink
,但是要同时支持windows和linux并不容易。vc6uscn95#
Project Structure
。test
文件夹并选择命中。单击窗口顶部栏中的Tests
选项,将其标记为Tests
。现在,您应该可以通过右键单击子文件夹(在tests文件夹中的任何级别)来运行所有测试。
t2a7ltrp6#
您可以使用
字符串
或者是
型
详情请参见unittest document“测试发现”一章