如何解决Travis 上的 Python 子进程覆盖
我看过几篇关于这个主题的文章,但似乎没有一篇适合我。
案例
一个 Python 包,其中包含基于 unittest
、pytest
的测试作为测试运行器和 pytest-cov
等插件以支持 coverage
。本地一切正常,所有测试都执行并通过,计算所有测试的覆盖率,包括使用 subprocess.check_output
的 CLI 测试。
- 项目:github.com/barseghyanartur/valuta
- Travis 生成的覆盖率报告:travis-ci.org/github/barseghyanartur/valuta/jobs/771949032
- 本地生成的覆盖率报告:gist.github.com/barseghyanartur/061a7b88747e3af40c9e862abc0e49bb
问题
不知何故,在 Travis 方面,没有计算 CLI 测试的覆盖率。无论我做什么,无论我在何处和多少次包含 coverage.pth
或 sitecustomize.py
(read more about it here),都不包括 CLI 的覆盖范围。
显而易见的问题
我做错了什么?
解决方法
回顾一下为解决该问题所做的工作(对于可能需要答案的人),问题归咎于我对 tox
的配置。
之前(效果不佳,虽然测试通过)
[testenv]
# Some other config above this line
commands =
pytest
之后(我真正做到了 100% 覆盖)
[testenv]
# Some other config above this line
commands =
coverage erase
pip install -e .
pytest
pip install -e .
显然是这里的关键。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。