首页 > 解决方案 > 如何在 Python 多模块的覆盖范围内排除目录

问题描述

我的项目的目录结构如下所示

ProjectRoot
    - Module1
        src/
        tests/
    - Module2
        src/
        tests/
    ...

我想从根目录运行所有测试并计算覆盖率。这是我正在使用的命令

python -m coverage run --branch -m unittest **/tests/test*

在这里,我想排除某些目录。我怎样才能做到这一点?

我尝试了一种方法,在该方法中创建.coveragerc并添加了要排除的模块

...
omit =
    Module2/*
...

并将此文件作为命令提供 python -m coverage run --rcfile=.coveragerc --branch -m unittest **/tests/test*

但它仍然试图拿起 Module2 进行测试。

我错过了什么?

标签: pythonpython-3.xpython-unittestcoverage.py

解决方案


我只是在我的情况下尝试过,最终这会有所帮助,这是我当前的项目(三个模块):

[report]
exclude_lines =
    pragma: no cover

include =
    ../toolbox/*.py
    ../geometry_finder/*.py
    ../position_optimiser/*.py

[html]
directory = c:\tmp\Report

我现在尝试了以下方法:

[report]
exclude_lines =
    pragma: no cover

include =
    ../.

omit = 
    ../toolbox/*.py

[html]
directory = c:\tmp\Report

...我没有看到工具箱的覆盖范围。因此,我无法真正确认。代码开始使用:

coverage run --branch .\unittest_package.py
coverage html

推荐阅读