coverage.py 不支持相对导入吗?

3 投票
1 回答
678 浏览
提问于 2025-04-18 13:24

我正在收集我这个Django应用的代码覆盖率,发现coverage.py在模块是相对导入的时候,似乎不会收集统计数据。

更详细一点:

我的文件夹结构是这样的:

project
    __init__.py
    apps
        __init__.py
        my_app
            __init__.py
            my_module.py
            tests.py

所以如果我在tests.py里写from .my_module import *,那么coverage.py就不会收集my_module.py的统计数据。不过,如果我写from apps.my_app.my_module import *,那么统计数据就会出现。

我在使用带有coverage插件的django-nose,并且在运行测试时加上了--cover-package=apps.my_app这个标志。

有没有人遇到过这种情况?我不太想每次都写完整的导入路径,除非真的必须这样,所以任何想法都很欢迎。

1 个回答

0

我对django-nose不太了解,不过为了处理一个类似的问题,我在没有使用Django的情况下,安装了pytest和pytest-cov这两个包,然后做了类似下面的操作:

py.test --cov app

这样就能显示测试覆盖率了。

撰写回答