我来自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?
答案 0 :(得分:2)
现在,右键单击“测试”文件夹。应该有一个“运行py.test”(或类似的文件,取决于您选择的测试)选项。就是这样,仅此而已。
(编辑:这在Professional Edition中有效。我无法确认在Community Edition中是否有效)
答案 1 :(得分:2)
这对我有用:
在父目录中创建一个新的Shell脚本。说“ run_tests.sh”。
编写shell代码以在所需的任何地方运行测试(如YuhaoQI所建议)。如果要运行项目中的所有测试:
python -m unittest discover -s ./ -p "test_*.py"
或如果要在一个目录“ tests”中运行所有测试:
python -m unittest discover -s tests -p "test_*.py"
在pycharm配置下拉列表中,单击“编辑配置”,然后添加刚创建的Shell脚本。将配置命名为“所有测试”。
答案 2 :(得分:1)
您可以使用
python -m unittest discover -s project_directory -p "*_test.py"
或
python -m unittest discover project_directory "*_test.py"
unittest document“测试发现”一章中的详细信息
答案 3 :(得分:0)
很遗憾,PyChorm不支持,而IntelliJ支持。因此,我使用了一个相当棘手的解决方法。我创建了一个“ all_tests”文件夹。然后,将所有模块的所有测试文件夹链接到该文件夹中。从这里开始,只需右键单击并运行所有测试即可。
请注意,Windows还支持名为mklink
的符号链接,但是同时支持Windows和Linux并不容易。