首页 > 解决方案 > 文件同名时缺少 Python 代码覆盖率

问题描述

我正在使用 pytest 和 pytest-cov 进行代码覆盖。

我的项目如下所示。有两个模块servicesworkers.

python_tmp
├── tests
│   └── some_test.py
├── services
│   └── utils.py
└── workers
    └── utils.py

他们两个都有utils.py里面。但内容不同。

服务/utils.py

def function_1():
    return 1

和工人/utils.py

def function_2():
    return 2

tests/some_test.py您可以找到测试用例。

import pytest
import services.utils as t1
import workers.utils as t2

def test_function_1():
    res = t1.function_1()
    assert res == 1

def test_function_2():
    res = t2.function_2()
    assert res == 2

如果我运行测试python -m pytest -v tests --cov=services --cov=workers --cov-report=xml:coverage.xml,它将生成以下报告。但是您可以看到只有一个utils.py被报告,并且您不知道它属于哪个模块的模棱两可。

...
    <sources>
        <source>/Users/xxxxxxx/workspace/tmp/python_tmp/services</source>
        <source>/Users/xxxxxxx/workspace/tmp/python_tmp/workers</source>
    </sources>
    <packages>
        <package branch-rate="0" complexity="0" line-rate="1" name=".">
            <classes>
                <class branch-rate="0" complexity="0" filename="utils.py" line-rate="1" name="utils.py">
                    <methods/>
                    <lines>
                        <line hits="1" number="1"/>
                        <line hits="1" number="2"/>
                    </lines>
                </class>
            </classes>
        </package>
    </packages>
</coverage>

如何解决?谢谢你的时间!

标签: pythonpytestcode-coverage

解决方案


这里提到了这个问题

因此,要解决此问题,您可以运行python -m pytest -v tests --cov --cov-report=xml:coverage.xml.

希望这会有所帮助。


推荐阅读