Mar*_*sle 8 python unit-testing pycharm
我来自 Java 背景,所以我将我的单元测试组织成独立的并行测试层次结构,以反映我的主项目的结构。我使用 PyCharm 代替 Intellij 或 Eclipse。在这两个 I IDE 中,我可以选择任何被测包并在此命名空间下递归运行所有单元测试。
测试结构
+ tests
+ billing
+ supplier
+ ClassName_tests.py - file
- TestClassName - class
- test_one() - functions
- test_two() - functions
+ config
...
+ invoicing
...
Run Code Online (Sandbox Code Playgroud)
这可以用 Python 和/或 PyCharm 实现吗?目前我需要单独运行每个命名空间/模块的测试我是否必须在 PyCharm 或 Python 中定义一些东西。
我已经阅读并尝试了这个设置,但它运行了所选文件夹中的所有测试,而不是递归的。 如何强制 Pycharm 运行所有单元测试?
只是在这里发布一个答案,因为我被困在这个问题上有一段时间了......这里的所有其他答案都围绕着这个主题跳舞,但你的案例的解决方案相对简单:
当 Pycharm 在目录中发现测试时,它将子目录视为在其中发现测试的模块。
__init__.py这意味着如果您希望这些文件夹可供发现,则需要包含一个文件。
换句话说:
你的例子:
+ tests
+ billing
+ supplier
+ ClassName_tests.py - file
+ ... (omitted the rest for brevity)
Run Code Online (Sandbox Code Playgroud)
应该变成:
+ tests
+ billing
- __init__.py
+ supplier
- __init__.py
- ClassName_tests.py - file
+ ...
Run Code Online (Sandbox Code Playgroud)
之后,右键单击“tests”目录并运行其中的所有测试应该运行所有测试,包括子文件夹中的测试,但仅限于可以视为模块的子文件夹(例如包含文件__init__.py)
小智 -3
您可以使用
\n\npython -m unittest discover -s project_directory -p "*_test.py"\nRun Code Online (Sandbox Code Playgroud)\n\n或者
\n\npython -m unittest discover project_directory "*_test.py"\nRun Code Online (Sandbox Code Playgroud)\n\n详细信息参见单元测试文档\xe2\x80\x9cTest Discovery\xe2\x80\x9d章节
\n| 归档时间: |
|
| 查看次数: |
3256 次 |
| 最近记录: |