python - 如何让 Pycharm 从测试文件夹递归运行所有 python 单元测试

标签 python unit-testing pycharm

我有 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 文件)

关于python - 如何让 Pycharm 从测试文件夹递归运行所有 python 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53666197/

相关文章:

python - 值错误: operands could not be broadcast together with shapes (10) (11)

python - 在模拟中修补生成器

python - PyCharm Idea 中的 Jenkinsfile 语法高亮显示

python - PyTest conftest.py 错误地显示了 PyCharm 中的目录 os.getcwd()

python - 在 GAE 数据存储中对多个选择进行建模

python - 如何通过 executemany() 语句转换 pandas 数据框以进行插入?

javascript - 测试 Jasmine 中自定义事件的处理

python - Pycharm 自动相关导入

python - 'utf- 8' codec can' t 解码位置 14 : invalid start byte 中的字节 0x97

unit-testing - 单元测试能否成功添加到现有的生产项目中?如果是这样,如何以及是否值得?