使py.test,coverage和tox一起工作:__ init__.py在tests文件夹中?

 mobiledu2502887287 发布于 2023-02-13 18:31

我有一个奇怪的问题tox,py.test,coveragepytest-cov:当py.test--cov选项是从启动tox,这似乎需要__init__.py的文件tests是不会立即明显的文件夹.

在撰写这篇文章时,我通​​过添加上述内容解决了最初的问题tests/__init__.py,但到目前为止我还没有完全理解为什么它确实有效或无效,所以我仍然在寻求帮助.请参阅下面的详细信息.

我在SO上找到了一个相关的问题,但它只会让它更加混乱,因为答案似乎与我到目前为止所得到的相反: `py.test`和`__init __.py`文件

另请参阅此处的官方文档:py.test - 良好的集成实践(页面底部).


简化的项目结构:

setup.py
tox.ini
.coveragerc
project/
    __init__.py
    module1.py
    module2.py
    tests/
        __init__.py (optional, an empty file)
        test_module1.py
        test_module2.py

相关部分tox.ini:

[testenv:check]
commands = py.test --cov=project --cov-report=term
deps =
    pytest
    coverage
    pytest-cov

[pytest]
python_files = test_*.py
norecursedirs = .tox

相关部分.coveragerc:

[run]
branch = True
omit = project/tests/*

现在,结果如下:

py.test --cov=project --cov-report=term从项目root =>正确覆盖运行tests/__init__.py文件是否存在.

tox -e check没有tests/__init__.py=>测试被发现并运行,但我收到警告"Coverage.py警告:没有收集数据." 并且所有模块的覆盖率均为0%

tox -e checkwith tests/__init__.py=>再次正确覆盖.

对于我来说,为什么tests/__init__.py文件必须存在(添加此空文件解决了初始问题)并不是很明显tox,但是当您手动运行测试/覆盖时无关紧要.有任何想法吗?

谢谢.

1 个回答
  • --cov {envsitepackagesdir}/<your-package-name>在tox.ini中使用.

    2023-02-13 18:34 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有